diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2019-08-20 18:01:01 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2019-08-20 18:01:01 +0000 |
| commit | b7332b04df5d50c92640c74cfeb138ecb7e3f7ae (patch) | |
| tree | b1b49faa0cab1482905e0cda6f0ee5d97e3fe08f /test/std/strings/basic.string/string.ops/string_compare | |
| parent | 6012fe9abb1f01b1b5b4ca908464804c21ff8602 (diff) | |
Notes
Diffstat (limited to 'test/std/strings/basic.string/string.ops/string_compare')
9 files changed, 0 insertions, 14679 deletions
diff --git a/test/std/strings/basic.string/string.ops/string_compare/pointer.pass.cpp b/test/std/strings/basic.string/string.ops/string_compare/pointer.pass.cpp deleted file mode 100644 index 150973a7f4e4..000000000000 --- a/test/std/strings/basic.string/string.ops/string_compare/pointer.pass.cpp +++ /dev/null @@ -1,77 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// <string> - -// int compare(const charT *s) const; - -#include <string> -#include <cassert> - -#include "min_allocator.h" - -int sign(int x) -{ - if (x == 0) - return 0; - if (x < 0) - return -1; - return 1; -} - -template <class S> -void -test(const S& s, const typename S::value_type* str, int x) -{ - assert(sign(s.compare(str)) == sign(x)); -} - -int main() -{ - { - typedef std::string S; - test(S(""), "", 0); - test(S(""), "abcde", -5); - test(S(""), "abcdefghij", -10); - test(S(""), "abcdefghijklmnopqrst", -20); - test(S("abcde"), "", 5); - test(S("abcde"), "abcde", 0); - test(S("abcde"), "abcdefghij", -5); - test(S("abcde"), "abcdefghijklmnopqrst", -15); - test(S("abcdefghij"), "", 10); - test(S("abcdefghij"), "abcde", 5); - test(S("abcdefghij"), "abcdefghij", 0); - test(S("abcdefghij"), "abcdefghijklmnopqrst", -10); - test(S("abcdefghijklmnopqrst"), "", 20); - test(S("abcdefghijklmnopqrst"), "abcde", 15); - test(S("abcdefghijklmnopqrst"), "abcdefghij", 10); - test(S("abcdefghijklmnopqrst"), "abcdefghijklmnopqrst", 0); - } -#if TEST_STD_VER >= 11 - { - typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S; - test(S(""), "", 0); - test(S(""), "abcde", -5); - test(S(""), "abcdefghij", -10); - test(S(""), "abcdefghijklmnopqrst", -20); - test(S("abcde"), "", 5); - test(S("abcde"), "abcde", 0); - test(S("abcde"), "abcdefghij", -5); - test(S("abcde"), "abcdefghijklmnopqrst", -15); - test(S("abcdefghij"), "", 10); - test(S("abcdefghij"), "abcde", 5); - test(S("abcdefghij"), "abcdefghij", 0); - test(S("abcdefghij"), "abcdefghijklmnopqrst", -10); - test(S("abcdefghijklmnopqrst"), "", 20); - test(S("abcdefghijklmnopqrst"), "abcde", 15); - test(S("abcdefghijklmnopqrst"), "abcdefghij", 10); - test(S("abcdefghijklmnopqrst"), "abcdefghijklmnopqrst", 0); - } -#endif -} diff --git a/test/std/strings/basic.string/string.ops/string_compare/size_size_T_size_size.pass.cpp b/test/std/strings/basic.string/string.ops/string_compare/size_size_T_size_size.pass.cpp deleted file mode 100644 index 94f7890ddfdb..000000000000 --- a/test/std/strings/basic.string/string.ops/string_compare/size_size_T_size_size.pass.cpp +++ /dev/null @@ -1,5993 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// <string> - -// template <typename T> -// int compare(size_type pos1, size_type n1, const T& t, -// size_type pos2, size_type n2=npos) const; -// -// Mostly we're testing string_view here - -#include <string> -#include <stdexcept> -#include <cassert> - -#include "min_allocator.h" - -#include "test_macros.h" - -int sign(int x) -{ - if (x == 0) - return 0; - if (x < 0) - return -1; - return 1; -} - -template <class S, class SV> -void -test(const S& s, typename S::size_type pos1, typename S::size_type n1, - SV sv, typename S::size_type pos2, typename S::size_type n2, int x) -{ - static_assert((!std::is_same<S, SV>::value), ""); - if (pos1 <= s.size() && pos2 <= sv.size()) - assert(sign(s.compare(pos1, n1, sv, pos2, n2)) == sign(x)); -#ifndef TEST_HAS_NO_EXCEPTIONS - else - { - try - { - TEST_IGNORE_NODISCARD s.compare(pos1, n1, sv, pos2, n2); - assert(false); - } - catch (const std::out_of_range&) - { - assert(pos1 > s.size() || pos2 > sv.size()); - } - } -#endif -} - -template <class S, class SV> -void -test_npos(const S& s, typename S::size_type pos1, typename S::size_type n1, - SV sv, typename S::size_type pos2, int x) -{ - static_assert((!std::is_same<S, SV>::value), ""); - if (pos1 <= s.size() && pos2 <= sv.size()) - assert(sign(s.compare(pos1, n1, sv, pos2)) == sign(x)); -#ifndef TEST_HAS_NO_EXCEPTIONS - else - { - try - { - TEST_IGNORE_NODISCARD s.compare(pos1, n1, sv, pos2); - assert(false); - } - catch (const std::out_of_range&) - { - assert(pos1 > s.size() || pos2 > sv.size()); - } - } -#endif -} - -template <class S, class SV> -void test0() -{ - test(S(""), 0, 0, SV(""), 0, 0, 0); - test(S(""), 0, 0, SV(""), 0, 1, 0); - test(S(""), 0, 0, SV(""), 1, 0, 0); - test(S(""), 0, 0, SV("abcde"), 0, 0, 0); - test(S(""), 0, 0, SV("abcde"), 0, 1, -1); - test(S(""), 0, 0, SV("abcde"), 0, 2, -2); - test(S(""), 0, 0, SV("abcde"), 0, 4, -4); - test(S(""), 0, 0, SV("abcde"), 0, 5, -5); - test(S(""), 0, 0, SV("abcde"), 0, 6, -5); - test(S(""), 0, 0, SV("abcde"), 1, 0, 0); - test(S(""), 0, 0, SV("abcde"), 1, 1, -1); - test(S(""), 0, 0, SV("abcde"), 1, 2, -2); - test(S(""), 0, 0, SV("abcde"), 1, 3, -3); - test(S(""), 0, 0, SV("abcde"), 1, 4, -4); - test(S(""), 0, 0, SV("abcde"), 1, 5, -4); - test(S(""), 0, 0, SV("abcde"), 2, 0, 0); - test(S(""), 0, 0, SV("abcde"), 2, 1, -1); - test(S(""), 0, 0, SV("abcde"), 2, 2, -2); - test(S(""), 0, 0, SV("abcde"), 2, 3, -3); - test(S(""), 0, 0, SV("abcde"), 2, 4, -3); - test(S(""), 0, 0, SV("abcde"), 4, 0, 0); - test(S(""), 0, 0, SV("abcde"), 4, 1, -1); - test(S(""), 0, 0, SV("abcde"), 4, 2, -1); - test(S(""), 0, 0, SV("abcde"), 5, 0, 0); - test(S(""), 0, 0, SV("abcde"), 5, 1, 0); - test(S(""), 0, 0, SV("abcde"), 6, 0, 0); - test(S(""), 0, 0, SV("abcdefghij"), 0, 0, 0); - test(S(""), 0, 0, SV("abcdefghij"), 0, 1, -1); - test(S(""), 0, 0, SV("abcdefghij"), 0, 5, -5); - test(S(""), 0, 0, SV("abcdefghij"), 0, 9, -9); - test(S(""), 0, 0, SV("abcdefghij"), 0, 10, -10); - test(S(""), 0, 0, SV("abcdefghij"), 0, 11, -10); - test(S(""), 0, 0, SV("abcdefghij"), 1, 0, 0); - test(S(""), 0, 0, SV("abcdefghij"), 1, 1, -1); - test(S(""), 0, 0, SV("abcdefghij"), 1, 4, -4); - test(S(""), 0, 0, SV("abcdefghij"), 1, 8, -8); - test(S(""), 0, 0, SV("abcdefghij"), 1, 9, -9); - test(S(""), 0, 0, SV("abcdefghij"), 1, 10, -9); - test(S(""), 0, 0, SV("abcdefghij"), 5, 0, 0); - test(S(""), 0, 0, SV("abcdefghij"), 5, 1, -1); - test(S(""), 0, 0, SV("abcdefghij"), 5, 2, -2); - test(S(""), 0, 0, SV("abcdefghij"), 5, 4, -4); - test(S(""), 0, 0, SV("abcdefghij"), 5, 5, -5); - test(S(""), 0, 0, SV("abcdefghij"), 5, 6, -5); - test(S(""), 0, 0, SV("abcdefghij"), 9, 0, 0); - test(S(""), 0, 0, SV("abcdefghij"), 9, 1, -1); - test(S(""), 0, 0, SV("abcdefghij"), 9, 2, -1); - test(S(""), 0, 0, SV("abcdefghij"), 10, 0, 0); - test(S(""), 0, 0, SV("abcdefghij"), 10, 1, 0); - test(S(""), 0, 0, SV("abcdefghij"), 11, 0, 0); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S(""), 0, 1, SV(""), 0, 0, 0); - test(S(""), 0, 1, SV(""), 0, 1, 0); - test(S(""), 0, 1, SV(""), 1, 0, 0); - test(S(""), 0, 1, SV("abcde"), 0, 0, 0); - test(S(""), 0, 1, SV("abcde"), 0, 1, -1); - test(S(""), 0, 1, SV("abcde"), 0, 2, -2); - test(S(""), 0, 1, SV("abcde"), 0, 4, -4); - test(S(""), 0, 1, SV("abcde"), 0, 5, -5); - test(S(""), 0, 1, SV("abcde"), 0, 6, -5); - test(S(""), 0, 1, SV("abcde"), 1, 0, 0); - test(S(""), 0, 1, SV("abcde"), 1, 1, -1); - test(S(""), 0, 1, SV("abcde"), 1, 2, -2); - test(S(""), 0, 1, SV("abcde"), 1, 3, -3); - test(S(""), 0, 1, SV("abcde"), 1, 4, -4); - test(S(""), 0, 1, SV("abcde"), 1, 5, -4); - test(S(""), 0, 1, SV("abcde"), 2, 0, 0); - test(S(""), 0, 1, SV("abcde"), 2, 1, -1); - test(S(""), 0, 1, SV("abcde"), 2, 2, -2); - test(S(""), 0, 1, SV("abcde"), 2, 3, -3); - test(S(""), 0, 1, SV("abcde"), 2, 4, -3); - test(S(""), 0, 1, SV("abcde"), 4, 0, 0); - test(S(""), 0, 1, SV("abcde"), 4, 1, -1); - test(S(""), 0, 1, SV("abcde"), 4, 2, -1); - test(S(""), 0, 1, SV("abcde"), 5, 0, 0); - test(S(""), 0, 1, SV("abcde"), 5, 1, 0); - test(S(""), 0, 1, SV("abcde"), 6, 0, 0); -} - -template <class S, class SV> -void test1() -{ - test(S(""), 0, 1, SV("abcdefghij"), 0, 0, 0); - test(S(""), 0, 1, SV("abcdefghij"), 0, 1, -1); - test(S(""), 0, 1, SV("abcdefghij"), 0, 5, -5); - test(S(""), 0, 1, SV("abcdefghij"), 0, 9, -9); - test(S(""), 0, 1, SV("abcdefghij"), 0, 10, -10); - test(S(""), 0, 1, SV("abcdefghij"), 0, 11, -10); - test(S(""), 0, 1, SV("abcdefghij"), 1, 0, 0); - test(S(""), 0, 1, SV("abcdefghij"), 1, 1, -1); - test(S(""), 0, 1, SV("abcdefghij"), 1, 4, -4); - test(S(""), 0, 1, SV("abcdefghij"), 1, 8, -8); - test(S(""), 0, 1, SV("abcdefghij"), 1, 9, -9); - test(S(""), 0, 1, SV("abcdefghij"), 1, 10, -9); - test(S(""), 0, 1, SV("abcdefghij"), 5, 0, 0); - test(S(""), 0, 1, SV("abcdefghij"), 5, 1, -1); - test(S(""), 0, 1, SV("abcdefghij"), 5, 2, -2); - test(S(""), 0, 1, SV("abcdefghij"), 5, 4, -4); - test(S(""), 0, 1, SV("abcdefghij"), 5, 5, -5); - test(S(""), 0, 1, SV("abcdefghij"), 5, 6, -5); - test(S(""), 0, 1, SV("abcdefghij"), 9, 0, 0); - test(S(""), 0, 1, SV("abcdefghij"), 9, 1, -1); - test(S(""), 0, 1, SV("abcdefghij"), 9, 2, -1); - test(S(""), 0, 1, SV("abcdefghij"), 10, 0, 0); - test(S(""), 0, 1, SV("abcdefghij"), 10, 1, 0); - test(S(""), 0, 1, SV("abcdefghij"), 11, 0, 0); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S(""), 1, 0, SV(""), 0, 0, 0); - test(S(""), 1, 0, SV(""), 0, 1, 0); - test(S(""), 1, 0, SV(""), 1, 0, 0); - test(S(""), 1, 0, SV("abcde"), 0, 0, 0); - test(S(""), 1, 0, SV("abcde"), 0, 1, 0); - test(S(""), 1, 0, SV("abcde"), 0, 2, 0); - test(S(""), 1, 0, SV("abcde"), 0, 4, 0); - test(S(""), 1, 0, SV("abcde"), 0, 5, 0); - test(S(""), 1, 0, SV("abcde"), 0, 6, 0); - test(S(""), 1, 0, SV("abcde"), 1, 0, 0); - test(S(""), 1, 0, SV("abcde"), 1, 1, 0); - test(S(""), 1, 0, SV("abcde"), 1, 2, 0); - test(S(""), 1, 0, SV("abcde"), 1, 3, 0); - test(S(""), 1, 0, SV("abcde"), 1, 4, 0); - test(S(""), 1, 0, SV("abcde"), 1, 5, 0); - test(S(""), 1, 0, SV("abcde"), 2, 0, 0); - test(S(""), 1, 0, SV("abcde"), 2, 1, 0); - test(S(""), 1, 0, SV("abcde"), 2, 2, 0); - test(S(""), 1, 0, SV("abcde"), 2, 3, 0); - test(S(""), 1, 0, SV("abcde"), 2, 4, 0); - test(S(""), 1, 0, SV("abcde"), 4, 0, 0); - test(S(""), 1, 0, SV("abcde"), 4, 1, 0); - test(S(""), 1, 0, SV("abcde"), 4, 2, 0); - test(S(""), 1, 0, SV("abcde"), 5, 0, 0); - test(S(""), 1, 0, SV("abcde"), 5, 1, 0); - test(S(""), 1, 0, SV("abcde"), 6, 0, 0); - test(S(""), 1, 0, SV("abcdefghij"), 0, 0, 0); - test(S(""), 1, 0, SV("abcdefghij"), 0, 1, 0); - test(S(""), 1, 0, SV("abcdefghij"), 0, 5, 0); - test(S(""), 1, 0, SV("abcdefghij"), 0, 9, 0); - test(S(""), 1, 0, SV("abcdefghij"), 0, 10, 0); - test(S(""), 1, 0, SV("abcdefghij"), 0, 11, 0); - test(S(""), 1, 0, SV("abcdefghij"), 1, 0, 0); - test(S(""), 1, 0, SV("abcdefghij"), 1, 1, 0); - test(S(""), 1, 0, SV("abcdefghij"), 1, 4, 0); - test(S(""), 1, 0, SV("abcdefghij"), 1, 8, 0); - test(S(""), 1, 0, SV("abcdefghij"), 1, 9, 0); - test(S(""), 1, 0, SV("abcdefghij"), 1, 10, 0); - test(S(""), 1, 0, SV("abcdefghij"), 5, 0, 0); - test(S(""), 1, 0, SV("abcdefghij"), 5, 1, 0); - test(S(""), 1, 0, SV("abcdefghij"), 5, 2, 0); - test(S(""), 1, 0, SV("abcdefghij"), 5, 4, 0); - test(S(""), 1, 0, SV("abcdefghij"), 5, 5, 0); - test(S(""), 1, 0, SV("abcdefghij"), 5, 6, 0); - test(S(""), 1, 0, SV("abcdefghij"), 9, 0, 0); - test(S(""), 1, 0, SV("abcdefghij"), 9, 1, 0); - test(S(""), 1, 0, SV("abcdefghij"), 9, 2, 0); - test(S(""), 1, 0, SV("abcdefghij"), 10, 0, 0); - test(S(""), 1, 0, SV("abcdefghij"), 10, 1, 0); - test(S(""), 1, 0, SV("abcdefghij"), 11, 0, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 0, 1, 0); -} - -template <class S, class SV> -void test2() -{ - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 0, 10, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 0, 19, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 0, 20, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 0, 21, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 1, 1, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 1, 9, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 1, 18, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 1, 19, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 1, 20, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 10, 1, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 10, 5, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 10, 9, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 10, 10, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 10, 11, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 19, 1, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 19, 2, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 0, 0, SV(""), 0, 0, 0); - test(S("abcde"), 0, 0, SV(""), 0, 1, 0); - test(S("abcde"), 0, 0, SV(""), 1, 0, 0); - test(S("abcde"), 0, 0, SV("abcde"), 0, 0, 0); - test(S("abcde"), 0, 0, SV("abcde"), 0, 1, -1); - test(S("abcde"), 0, 0, SV("abcde"), 0, 2, -2); - test(S("abcde"), 0, 0, SV("abcde"), 0, 4, -4); - test(S("abcde"), 0, 0, SV("abcde"), 0, 5, -5); - test(S("abcde"), 0, 0, SV("abcde"), 0, 6, -5); - test(S("abcde"), 0, 0, SV("abcde"), 1, 0, 0); - test(S("abcde"), 0, 0, SV("abcde"), 1, 1, -1); - test(S("abcde"), 0, 0, SV("abcde"), 1, 2, -2); - test(S("abcde"), 0, 0, SV("abcde"), 1, 3, -3); - test(S("abcde"), 0, 0, SV("abcde"), 1, 4, -4); - test(S("abcde"), 0, 0, SV("abcde"), 1, 5, -4); - test(S("abcde"), 0, 0, SV("abcde"), 2, 0, 0); - test(S("abcde"), 0, 0, SV("abcde"), 2, 1, -1); - test(S("abcde"), 0, 0, SV("abcde"), 2, 2, -2); - test(S("abcde"), 0, 0, SV("abcde"), 2, 3, -3); - test(S("abcde"), 0, 0, SV("abcde"), 2, 4, -3); - test(S("abcde"), 0, 0, SV("abcde"), 4, 0, 0); - test(S("abcde"), 0, 0, SV("abcde"), 4, 1, -1); - test(S("abcde"), 0, 0, SV("abcde"), 4, 2, -1); - test(S("abcde"), 0, 0, SV("abcde"), 5, 0, 0); - test(S("abcde"), 0, 0, SV("abcde"), 5, 1, 0); - test(S("abcde"), 0, 0, SV("abcde"), 6, 0, 0); - test(S("abcde"), 0, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcde"), 0, 0, SV("abcdefghij"), 0, 1, -1); - test(S("abcde"), 0, 0, SV("abcdefghij"), 0, 5, -5); - test(S("abcde"), 0, 0, SV("abcdefghij"), 0, 9, -9); - test(S("abcde"), 0, 0, SV("abcdefghij"), 0, 10, -10); - test(S("abcde"), 0, 0, SV("abcdefghij"), 0, 11, -10); - test(S("abcde"), 0, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcde"), 0, 0, SV("abcdefghij"), 1, 1, -1); - test(S("abcde"), 0, 0, SV("abcdefghij"), 1, 4, -4); - test(S("abcde"), 0, 0, SV("abcdefghij"), 1, 8, -8); - test(S("abcde"), 0, 0, SV("abcdefghij"), 1, 9, -9); - test(S("abcde"), 0, 0, SV("abcdefghij"), 1, 10, -9); - test(S("abcde"), 0, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcde"), 0, 0, SV("abcdefghij"), 5, 1, -1); - test(S("abcde"), 0, 0, SV("abcdefghij"), 5, 2, -2); - test(S("abcde"), 0, 0, SV("abcdefghij"), 5, 4, -4); - test(S("abcde"), 0, 0, SV("abcdefghij"), 5, 5, -5); - test(S("abcde"), 0, 0, SV("abcdefghij"), 5, 6, -5); - test(S("abcde"), 0, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcde"), 0, 0, SV("abcdefghij"), 9, 1, -1); - test(S("abcde"), 0, 0, SV("abcdefghij"), 9, 2, -1); - test(S("abcde"), 0, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcde"), 0, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcde"), 0, 0, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 0, 1, SV(""), 0, 0, 1); - test(S("abcde"), 0, 1, SV(""), 0, 1, 1); - test(S("abcde"), 0, 1, SV(""), 1, 0, 0); - test(S("abcde"), 0, 1, SV("abcde"), 0, 0, 1); -} - -template <class S, class SV> -void test3() -{ - test(S("abcde"), 0, 1, SV("abcde"), 0, 1, 0); - test(S("abcde"), 0, 1, SV("abcde"), 0, 2, -1); - test(S("abcde"), 0, 1, SV("abcde"), 0, 4, -3); - test(S("abcde"), 0, 1, SV("abcde"), 0, 5, -4); - test(S("abcde"), 0, 1, SV("abcde"), 0, 6, -4); - test(S("abcde"), 0, 1, SV("abcde"), 1, 0, 1); - test(S("abcde"), 0, 1, SV("abcde"), 1, 1, -1); - test(S("abcde"), 0, 1, SV("abcde"), 1, 2, -1); - test(S("abcde"), 0, 1, SV("abcde"), 1, 3, -1); - test(S("abcde"), 0, 1, SV("abcde"), 1, 4, -1); - test(S("abcde"), 0, 1, SV("abcde"), 1, 5, -1); - test(S("abcde"), 0, 1, SV("abcde"), 2, 0, 1); - test(S("abcde"), 0, 1, SV("abcde"), 2, 1, -2); - test(S("abcde"), 0, 1, SV("abcde"), 2, 2, -2); - test(S("abcde"), 0, 1, SV("abcde"), 2, 3, -2); - test(S("abcde"), 0, 1, SV("abcde"), 2, 4, -2); - test(S("abcde"), 0, 1, SV("abcde"), 4, 0, 1); - test(S("abcde"), 0, 1, SV("abcde"), 4, 1, -4); - test(S("abcde"), 0, 1, SV("abcde"), 4, 2, -4); - test(S("abcde"), 0, 1, SV("abcde"), 5, 0, 1); - test(S("abcde"), 0, 1, SV("abcde"), 5, 1, 1); - test(S("abcde"), 0, 1, SV("abcde"), 6, 0, 0); - test(S("abcde"), 0, 1, SV("abcdefghij"), 0, 0, 1); - test(S("abcde"), 0, 1, SV("abcdefghij"), 0, 1, 0); - test(S("abcde"), 0, 1, SV("abcdefghij"), 0, 5, -4); - test(S("abcde"), 0, 1, SV("abcdefghij"), 0, 9, -8); - test(S("abcde"), 0, 1, SV("abcdefghij"), 0, 10, -9); - test(S("abcde"), 0, 1, SV("abcdefghij"), 0, 11, -9); - test(S("abcde"), 0, 1, SV("abcdefghij"), 1, 0, 1); - test(S("abcde"), 0, 1, SV("abcdefghij"), 1, 1, -1); - test(S("abcde"), 0, 1, SV("abcdefghij"), 1, 4, -1); - test(S("abcde"), 0, 1, SV("abcdefghij"), 1, 8, -1); - test(S("abcde"), 0, 1, SV("abcdefghij"), 1, 9, -1); - test(S("abcde"), 0, 1, SV("abcdefghij"), 1, 10, -1); - test(S("abcde"), 0, 1, SV("abcdefghij"), 5, 0, 1); - test(S("abcde"), 0, 1, SV("abcdefghij"), 5, 1, -5); - test(S("abcde"), 0, 1, SV("abcdefghij"), 5, 2, -5); - test(S("abcde"), 0, 1, SV("abcdefghij"), 5, 4, -5); - test(S("abcde"), 0, 1, SV("abcdefghij"), 5, 5, -5); - test(S("abcde"), 0, 1, SV("abcdefghij"), 5, 6, -5); - test(S("abcde"), 0, 1, SV("abcdefghij"), 9, 0, 1); - test(S("abcde"), 0, 1, SV("abcdefghij"), 9, 1, -9); - test(S("abcde"), 0, 1, SV("abcdefghij"), 9, 2, -9); - test(S("abcde"), 0, 1, SV("abcdefghij"), 10, 0, 1); - test(S("abcde"), 0, 1, SV("abcdefghij"), 10, 1, 1); - test(S("abcde"), 0, 1, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 1, 0); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 10, -9); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 19, -18); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 20, -19); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 21, -19); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 0, 2, SV(""), 0, 0, 2); - test(S("abcde"), 0, 2, SV(""), 0, 1, 2); - test(S("abcde"), 0, 2, SV(""), 1, 0, 0); - test(S("abcde"), 0, 2, SV("abcde"), 0, 0, 2); - test(S("abcde"), 0, 2, SV("abcde"), 0, 1, 1); - test(S("abcde"), 0, 2, SV("abcde"), 0, 2, 0); - test(S("abcde"), 0, 2, SV("abcde"), 0, 4, -2); - test(S("abcde"), 0, 2, SV("abcde"), 0, 5, -3); - test(S("abcde"), 0, 2, SV("abcde"), 0, 6, -3); - test(S("abcde"), 0, 2, SV("abcde"), 1, 0, 2); - test(S("abcde"), 0, 2, SV("abcde"), 1, 1, -1); - test(S("abcde"), 0, 2, SV("abcde"), 1, 2, -1); - test(S("abcde"), 0, 2, SV("abcde"), 1, 3, -1); - test(S("abcde"), 0, 2, SV("abcde"), 1, 4, -1); - test(S("abcde"), 0, 2, SV("abcde"), 1, 5, -1); - test(S("abcde"), 0, 2, SV("abcde"), 2, 0, 2); - test(S("abcde"), 0, 2, SV("abcde"), 2, 1, -2); - test(S("abcde"), 0, 2, SV("abcde"), 2, 2, -2); - test(S("abcde"), 0, 2, SV("abcde"), 2, 3, -2); - test(S("abcde"), 0, 2, SV("abcde"), 2, 4, -2); - test(S("abcde"), 0, 2, SV("abcde"), 4, 0, 2); - test(S("abcde"), 0, 2, SV("abcde"), 4, 1, -4); - test(S("abcde"), 0, 2, SV("abcde"), 4, 2, -4); - test(S("abcde"), 0, 2, SV("abcde"), 5, 0, 2); - test(S("abcde"), 0, 2, SV("abcde"), 5, 1, 2); - test(S("abcde"), 0, 2, SV("abcde"), 6, 0, 0); - test(S("abcde"), 0, 2, SV("abcdefghij"), 0, 0, 2); - test(S("abcde"), 0, 2, SV("abcdefghij"), 0, 1, 1); - test(S("abcde"), 0, 2, SV("abcdefghij"), 0, 5, -3); - test(S("abcde"), 0, 2, SV("abcdefghij"), 0, 9, -7); -} - -template <class S, class SV> -void test4() -{ - test(S("abcde"), 0, 2, SV("abcdefghij"), 0, 10, -8); - test(S("abcde"), 0, 2, SV("abcdefghij"), 0, 11, -8); - test(S("abcde"), 0, 2, SV("abcdefghij"), 1, 0, 2); - test(S("abcde"), 0, 2, SV("abcdefghij"), 1, 1, -1); - test(S("abcde"), 0, 2, SV("abcdefghij"), 1, 4, -1); - test(S("abcde"), 0, 2, SV("abcdefghij"), 1, 8, -1); - test(S("abcde"), 0, 2, SV("abcdefghij"), 1, 9, -1); - test(S("abcde"), 0, 2, SV("abcdefghij"), 1, 10, -1); - test(S("abcde"), 0, 2, SV("abcdefghij"), 5, 0, 2); - test(S("abcde"), 0, 2, SV("abcdefghij"), 5, 1, -5); - test(S("abcde"), 0, 2, SV("abcdefghij"), 5, 2, -5); - test(S("abcde"), 0, 2, SV("abcdefghij"), 5, 4, -5); - test(S("abcde"), 0, 2, SV("abcdefghij"), 5, 5, -5); - test(S("abcde"), 0, 2, SV("abcdefghij"), 5, 6, -5); - test(S("abcde"), 0, 2, SV("abcdefghij"), 9, 0, 2); - test(S("abcde"), 0, 2, SV("abcdefghij"), 9, 1, -9); - test(S("abcde"), 0, 2, SV("abcdefghij"), 9, 2, -9); - test(S("abcde"), 0, 2, SV("abcdefghij"), 10, 0, 2); - test(S("abcde"), 0, 2, SV("abcdefghij"), 10, 1, 2); - test(S("abcde"), 0, 2, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 0, 0, 2); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 0, 10, -8); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 0, 19, -17); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 0, 20, -18); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 0, 21, -18); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 1, 0, 2); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 10, 0, 2); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 19, 0, 2); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 20, 0, 2); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 20, 1, 2); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 0, 4, SV(""), 0, 0, 4); - test(S("abcde"), 0, 4, SV(""), 0, 1, 4); - test(S("abcde"), 0, 4, SV(""), 1, 0, 0); - test(S("abcde"), 0, 4, SV("abcde"), 0, 0, 4); - test(S("abcde"), 0, 4, SV("abcde"), 0, 1, 3); - test(S("abcde"), 0, 4, SV("abcde"), 0, 2, 2); - test(S("abcde"), 0, 4, SV("abcde"), 0, 4, 0); - test(S("abcde"), 0, 4, SV("abcde"), 0, 5, -1); - test(S("abcde"), 0, 4, SV("abcde"), 0, 6, -1); - test(S("abcde"), 0, 4, SV("abcde"), 1, 0, 4); - test(S("abcde"), 0, 4, SV("abcde"), 1, 1, -1); - test(S("abcde"), 0, 4, SV("abcde"), 1, 2, -1); - test(S("abcde"), 0, 4, SV("abcde"), 1, 3, -1); - test(S("abcde"), 0, 4, SV("abcde"), 1, 4, -1); - test(S("abcde"), 0, 4, SV("abcde"), 1, 5, -1); - test(S("abcde"), 0, 4, SV("abcde"), 2, 0, 4); - test(S("abcde"), 0, 4, SV("abcde"), 2, 1, -2); - test(S("abcde"), 0, 4, SV("abcde"), 2, 2, -2); - test(S("abcde"), 0, 4, SV("abcde"), 2, 3, -2); - test(S("abcde"), 0, 4, SV("abcde"), 2, 4, -2); - test(S("abcde"), 0, 4, SV("abcde"), 4, 0, 4); - test(S("abcde"), 0, 4, SV("abcde"), 4, 1, -4); - test(S("abcde"), 0, 4, SV("abcde"), 4, 2, -4); - test(S("abcde"), 0, 4, SV("abcde"), 5, 0, 4); - test(S("abcde"), 0, 4, SV("abcde"), 5, 1, 4); - test(S("abcde"), 0, 4, SV("abcde"), 6, 0, 0); - test(S("abcde"), 0, 4, SV("abcdefghij"), 0, 0, 4); - test(S("abcde"), 0, 4, SV("abcdefghij"), 0, 1, 3); - test(S("abcde"), 0, 4, SV("abcdefghij"), 0, 5, -1); - test(S("abcde"), 0, 4, SV("abcdefghij"), 0, 9, -5); - test(S("abcde"), 0, 4, SV("abcdefghij"), 0, 10, -6); - test(S("abcde"), 0, 4, SV("abcdefghij"), 0, 11, -6); - test(S("abcde"), 0, 4, SV("abcdefghij"), 1, 0, 4); - test(S("abcde"), 0, 4, SV("abcdefghij"), 1, 1, -1); - test(S("abcde"), 0, 4, SV("abcdefghij"), 1, 4, -1); - test(S("abcde"), 0, 4, SV("abcdefghij"), 1, 8, -1); - test(S("abcde"), 0, 4, SV("abcdefghij"), 1, 9, -1); - test(S("abcde"), 0, 4, SV("abcdefghij"), 1, 10, -1); - test(S("abcde"), 0, 4, SV("abcdefghij"), 5, 0, 4); - test(S("abcde"), 0, 4, SV("abcdefghij"), 5, 1, -5); - test(S("abcde"), 0, 4, SV("abcdefghij"), 5, 2, -5); - test(S("abcde"), 0, 4, SV("abcdefghij"), 5, 4, -5); - test(S("abcde"), 0, 4, SV("abcdefghij"), 5, 5, -5); - test(S("abcde"), 0, 4, SV("abcdefghij"), 5, 6, -5); - test(S("abcde"), 0, 4, SV("abcdefghij"), 9, 0, 4); - test(S("abcde"), 0, 4, SV("abcdefghij"), 9, 1, -9); - test(S("abcde"), 0, 4, SV("abcdefghij"), 9, 2, -9); - test(S("abcde"), 0, 4, SV("abcdefghij"), 10, 0, 4); - test(S("abcde"), 0, 4, SV("abcdefghij"), 10, 1, 4); - test(S("abcde"), 0, 4, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 0, 0, 4); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 0, 1, 3); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 0, 10, -6); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 0, 19, -15); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 0, 20, -16); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 0, 21, -16); -} - -template <class S, class SV> -void test5() -{ - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 1, 0, 4); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 10, 0, 4); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 19, 0, 4); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 20, 0, 4); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 20, 1, 4); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 0, 5, SV(""), 0, 0, 5); - test(S("abcde"), 0, 5, SV(""), 0, 1, 5); - test(S("abcde"), 0, 5, SV(""), 1, 0, 0); - test(S("abcde"), 0, 5, SV("abcde"), 0, 0, 5); - test(S("abcde"), 0, 5, SV("abcde"), 0, 1, 4); - test(S("abcde"), 0, 5, SV("abcde"), 0, 2, 3); - test(S("abcde"), 0, 5, SV("abcde"), 0, 4, 1); - test(S("abcde"), 0, 5, SV("abcde"), 0, 5, 0); - test(S("abcde"), 0, 5, SV("abcde"), 0, 6, 0); - test(S("abcde"), 0, 5, SV("abcde"), 1, 0, 5); - test(S("abcde"), 0, 5, SV("abcde"), 1, 1, -1); - test(S("abcde"), 0, 5, SV("abcde"), 1, 2, -1); - test(S("abcde"), 0, 5, SV("abcde"), 1, 3, -1); - test(S("abcde"), 0, 5, SV("abcde"), 1, 4, -1); - test(S("abcde"), 0, 5, SV("abcde"), 1, 5, -1); - test(S("abcde"), 0, 5, SV("abcde"), 2, 0, 5); - test(S("abcde"), 0, 5, SV("abcde"), 2, 1, -2); - test(S("abcde"), 0, 5, SV("abcde"), 2, 2, -2); - test(S("abcde"), 0, 5, SV("abcde"), 2, 3, -2); - test(S("abcde"), 0, 5, SV("abcde"), 2, 4, -2); - test(S("abcde"), 0, 5, SV("abcde"), 4, 0, 5); - test(S("abcde"), 0, 5, SV("abcde"), 4, 1, -4); - test(S("abcde"), 0, 5, SV("abcde"), 4, 2, -4); - test(S("abcde"), 0, 5, SV("abcde"), 5, 0, 5); - test(S("abcde"), 0, 5, SV("abcde"), 5, 1, 5); - test(S("abcde"), 0, 5, SV("abcde"), 6, 0, 0); - test(S("abcde"), 0, 5, SV("abcdefghij"), 0, 0, 5); - test(S("abcde"), 0, 5, SV("abcdefghij"), 0, 1, 4); - test(S("abcde"), 0, 5, SV("abcdefghij"), 0, 5, 0); - test(S("abcde"), 0, 5, SV("abcdefghij"), 0, 9, -4); - test(S("abcde"), 0, 5, SV("abcdefghij"), 0, 10, -5); - test(S("abcde"), 0, 5, SV("abcdefghij"), 0, 11, -5); - test(S("abcde"), 0, 5, SV("abcdefghij"), 1, 0, 5); - test(S("abcde"), 0, 5, SV("abcdefghij"), 1, 1, -1); - test(S("abcde"), 0, 5, SV("abcdefghij"), 1, 4, -1); - test(S("abcde"), 0, 5, SV("abcdefghij"), 1, 8, -1); - test(S("abcde"), 0, 5, SV("abcdefghij"), 1, 9, -1); - test(S("abcde"), 0, 5, SV("abcdefghij"), 1, 10, -1); - test(S("abcde"), 0, 5, SV("abcdefghij"), 5, 0, 5); - test(S("abcde"), 0, 5, SV("abcdefghij"), 5, 1, -5); - test(S("abcde"), 0, 5, SV("abcdefghij"), 5, 2, -5); - test(S("abcde"), 0, 5, SV("abcdefghij"), 5, 4, -5); - test(S("abcde"), 0, 5, SV("abcdefghij"), 5, 5, -5); - test(S("abcde"), 0, 5, SV("abcdefghij"), 5, 6, -5); - test(S("abcde"), 0, 5, SV("abcdefghij"), 9, 0, 5); - test(S("abcde"), 0, 5, SV("abcdefghij"), 9, 1, -9); - test(S("abcde"), 0, 5, SV("abcdefghij"), 9, 2, -9); - test(S("abcde"), 0, 5, SV("abcdefghij"), 10, 0, 5); - test(S("abcde"), 0, 5, SV("abcdefghij"), 10, 1, 5); - test(S("abcde"), 0, 5, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 0, 5); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 1, 4); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 10, -5); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 19, -14); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 20, -15); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 21, -15); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 0, 5); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 0, 5); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 19, 0, 5); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 20, 0, 5); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 20, 1, 5); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 0, 6, SV(""), 0, 0, 5); - test(S("abcde"), 0, 6, SV(""), 0, 1, 5); - test(S("abcde"), 0, 6, SV(""), 1, 0, 0); - test(S("abcde"), 0, 6, SV("abcde"), 0, 0, 5); - test(S("abcde"), 0, 6, SV("abcde"), 0, 1, 4); - test(S("abcde"), 0, 6, SV("abcde"), 0, 2, 3); - test(S("abcde"), 0, 6, SV("abcde"), 0, 4, 1); - test(S("abcde"), 0, 6, SV("abcde"), 0, 5, 0); -} - -template <class S, class SV> -void test6() -{ - test(S("abcde"), 0, 6, SV("abcde"), 0, 6, 0); - test(S("abcde"), 0, 6, SV("abcde"), 1, 0, 5); - test(S("abcde"), 0, 6, SV("abcde"), 1, 1, -1); - test(S("abcde"), 0, 6, SV("abcde"), 1, 2, -1); - test(S("abcde"), 0, 6, SV("abcde"), 1, 3, -1); - test(S("abcde"), 0, 6, SV("abcde"), 1, 4, -1); - test(S("abcde"), 0, 6, SV("abcde"), 1, 5, -1); - test(S("abcde"), 0, 6, SV("abcde"), 2, 0, 5); - test(S("abcde"), 0, 6, SV("abcde"), 2, 1, -2); - test(S("abcde"), 0, 6, SV("abcde"), 2, 2, -2); - test(S("abcde"), 0, 6, SV("abcde"), 2, 3, -2); - test(S("abcde"), 0, 6, SV("abcde"), 2, 4, -2); - test(S("abcde"), 0, 6, SV("abcde"), 4, 0, 5); - test(S("abcde"), 0, 6, SV("abcde"), 4, 1, -4); - test(S("abcde"), 0, 6, SV("abcde"), 4, 2, -4); - test(S("abcde"), 0, 6, SV("abcde"), 5, 0, 5); - test(S("abcde"), 0, 6, SV("abcde"), 5, 1, 5); - test(S("abcde"), 0, 6, SV("abcde"), 6, 0, 0); - test(S("abcde"), 0, 6, SV("abcdefghij"), 0, 0, 5); - test(S("abcde"), 0, 6, SV("abcdefghij"), 0, 1, 4); - test(S("abcde"), 0, 6, SV("abcdefghij"), 0, 5, 0); - test(S("abcde"), 0, 6, SV("abcdefghij"), 0, 9, -4); - test(S("abcde"), 0, 6, SV("abcdefghij"), 0, 10, -5); - test(S("abcde"), 0, 6, SV("abcdefghij"), 0, 11, -5); - test(S("abcde"), 0, 6, SV("abcdefghij"), 1, 0, 5); - test(S("abcde"), 0, 6, SV("abcdefghij"), 1, 1, -1); - test(S("abcde"), 0, 6, SV("abcdefghij"), 1, 4, -1); - test(S("abcde"), 0, 6, SV("abcdefghij"), 1, 8, -1); - test(S("abcde"), 0, 6, SV("abcdefghij"), 1, 9, -1); - test(S("abcde"), 0, 6, SV("abcdefghij"), 1, 10, -1); - test(S("abcde"), 0, 6, SV("abcdefghij"), 5, 0, 5); - test(S("abcde"), 0, 6, SV("abcdefghij"), 5, 1, -5); - test(S("abcde"), 0, 6, SV("abcdefghij"), 5, 2, -5); - test(S("abcde"), 0, 6, SV("abcdefghij"), 5, 4, -5); - test(S("abcde"), 0, 6, SV("abcdefghij"), 5, 5, -5); - test(S("abcde"), 0, 6, SV("abcdefghij"), 5, 6, -5); - test(S("abcde"), 0, 6, SV("abcdefghij"), 9, 0, 5); - test(S("abcde"), 0, 6, SV("abcdefghij"), 9, 1, -9); - test(S("abcde"), 0, 6, SV("abcdefghij"), 9, 2, -9); - test(S("abcde"), 0, 6, SV("abcdefghij"), 10, 0, 5); - test(S("abcde"), 0, 6, SV("abcdefghij"), 10, 1, 5); - test(S("abcde"), 0, 6, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 0, 0, 5); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 0, 1, 4); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 0, 10, -5); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 0, 19, -14); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 0, 20, -15); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 0, 21, -15); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 1, 0, 5); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 10, 0, 5); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 19, 0, 5); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 20, 0, 5); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 20, 1, 5); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 1, 0, SV(""), 0, 0, 0); - test(S("abcde"), 1, 0, SV(""), 0, 1, 0); - test(S("abcde"), 1, 0, SV(""), 1, 0, 0); - test(S("abcde"), 1, 0, SV("abcde"), 0, 0, 0); - test(S("abcde"), 1, 0, SV("abcde"), 0, 1, -1); - test(S("abcde"), 1, 0, SV("abcde"), 0, 2, -2); - test(S("abcde"), 1, 0, SV("abcde"), 0, 4, -4); - test(S("abcde"), 1, 0, SV("abcde"), 0, 5, -5); - test(S("abcde"), 1, 0, SV("abcde"), 0, 6, -5); - test(S("abcde"), 1, 0, SV("abcde"), 1, 0, 0); - test(S("abcde"), 1, 0, SV("abcde"), 1, 1, -1); - test(S("abcde"), 1, 0, SV("abcde"), 1, 2, -2); - test(S("abcde"), 1, 0, SV("abcde"), 1, 3, -3); - test(S("abcde"), 1, 0, SV("abcde"), 1, 4, -4); - test(S("abcde"), 1, 0, SV("abcde"), 1, 5, -4); - test(S("abcde"), 1, 0, SV("abcde"), 2, 0, 0); - test(S("abcde"), 1, 0, SV("abcde"), 2, 1, -1); - test(S("abcde"), 1, 0, SV("abcde"), 2, 2, -2); - test(S("abcde"), 1, 0, SV("abcde"), 2, 3, -3); - test(S("abcde"), 1, 0, SV("abcde"), 2, 4, -3); - test(S("abcde"), 1, 0, SV("abcde"), 4, 0, 0); - test(S("abcde"), 1, 0, SV("abcde"), 4, 1, -1); - test(S("abcde"), 1, 0, SV("abcde"), 4, 2, -1); - test(S("abcde"), 1, 0, SV("abcde"), 5, 0, 0); - test(S("abcde"), 1, 0, SV("abcde"), 5, 1, 0); - test(S("abcde"), 1, 0, SV("abcde"), 6, 0, 0); - test(S("abcde"), 1, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcde"), 1, 0, SV("abcdefghij"), 0, 1, -1); - test(S("abcde"), 1, 0, SV("abcdefghij"), 0, 5, -5); - test(S("abcde"), 1, 0, SV("abcdefghij"), 0, 9, -9); - test(S("abcde"), 1, 0, SV("abcdefghij"), 0, 10, -10); - test(S("abcde"), 1, 0, SV("abcdefghij"), 0, 11, -10); - test(S("abcde"), 1, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcde"), 1, 0, SV("abcdefghij"), 1, 1, -1); -} - -template <class S, class SV> -void test7() -{ - test(S("abcde"), 1, 0, SV("abcdefghij"), 1, 4, -4); - test(S("abcde"), 1, 0, SV("abcdefghij"), 1, 8, -8); - test(S("abcde"), 1, 0, SV("abcdefghij"), 1, 9, -9); - test(S("abcde"), 1, 0, SV("abcdefghij"), 1, 10, -9); - test(S("abcde"), 1, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcde"), 1, 0, SV("abcdefghij"), 5, 1, -1); - test(S("abcde"), 1, 0, SV("abcdefghij"), 5, 2, -2); - test(S("abcde"), 1, 0, SV("abcdefghij"), 5, 4, -4); - test(S("abcde"), 1, 0, SV("abcdefghij"), 5, 5, -5); - test(S("abcde"), 1, 0, SV("abcdefghij"), 5, 6, -5); - test(S("abcde"), 1, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcde"), 1, 0, SV("abcdefghij"), 9, 1, -1); - test(S("abcde"), 1, 0, SV("abcdefghij"), 9, 2, -1); - test(S("abcde"), 1, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcde"), 1, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcde"), 1, 0, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 1, 1, SV(""), 0, 0, 1); - test(S("abcde"), 1, 1, SV(""), 0, 1, 1); - test(S("abcde"), 1, 1, SV(""), 1, 0, 0); - test(S("abcde"), 1, 1, SV("abcde"), 0, 0, 1); - test(S("abcde"), 1, 1, SV("abcde"), 0, 1, 1); - test(S("abcde"), 1, 1, SV("abcde"), 0, 2, 1); - test(S("abcde"), 1, 1, SV("abcde"), 0, 4, 1); - test(S("abcde"), 1, 1, SV("abcde"), 0, 5, 1); - test(S("abcde"), 1, 1, SV("abcde"), 0, 6, 1); - test(S("abcde"), 1, 1, SV("abcde"), 1, 0, 1); - test(S("abcde"), 1, 1, SV("abcde"), 1, 1, 0); - test(S("abcde"), 1, 1, SV("abcde"), 1, 2, -1); - test(S("abcde"), 1, 1, SV("abcde"), 1, 3, -2); - test(S("abcde"), 1, 1, SV("abcde"), 1, 4, -3); - test(S("abcde"), 1, 1, SV("abcde"), 1, 5, -3); - test(S("abcde"), 1, 1, SV("abcde"), 2, 0, 1); - test(S("abcde"), 1, 1, SV("abcde"), 2, 1, -1); - test(S("abcde"), 1, 1, SV("abcde"), 2, 2, -1); - test(S("abcde"), 1, 1, SV("abcde"), 2, 3, -1); - test(S("abcde"), 1, 1, SV("abcde"), 2, 4, -1); - test(S("abcde"), 1, 1, SV("abcde"), 4, 0, 1); - test(S("abcde"), 1, 1, SV("abcde"), 4, 1, -3); - test(S("abcde"), 1, 1, SV("abcde"), 4, 2, -3); - test(S("abcde"), 1, 1, SV("abcde"), 5, 0, 1); - test(S("abcde"), 1, 1, SV("abcde"), 5, 1, 1); - test(S("abcde"), 1, 1, SV("abcde"), 6, 0, 0); - test(S("abcde"), 1, 1, SV("abcdefghij"), 0, 0, 1); - test(S("abcde"), 1, 1, SV("abcdefghij"), 0, 1, 1); - test(S("abcde"), 1, 1, SV("abcdefghij"), 0, 5, 1); - test(S("abcde"), 1, 1, SV("abcdefghij"), 0, 9, 1); - test(S("abcde"), 1, 1, SV("abcdefghij"), 0, 10, 1); - test(S("abcde"), 1, 1, SV("abcdefghij"), 0, 11, 1); - test(S("abcde"), 1, 1, SV("abcdefghij"), 1, 0, 1); - test(S("abcde"), 1, 1, SV("abcdefghij"), 1, 1, 0); - test(S("abcde"), 1, 1, SV("abcdefghij"), 1, 4, -3); - test(S("abcde"), 1, 1, SV("abcdefghij"), 1, 8, -7); - test(S("abcde"), 1, 1, SV("abcdefghij"), 1, 9, -8); - test(S("abcde"), 1, 1, SV("abcdefghij"), 1, 10, -8); - test(S("abcde"), 1, 1, SV("abcdefghij"), 5, 0, 1); - test(S("abcde"), 1, 1, SV("abcdefghij"), 5, 1, -4); - test(S("abcde"), 1, 1, SV("abcdefghij"), 5, 2, -4); - test(S("abcde"), 1, 1, SV("abcdefghij"), 5, 4, -4); - test(S("abcde"), 1, 1, SV("abcdefghij"), 5, 5, -4); - test(S("abcde"), 1, 1, SV("abcdefghij"), 5, 6, -4); - test(S("abcde"), 1, 1, SV("abcdefghij"), 9, 0, 1); - test(S("abcde"), 1, 1, SV("abcdefghij"), 9, 1, -8); - test(S("abcde"), 1, 1, SV("abcdefghij"), 9, 2, -8); - test(S("abcde"), 1, 1, SV("abcdefghij"), 10, 0, 1); - test(S("abcde"), 1, 1, SV("abcdefghij"), 10, 1, 1); - test(S("abcde"), 1, 1, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 1, 0); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 9, -8); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 18, -17); -} - -template <class S, class SV> -void test8() -{ - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 19, -18); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 20, -18); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 1, 2, SV(""), 0, 0, 2); - test(S("abcde"), 1, 2, SV(""), 0, 1, 2); - test(S("abcde"), 1, 2, SV(""), 1, 0, 0); - test(S("abcde"), 1, 2, SV("abcde"), 0, 0, 2); - test(S("abcde"), 1, 2, SV("abcde"), 0, 1, 1); - test(S("abcde"), 1, 2, SV("abcde"), 0, 2, 1); - test(S("abcde"), 1, 2, SV("abcde"), 0, 4, 1); - test(S("abcde"), 1, 2, SV("abcde"), 0, 5, 1); - test(S("abcde"), 1, 2, SV("abcde"), 0, 6, 1); - test(S("abcde"), 1, 2, SV("abcde"), 1, 0, 2); - test(S("abcde"), 1, 2, SV("abcde"), 1, 1, 1); - test(S("abcde"), 1, 2, SV("abcde"), 1, 2, 0); - test(S("abcde"), 1, 2, SV("abcde"), 1, 3, -1); - test(S("abcde"), 1, 2, SV("abcde"), 1, 4, -2); - test(S("abcde"), 1, 2, SV("abcde"), 1, 5, -2); - test(S("abcde"), 1, 2, SV("abcde"), 2, 0, 2); - test(S("abcde"), 1, 2, SV("abcde"), 2, 1, -1); - test(S("abcde"), 1, 2, SV("abcde"), 2, 2, -1); - test(S("abcde"), 1, 2, SV("abcde"), 2, 3, -1); - test(S("abcde"), 1, 2, SV("abcde"), 2, 4, -1); - test(S("abcde"), 1, 2, SV("abcde"), 4, 0, 2); - test(S("abcde"), 1, 2, SV("abcde"), 4, 1, -3); - test(S("abcde"), 1, 2, SV("abcde"), 4, 2, -3); - test(S("abcde"), 1, 2, SV("abcde"), 5, 0, 2); - test(S("abcde"), 1, 2, SV("abcde"), 5, 1, 2); - test(S("abcde"), 1, 2, SV("abcde"), 6, 0, 0); - test(S("abcde"), 1, 2, SV("abcdefghij"), 0, 0, 2); - test(S("abcde"), 1, 2, SV("abcdefghij"), 0, 1, 1); - test(S("abcde"), 1, 2, SV("abcdefghij"), 0, 5, 1); - test(S("abcde"), 1, 2, SV("abcdefghij"), 0, 9, 1); - test(S("abcde"), 1, 2, SV("abcdefghij"), 0, 10, 1); - test(S("abcde"), 1, 2, SV("abcdefghij"), 0, 11, 1); - test(S("abcde"), 1, 2, SV("abcdefghij"), 1, 0, 2); - test(S("abcde"), 1, 2, SV("abcdefghij"), 1, 1, 1); - test(S("abcde"), 1, 2, SV("abcdefghij"), 1, 4, -2); - test(S("abcde"), 1, 2, SV("abcdefghij"), 1, 8, -6); - test(S("abcde"), 1, 2, SV("abcdefghij"), 1, 9, -7); - test(S("abcde"), 1, 2, SV("abcdefghij"), 1, 10, -7); - test(S("abcde"), 1, 2, SV("abcdefghij"), 5, 0, 2); - test(S("abcde"), 1, 2, SV("abcdefghij"), 5, 1, -4); - test(S("abcde"), 1, 2, SV("abcdefghij"), 5, 2, -4); - test(S("abcde"), 1, 2, SV("abcdefghij"), 5, 4, -4); - test(S("abcde"), 1, 2, SV("abcdefghij"), 5, 5, -4); - test(S("abcde"), 1, 2, SV("abcdefghij"), 5, 6, -4); - test(S("abcde"), 1, 2, SV("abcdefghij"), 9, 0, 2); - test(S("abcde"), 1, 2, SV("abcdefghij"), 9, 1, -8); - test(S("abcde"), 1, 2, SV("abcdefghij"), 9, 2, -8); - test(S("abcde"), 1, 2, SV("abcdefghij"), 10, 0, 2); - test(S("abcde"), 1, 2, SV("abcdefghij"), 10, 1, 2); - test(S("abcde"), 1, 2, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 0, 0, 2); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 1, 0, 2); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 1, 1, 1); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 1, 9, -7); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 1, 18, -16); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 1, 19, -17); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 1, 20, -17); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 10, 0, 2); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 19, 0, 2); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 20, 0, 2); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 20, 1, 2); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 1, 3, SV(""), 0, 0, 3); - test(S("abcde"), 1, 3, SV(""), 0, 1, 3); - test(S("abcde"), 1, 3, SV(""), 1, 0, 0); - test(S("abcde"), 1, 3, SV("abcde"), 0, 0, 3); - test(S("abcde"), 1, 3, SV("abcde"), 0, 1, 1); - test(S("abcde"), 1, 3, SV("abcde"), 0, 2, 1); - test(S("abcde"), 1, 3, SV("abcde"), 0, 4, 1); - test(S("abcde"), 1, 3, SV("abcde"), 0, 5, 1); - test(S("abcde"), 1, 3, SV("abcde"), 0, 6, 1); - test(S("abcde"), 1, 3, SV("abcde"), 1, 0, 3); - test(S("abcde"), 1, 3, SV("abcde"), 1, 1, 2); - test(S("abcde"), 1, 3, SV("abcde"), 1, 2, 1); -} - -template <class S, class SV> -void test9() -{ - test(S("abcde"), 1, 3, SV("abcde"), 1, 3, 0); - test(S("abcde"), 1, 3, SV("abcde"), 1, 4, -1); - test(S("abcde"), 1, 3, SV("abcde"), 1, 5, -1); - test(S("abcde"), 1, 3, SV("abcde"), 2, 0, 3); - test(S("abcde"), 1, 3, SV("abcde"), 2, 1, -1); - test(S("abcde"), 1, 3, SV("abcde"), 2, 2, -1); - test(S("abcde"), 1, 3, SV("abcde"), 2, 3, -1); - test(S("abcde"), 1, 3, SV("abcde"), 2, 4, -1); - test(S("abcde"), 1, 3, SV("abcde"), 4, 0, 3); - test(S("abcde"), 1, 3, SV("abcde"), 4, 1, -3); - test(S("abcde"), 1, 3, SV("abcde"), 4, 2, -3); - test(S("abcde"), 1, 3, SV("abcde"), 5, 0, 3); - test(S("abcde"), 1, 3, SV("abcde"), 5, 1, 3); - test(S("abcde"), 1, 3, SV("abcde"), 6, 0, 0); - test(S("abcde"), 1, 3, SV("abcdefghij"), 0, 0, 3); - test(S("abcde"), 1, 3, SV("abcdefghij"), 0, 1, 1); - test(S("abcde"), 1, 3, SV("abcdefghij"), 0, 5, 1); - test(S("abcde"), 1, 3, SV("abcdefghij"), 0, 9, 1); - test(S("abcde"), 1, 3, SV("abcdefghij"), 0, 10, 1); - test(S("abcde"), 1, 3, SV("abcdefghij"), 0, 11, 1); - test(S("abcde"), 1, 3, SV("abcdefghij"), 1, 0, 3); - test(S("abcde"), 1, 3, SV("abcdefghij"), 1, 1, 2); - test(S("abcde"), 1, 3, SV("abcdefghij"), 1, 4, -1); - test(S("abcde"), 1, 3, SV("abcdefghij"), 1, 8, -5); - test(S("abcde"), 1, 3, SV("abcdefghij"), 1, 9, -6); - test(S("abcde"), 1, 3, SV("abcdefghij"), 1, 10, -6); - test(S("abcde"), 1, 3, SV("abcdefghij"), 5, 0, 3); - test(S("abcde"), 1, 3, SV("abcdefghij"), 5, 1, -4); - test(S("abcde"), 1, 3, SV("abcdefghij"), 5, 2, -4); - test(S("abcde"), 1, 3, SV("abcdefghij"), 5, 4, -4); - test(S("abcde"), 1, 3, SV("abcdefghij"), 5, 5, -4); - test(S("abcde"), 1, 3, SV("abcdefghij"), 5, 6, -4); - test(S("abcde"), 1, 3, SV("abcdefghij"), 9, 0, 3); - test(S("abcde"), 1, 3, SV("abcdefghij"), 9, 1, -8); - test(S("abcde"), 1, 3, SV("abcdefghij"), 9, 2, -8); - test(S("abcde"), 1, 3, SV("abcdefghij"), 10, 0, 3); - test(S("abcde"), 1, 3, SV("abcdefghij"), 10, 1, 3); - test(S("abcde"), 1, 3, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 0, 0, 3); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 1, 0, 3); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 1, 1, 2); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 1, 9, -6); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 1, 18, -15); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 1, 19, -16); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 1, 20, -16); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 10, 0, 3); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 19, 0, 3); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 20, 0, 3); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 20, 1, 3); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 1, 4, SV(""), 0, 0, 4); - test(S("abcde"), 1, 4, SV(""), 0, 1, 4); - test(S("abcde"), 1, 4, SV(""), 1, 0, 0); - test(S("abcde"), 1, 4, SV("abcde"), 0, 0, 4); - test(S("abcde"), 1, 4, SV("abcde"), 0, 1, 1); - test(S("abcde"), 1, 4, SV("abcde"), 0, 2, 1); - test(S("abcde"), 1, 4, SV("abcde"), 0, 4, 1); - test(S("abcde"), 1, 4, SV("abcde"), 0, 5, 1); - test(S("abcde"), 1, 4, SV("abcde"), 0, 6, 1); - test(S("abcde"), 1, 4, SV("abcde"), 1, 0, 4); - test(S("abcde"), 1, 4, SV("abcde"), 1, 1, 3); - test(S("abcde"), 1, 4, SV("abcde"), 1, 2, 2); - test(S("abcde"), 1, 4, SV("abcde"), 1, 3, 1); - test(S("abcde"), 1, 4, SV("abcde"), 1, 4, 0); - test(S("abcde"), 1, 4, SV("abcde"), 1, 5, 0); - test(S("abcde"), 1, 4, SV("abcde"), 2, 0, 4); - test(S("abcde"), 1, 4, SV("abcde"), 2, 1, -1); - test(S("abcde"), 1, 4, SV("abcde"), 2, 2, -1); - test(S("abcde"), 1, 4, SV("abcde"), 2, 3, -1); - test(S("abcde"), 1, 4, SV("abcde"), 2, 4, -1); - test(S("abcde"), 1, 4, SV("abcde"), 4, 0, 4); - test(S("abcde"), 1, 4, SV("abcde"), 4, 1, -3); - test(S("abcde"), 1, 4, SV("abcde"), 4, 2, -3); - test(S("abcde"), 1, 4, SV("abcde"), 5, 0, 4); - test(S("abcde"), 1, 4, SV("abcde"), 5, 1, 4); - test(S("abcde"), 1, 4, SV("abcde"), 6, 0, 0); - test(S("abcde"), 1, 4, SV("abcdefghij"), 0, 0, 4); - test(S("abcde"), 1, 4, SV("abcdefghij"), 0, 1, 1); - test(S("abcde"), 1, 4, SV("abcdefghij"), 0, 5, 1); - test(S("abcde"), 1, 4, SV("abcdefghij"), 0, 9, 1); - test(S("abcde"), 1, 4, SV("abcdefghij"), 0, 10, 1); - test(S("abcde"), 1, 4, SV("abcdefghij"), 0, 11, 1); - test(S("abcde"), 1, 4, SV("abcdefghij"), 1, 0, 4); - test(S("abcde"), 1, 4, SV("abcdefghij"), 1, 1, 3); - test(S("abcde"), 1, 4, SV("abcdefghij"), 1, 4, 0); - test(S("abcde"), 1, 4, SV("abcdefghij"), 1, 8, -4); - test(S("abcde"), 1, 4, SV("abcdefghij"), 1, 9, -5); - test(S("abcde"), 1, 4, SV("abcdefghij"), 1, 10, -5); -} - -template <class S, class SV> -void test10() -{ - test(S("abcde"), 1, 4, SV("abcdefghij"), 5, 0, 4); - test(S("abcde"), 1, 4, SV("abcdefghij"), 5, 1, -4); - test(S("abcde"), 1, 4, SV("abcdefghij"), 5, 2, -4); - test(S("abcde"), 1, 4, SV("abcdefghij"), 5, 4, -4); - test(S("abcde"), 1, 4, SV("abcdefghij"), 5, 5, -4); - test(S("abcde"), 1, 4, SV("abcdefghij"), 5, 6, -4); - test(S("abcde"), 1, 4, SV("abcdefghij"), 9, 0, 4); - test(S("abcde"), 1, 4, SV("abcdefghij"), 9, 1, -8); - test(S("abcde"), 1, 4, SV("abcdefghij"), 9, 2, -8); - test(S("abcde"), 1, 4, SV("abcdefghij"), 10, 0, 4); - test(S("abcde"), 1, 4, SV("abcdefghij"), 10, 1, 4); - test(S("abcde"), 1, 4, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 0, 4); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 0, 4); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 1, 3); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 9, -5); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 18, -14); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 19, -15); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 20, -15); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 0, 4); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 19, 0, 4); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 20, 0, 4); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 20, 1, 4); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 1, 5, SV(""), 0, 0, 4); - test(S("abcde"), 1, 5, SV(""), 0, 1, 4); - test(S("abcde"), 1, 5, SV(""), 1, 0, 0); - test(S("abcde"), 1, 5, SV("abcde"), 0, 0, 4); - test(S("abcde"), 1, 5, SV("abcde"), 0, 1, 1); - test(S("abcde"), 1, 5, SV("abcde"), 0, 2, 1); - test(S("abcde"), 1, 5, SV("abcde"), 0, 4, 1); - test(S("abcde"), 1, 5, SV("abcde"), 0, 5, 1); - test(S("abcde"), 1, 5, SV("abcde"), 0, 6, 1); - test(S("abcde"), 1, 5, SV("abcde"), 1, 0, 4); - test(S("abcde"), 1, 5, SV("abcde"), 1, 1, 3); - test(S("abcde"), 1, 5, SV("abcde"), 1, 2, 2); - test(S("abcde"), 1, 5, SV("abcde"), 1, 3, 1); - test(S("abcde"), 1, 5, SV("abcde"), 1, 4, 0); - test(S("abcde"), 1, 5, SV("abcde"), 1, 5, 0); - test(S("abcde"), 1, 5, SV("abcde"), 2, 0, 4); - test(S("abcde"), 1, 5, SV("abcde"), 2, 1, -1); - test(S("abcde"), 1, 5, SV("abcde"), 2, 2, -1); - test(S("abcde"), 1, 5, SV("abcde"), 2, 3, -1); - test(S("abcde"), 1, 5, SV("abcde"), 2, 4, -1); - test(S("abcde"), 1, 5, SV("abcde"), 4, 0, 4); - test(S("abcde"), 1, 5, SV("abcde"), 4, 1, -3); - test(S("abcde"), 1, 5, SV("abcde"), 4, 2, -3); - test(S("abcde"), 1, 5, SV("abcde"), 5, 0, 4); - test(S("abcde"), 1, 5, SV("abcde"), 5, 1, 4); - test(S("abcde"), 1, 5, SV("abcde"), 6, 0, 0); - test(S("abcde"), 1, 5, SV("abcdefghij"), 0, 0, 4); - test(S("abcde"), 1, 5, SV("abcdefghij"), 0, 1, 1); - test(S("abcde"), 1, 5, SV("abcdefghij"), 0, 5, 1); - test(S("abcde"), 1, 5, SV("abcdefghij"), 0, 9, 1); - test(S("abcde"), 1, 5, SV("abcdefghij"), 0, 10, 1); - test(S("abcde"), 1, 5, SV("abcdefghij"), 0, 11, 1); - test(S("abcde"), 1, 5, SV("abcdefghij"), 1, 0, 4); - test(S("abcde"), 1, 5, SV("abcdefghij"), 1, 1, 3); - test(S("abcde"), 1, 5, SV("abcdefghij"), 1, 4, 0); - test(S("abcde"), 1, 5, SV("abcdefghij"), 1, 8, -4); - test(S("abcde"), 1, 5, SV("abcdefghij"), 1, 9, -5); - test(S("abcde"), 1, 5, SV("abcdefghij"), 1, 10, -5); - test(S("abcde"), 1, 5, SV("abcdefghij"), 5, 0, 4); - test(S("abcde"), 1, 5, SV("abcdefghij"), 5, 1, -4); - test(S("abcde"), 1, 5, SV("abcdefghij"), 5, 2, -4); - test(S("abcde"), 1, 5, SV("abcdefghij"), 5, 4, -4); - test(S("abcde"), 1, 5, SV("abcdefghij"), 5, 5, -4); - test(S("abcde"), 1, 5, SV("abcdefghij"), 5, 6, -4); - test(S("abcde"), 1, 5, SV("abcdefghij"), 9, 0, 4); - test(S("abcde"), 1, 5, SV("abcdefghij"), 9, 1, -8); - test(S("abcde"), 1, 5, SV("abcdefghij"), 9, 2, -8); - test(S("abcde"), 1, 5, SV("abcdefghij"), 10, 0, 4); - test(S("abcde"), 1, 5, SV("abcdefghij"), 10, 1, 4); - test(S("abcde"), 1, 5, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 0, 0, 4); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 1, 0, 4); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 1, 1, 3); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 1, 9, -5); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 1, 18, -14); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 1, 19, -15); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 1, 20, -15); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 10, 0, 4); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 10, 1, -9); -} - -template <class S, class SV> -void test11() -{ - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 19, 0, 4); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 20, 0, 4); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 20, 1, 4); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 2, 0, SV(""), 0, 0, 0); - test(S("abcde"), 2, 0, SV(""), 0, 1, 0); - test(S("abcde"), 2, 0, SV(""), 1, 0, 0); - test(S("abcde"), 2, 0, SV("abcde"), 0, 0, 0); - test(S("abcde"), 2, 0, SV("abcde"), 0, 1, -1); - test(S("abcde"), 2, 0, SV("abcde"), 0, 2, -2); - test(S("abcde"), 2, 0, SV("abcde"), 0, 4, -4); - test(S("abcde"), 2, 0, SV("abcde"), 0, 5, -5); - test(S("abcde"), 2, 0, SV("abcde"), 0, 6, -5); - test(S("abcde"), 2, 0, SV("abcde"), 1, 0, 0); - test(S("abcde"), 2, 0, SV("abcde"), 1, 1, -1); - test(S("abcde"), 2, 0, SV("abcde"), 1, 2, -2); - test(S("abcde"), 2, 0, SV("abcde"), 1, 3, -3); - test(S("abcde"), 2, 0, SV("abcde"), 1, 4, -4); - test(S("abcde"), 2, 0, SV("abcde"), 1, 5, -4); - test(S("abcde"), 2, 0, SV("abcde"), 2, 0, 0); - test(S("abcde"), 2, 0, SV("abcde"), 2, 1, -1); - test(S("abcde"), 2, 0, SV("abcde"), 2, 2, -2); - test(S("abcde"), 2, 0, SV("abcde"), 2, 3, -3); - test(S("abcde"), 2, 0, SV("abcde"), 2, 4, -3); - test(S("abcde"), 2, 0, SV("abcde"), 4, 0, 0); - test(S("abcde"), 2, 0, SV("abcde"), 4, 1, -1); - test(S("abcde"), 2, 0, SV("abcde"), 4, 2, -1); - test(S("abcde"), 2, 0, SV("abcde"), 5, 0, 0); - test(S("abcde"), 2, 0, SV("abcde"), 5, 1, 0); - test(S("abcde"), 2, 0, SV("abcde"), 6, 0, 0); - test(S("abcde"), 2, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcde"), 2, 0, SV("abcdefghij"), 0, 1, -1); - test(S("abcde"), 2, 0, SV("abcdefghij"), 0, 5, -5); - test(S("abcde"), 2, 0, SV("abcdefghij"), 0, 9, -9); - test(S("abcde"), 2, 0, SV("abcdefghij"), 0, 10, -10); - test(S("abcde"), 2, 0, SV("abcdefghij"), 0, 11, -10); - test(S("abcde"), 2, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcde"), 2, 0, SV("abcdefghij"), 1, 1, -1); - test(S("abcde"), 2, 0, SV("abcdefghij"), 1, 4, -4); - test(S("abcde"), 2, 0, SV("abcdefghij"), 1, 8, -8); - test(S("abcde"), 2, 0, SV("abcdefghij"), 1, 9, -9); - test(S("abcde"), 2, 0, SV("abcdefghij"), 1, 10, -9); - test(S("abcde"), 2, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcde"), 2, 0, SV("abcdefghij"), 5, 1, -1); - test(S("abcde"), 2, 0, SV("abcdefghij"), 5, 2, -2); - test(S("abcde"), 2, 0, SV("abcdefghij"), 5, 4, -4); - test(S("abcde"), 2, 0, SV("abcdefghij"), 5, 5, -5); - test(S("abcde"), 2, 0, SV("abcdefghij"), 5, 6, -5); - test(S("abcde"), 2, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcde"), 2, 0, SV("abcdefghij"), 9, 1, -1); - test(S("abcde"), 2, 0, SV("abcdefghij"), 9, 2, -1); - test(S("abcde"), 2, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcde"), 2, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcde"), 2, 0, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 2, 1, SV(""), 0, 0, 1); - test(S("abcde"), 2, 1, SV(""), 0, 1, 1); - test(S("abcde"), 2, 1, SV(""), 1, 0, 0); - test(S("abcde"), 2, 1, SV("abcde"), 0, 0, 1); - test(S("abcde"), 2, 1, SV("abcde"), 0, 1, 2); - test(S("abcde"), 2, 1, SV("abcde"), 0, 2, 2); - test(S("abcde"), 2, 1, SV("abcde"), 0, 4, 2); - test(S("abcde"), 2, 1, SV("abcde"), 0, 5, 2); - test(S("abcde"), 2, 1, SV("abcde"), 0, 6, 2); - test(S("abcde"), 2, 1, SV("abcde"), 1, 0, 1); - test(S("abcde"), 2, 1, SV("abcde"), 1, 1, 1); - test(S("abcde"), 2, 1, SV("abcde"), 1, 2, 1); - test(S("abcde"), 2, 1, SV("abcde"), 1, 3, 1); - test(S("abcde"), 2, 1, SV("abcde"), 1, 4, 1); - test(S("abcde"), 2, 1, SV("abcde"), 1, 5, 1); - test(S("abcde"), 2, 1, SV("abcde"), 2, 0, 1); -} - -template <class S, class SV> -void test12() -{ - test(S("abcde"), 2, 1, SV("abcde"), 2, 1, 0); - test(S("abcde"), 2, 1, SV("abcde"), 2, 2, -1); - test(S("abcde"), 2, 1, SV("abcde"), 2, 3, -2); - test(S("abcde"), 2, 1, SV("abcde"), 2, 4, -2); - test(S("abcde"), 2, 1, SV("abcde"), 4, 0, 1); - test(S("abcde"), 2, 1, SV("abcde"), 4, 1, -2); - test(S("abcde"), 2, 1, SV("abcde"), 4, 2, -2); - test(S("abcde"), 2, 1, SV("abcde"), 5, 0, 1); - test(S("abcde"), 2, 1, SV("abcde"), 5, 1, 1); - test(S("abcde"), 2, 1, SV("abcde"), 6, 0, 0); - test(S("abcde"), 2, 1, SV("abcdefghij"), 0, 0, 1); - test(S("abcde"), 2, 1, SV("abcdefghij"), 0, 1, 2); - test(S("abcde"), 2, 1, SV("abcdefghij"), 0, 5, 2); - test(S("abcde"), 2, 1, SV("abcdefghij"), 0, 9, 2); - test(S("abcde"), 2, 1, SV("abcdefghij"), 0, 10, 2); - test(S("abcde"), 2, 1, SV("abcdefghij"), 0, 11, 2); - test(S("abcde"), 2, 1, SV("abcdefghij"), 1, 0, 1); - test(S("abcde"), 2, 1, SV("abcdefghij"), 1, 1, 1); - test(S("abcde"), 2, 1, SV("abcdefghij"), 1, 4, 1); - test(S("abcde"), 2, 1, SV("abcdefghij"), 1, 8, 1); - test(S("abcde"), 2, 1, SV("abcdefghij"), 1, 9, 1); - test(S("abcde"), 2, 1, SV("abcdefghij"), 1, 10, 1); - test(S("abcde"), 2, 1, SV("abcdefghij"), 5, 0, 1); - test(S("abcde"), 2, 1, SV("abcdefghij"), 5, 1, -3); - test(S("abcde"), 2, 1, SV("abcdefghij"), 5, 2, -3); - test(S("abcde"), 2, 1, SV("abcdefghij"), 5, 4, -3); - test(S("abcde"), 2, 1, SV("abcdefghij"), 5, 5, -3); - test(S("abcde"), 2, 1, SV("abcdefghij"), 5, 6, -3); - test(S("abcde"), 2, 1, SV("abcdefghij"), 9, 0, 1); - test(S("abcde"), 2, 1, SV("abcdefghij"), 9, 1, -7); - test(S("abcde"), 2, 1, SV("abcdefghij"), 9, 2, -7); - test(S("abcde"), 2, 1, SV("abcdefghij"), 10, 0, 1); - test(S("abcde"), 2, 1, SV("abcdefghij"), 10, 1, 1); - test(S("abcde"), 2, 1, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 0, 1, 2); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 0, 10, 2); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 0, 19, 2); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 0, 20, 2); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 0, 21, 2); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 1, 1, 1); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 1, 9, 1); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 1, 18, 1); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 1, 19, 1); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 1, 20, 1); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 10, 1, -8); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 10, 5, -8); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 10, 9, -8); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 10, 10, -8); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 10, 11, -8); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 19, 1, -17); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 19, 2, -17); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 2, 2, SV(""), 0, 0, 2); - test(S("abcde"), 2, 2, SV(""), 0, 1, 2); - test(S("abcde"), 2, 2, SV(""), 1, 0, 0); - test(S("abcde"), 2, 2, SV("abcde"), 0, 0, 2); - test(S("abcde"), 2, 2, SV("abcde"), 0, 1, 2); - test(S("abcde"), 2, 2, SV("abcde"), 0, 2, 2); - test(S("abcde"), 2, 2, SV("abcde"), 0, 4, 2); - test(S("abcde"), 2, 2, SV("abcde"), 0, 5, 2); - test(S("abcde"), 2, 2, SV("abcde"), 0, 6, 2); - test(S("abcde"), 2, 2, SV("abcde"), 1, 0, 2); - test(S("abcde"), 2, 2, SV("abcde"), 1, 1, 1); - test(S("abcde"), 2, 2, SV("abcde"), 1, 2, 1); - test(S("abcde"), 2, 2, SV("abcde"), 1, 3, 1); - test(S("abcde"), 2, 2, SV("abcde"), 1, 4, 1); - test(S("abcde"), 2, 2, SV("abcde"), 1, 5, 1); - test(S("abcde"), 2, 2, SV("abcde"), 2, 0, 2); - test(S("abcde"), 2, 2, SV("abcde"), 2, 1, 1); - test(S("abcde"), 2, 2, SV("abcde"), 2, 2, 0); - test(S("abcde"), 2, 2, SV("abcde"), 2, 3, -1); - test(S("abcde"), 2, 2, SV("abcde"), 2, 4, -1); - test(S("abcde"), 2, 2, SV("abcde"), 4, 0, 2); - test(S("abcde"), 2, 2, SV("abcde"), 4, 1, -2); - test(S("abcde"), 2, 2, SV("abcde"), 4, 2, -2); - test(S("abcde"), 2, 2, SV("abcde"), 5, 0, 2); - test(S("abcde"), 2, 2, SV("abcde"), 5, 1, 2); - test(S("abcde"), 2, 2, SV("abcde"), 6, 0, 0); - test(S("abcde"), 2, 2, SV("abcdefghij"), 0, 0, 2); - test(S("abcde"), 2, 2, SV("abcdefghij"), 0, 1, 2); - test(S("abcde"), 2, 2, SV("abcdefghij"), 0, 5, 2); - test(S("abcde"), 2, 2, SV("abcdefghij"), 0, 9, 2); - test(S("abcde"), 2, 2, SV("abcdefghij"), 0, 10, 2); - test(S("abcde"), 2, 2, SV("abcdefghij"), 0, 11, 2); - test(S("abcde"), 2, 2, SV("abcdefghij"), 1, 0, 2); - test(S("abcde"), 2, 2, SV("abcdefghij"), 1, 1, 1); - test(S("abcde"), 2, 2, SV("abcdefghij"), 1, 4, 1); - test(S("abcde"), 2, 2, SV("abcdefghij"), 1, 8, 1); - test(S("abcde"), 2, 2, SV("abcdefghij"), 1, 9, 1); - test(S("abcde"), 2, 2, SV("abcdefghij"), 1, 10, 1); - test(S("abcde"), 2, 2, SV("abcdefghij"), 5, 0, 2); - test(S("abcde"), 2, 2, SV("abcdefghij"), 5, 1, -3); - test(S("abcde"), 2, 2, SV("abcdefghij"), 5, 2, -3); - test(S("abcde"), 2, 2, SV("abcdefghij"), 5, 4, -3); -} - -template <class S, class SV> -void test13() -{ - test(S("abcde"), 2, 2, SV("abcdefghij"), 5, 5, -3); - test(S("abcde"), 2, 2, SV("abcdefghij"), 5, 6, -3); - test(S("abcde"), 2, 2, SV("abcdefghij"), 9, 0, 2); - test(S("abcde"), 2, 2, SV("abcdefghij"), 9, 1, -7); - test(S("abcde"), 2, 2, SV("abcdefghij"), 9, 2, -7); - test(S("abcde"), 2, 2, SV("abcdefghij"), 10, 0, 2); - test(S("abcde"), 2, 2, SV("abcdefghij"), 10, 1, 2); - test(S("abcde"), 2, 2, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 0, 0, 2); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 0, 1, 2); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 0, 10, 2); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 0, 19, 2); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 0, 20, 2); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 0, 21, 2); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 1, 0, 2); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 1, 1, 1); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 1, 9, 1); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 1, 18, 1); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 1, 19, 1); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 1, 20, 1); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 10, 0, 2); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 10, 1, -8); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 10, 5, -8); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 10, 9, -8); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 10, 10, -8); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 10, 11, -8); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 19, 0, 2); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 19, 1, -17); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 19, 2, -17); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 20, 0, 2); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 20, 1, 2); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 2, 3, SV(""), 0, 0, 3); - test(S("abcde"), 2, 3, SV(""), 0, 1, 3); - test(S("abcde"), 2, 3, SV(""), 1, 0, 0); - test(S("abcde"), 2, 3, SV("abcde"), 0, 0, 3); - test(S("abcde"), 2, 3, SV("abcde"), 0, 1, 2); - test(S("abcde"), 2, 3, SV("abcde"), 0, 2, 2); - test(S("abcde"), 2, 3, SV("abcde"), 0, 4, 2); - test(S("abcde"), 2, 3, SV("abcde"), 0, 5, 2); - test(S("abcde"), 2, 3, SV("abcde"), 0, 6, 2); - test(S("abcde"), 2, 3, SV("abcde"), 1, 0, 3); - test(S("abcde"), 2, 3, SV("abcde"), 1, 1, 1); - test(S("abcde"), 2, 3, SV("abcde"), 1, 2, 1); - test(S("abcde"), 2, 3, SV("abcde"), 1, 3, 1); - test(S("abcde"), 2, 3, SV("abcde"), 1, 4, 1); - test(S("abcde"), 2, 3, SV("abcde"), 1, 5, 1); - test(S("abcde"), 2, 3, SV("abcde"), 2, 0, 3); - test(S("abcde"), 2, 3, SV("abcde"), 2, 1, 2); - test(S("abcde"), 2, 3, SV("abcde"), 2, 2, 1); - test(S("abcde"), 2, 3, SV("abcde"), 2, 3, 0); - test(S("abcde"), 2, 3, SV("abcde"), 2, 4, 0); - test(S("abcde"), 2, 3, SV("abcde"), 4, 0, 3); - test(S("abcde"), 2, 3, SV("abcde"), 4, 1, -2); - test(S("abcde"), 2, 3, SV("abcde"), 4, 2, -2); - test(S("abcde"), 2, 3, SV("abcde"), 5, 0, 3); - test(S("abcde"), 2, 3, SV("abcde"), 5, 1, 3); - test(S("abcde"), 2, 3, SV("abcde"), 6, 0, 0); - test(S("abcde"), 2, 3, SV("abcdefghij"), 0, 0, 3); - test(S("abcde"), 2, 3, SV("abcdefghij"), 0, 1, 2); - test(S("abcde"), 2, 3, SV("abcdefghij"), 0, 5, 2); - test(S("abcde"), 2, 3, SV("abcdefghij"), 0, 9, 2); - test(S("abcde"), 2, 3, SV("abcdefghij"), 0, 10, 2); - test(S("abcde"), 2, 3, SV("abcdefghij"), 0, 11, 2); - test(S("abcde"), 2, 3, SV("abcdefghij"), 1, 0, 3); - test(S("abcde"), 2, 3, SV("abcdefghij"), 1, 1, 1); - test(S("abcde"), 2, 3, SV("abcdefghij"), 1, 4, 1); - test(S("abcde"), 2, 3, SV("abcdefghij"), 1, 8, 1); - test(S("abcde"), 2, 3, SV("abcdefghij"), 1, 9, 1); - test(S("abcde"), 2, 3, SV("abcdefghij"), 1, 10, 1); - test(S("abcde"), 2, 3, SV("abcdefghij"), 5, 0, 3); - test(S("abcde"), 2, 3, SV("abcdefghij"), 5, 1, -3); - test(S("abcde"), 2, 3, SV("abcdefghij"), 5, 2, -3); - test(S("abcde"), 2, 3, SV("abcdefghij"), 5, 4, -3); - test(S("abcde"), 2, 3, SV("abcdefghij"), 5, 5, -3); - test(S("abcde"), 2, 3, SV("abcdefghij"), 5, 6, -3); - test(S("abcde"), 2, 3, SV("abcdefghij"), 9, 0, 3); - test(S("abcde"), 2, 3, SV("abcdefghij"), 9, 1, -7); - test(S("abcde"), 2, 3, SV("abcdefghij"), 9, 2, -7); - test(S("abcde"), 2, 3, SV("abcdefghij"), 10, 0, 3); - test(S("abcde"), 2, 3, SV("abcdefghij"), 10, 1, 3); - test(S("abcde"), 2, 3, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 0, 0, 3); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 0, 1, 2); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 0, 10, 2); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 0, 19, 2); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 0, 20, 2); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 0, 21, 2); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 1, 0, 3); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 1, 1, 1); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 1, 9, 1); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 1, 18, 1); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 1, 19, 1); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 1, 20, 1); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 10, 0, 3); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 10, 1, -8); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 10, 5, -8); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 10, 9, -8); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 10, 10, -8); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 10, 11, -8); -} - -template <class S, class SV> -void test14() -{ - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 19, 0, 3); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 19, 1, -17); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 19, 2, -17); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 20, 0, 3); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 20, 1, 3); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 2, 4, SV(""), 0, 0, 3); - test(S("abcde"), 2, 4, SV(""), 0, 1, 3); - test(S("abcde"), 2, 4, SV(""), 1, 0, 0); - test(S("abcde"), 2, 4, SV("abcde"), 0, 0, 3); - test(S("abcde"), 2, 4, SV("abcde"), 0, 1, 2); - test(S("abcde"), 2, 4, SV("abcde"), 0, 2, 2); - test(S("abcde"), 2, 4, SV("abcde"), 0, 4, 2); - test(S("abcde"), 2, 4, SV("abcde"), 0, 5, 2); - test(S("abcde"), 2, 4, SV("abcde"), 0, 6, 2); - test(S("abcde"), 2, 4, SV("abcde"), 1, 0, 3); - test(S("abcde"), 2, 4, SV("abcde"), 1, 1, 1); - test(S("abcde"), 2, 4, SV("abcde"), 1, 2, 1); - test(S("abcde"), 2, 4, SV("abcde"), 1, 3, 1); - test(S("abcde"), 2, 4, SV("abcde"), 1, 4, 1); - test(S("abcde"), 2, 4, SV("abcde"), 1, 5, 1); - test(S("abcde"), 2, 4, SV("abcde"), 2, 0, 3); - test(S("abcde"), 2, 4, SV("abcde"), 2, 1, 2); - test(S("abcde"), 2, 4, SV("abcde"), 2, 2, 1); - test(S("abcde"), 2, 4, SV("abcde"), 2, 3, 0); - test(S("abcde"), 2, 4, SV("abcde"), 2, 4, 0); - test(S("abcde"), 2, 4, SV("abcde"), 4, 0, 3); - test(S("abcde"), 2, 4, SV("abcde"), 4, 1, -2); - test(S("abcde"), 2, 4, SV("abcde"), 4, 2, -2); - test(S("abcde"), 2, 4, SV("abcde"), 5, 0, 3); - test(S("abcde"), 2, 4, SV("abcde"), 5, 1, 3); - test(S("abcde"), 2, 4, SV("abcde"), 6, 0, 0); - test(S("abcde"), 2, 4, SV("abcdefghij"), 0, 0, 3); - test(S("abcde"), 2, 4, SV("abcdefghij"), 0, 1, 2); - test(S("abcde"), 2, 4, SV("abcdefghij"), 0, 5, 2); - test(S("abcde"), 2, 4, SV("abcdefghij"), 0, 9, 2); - test(S("abcde"), 2, 4, SV("abcdefghij"), 0, 10, 2); - test(S("abcde"), 2, 4, SV("abcdefghij"), 0, 11, 2); - test(S("abcde"), 2, 4, SV("abcdefghij"), 1, 0, 3); - test(S("abcde"), 2, 4, SV("abcdefghij"), 1, 1, 1); - test(S("abcde"), 2, 4, SV("abcdefghij"), 1, 4, 1); - test(S("abcde"), 2, 4, SV("abcdefghij"), 1, 8, 1); - test(S("abcde"), 2, 4, SV("abcdefghij"), 1, 9, 1); - test(S("abcde"), 2, 4, SV("abcdefghij"), 1, 10, 1); - test(S("abcde"), 2, 4, SV("abcdefghij"), 5, 0, 3); - test(S("abcde"), 2, 4, SV("abcdefghij"), 5, 1, -3); - test(S("abcde"), 2, 4, SV("abcdefghij"), 5, 2, -3); - test(S("abcde"), 2, 4, SV("abcdefghij"), 5, 4, -3); - test(S("abcde"), 2, 4, SV("abcdefghij"), 5, 5, -3); - test(S("abcde"), 2, 4, SV("abcdefghij"), 5, 6, -3); - test(S("abcde"), 2, 4, SV("abcdefghij"), 9, 0, 3); - test(S("abcde"), 2, 4, SV("abcdefghij"), 9, 1, -7); - test(S("abcde"), 2, 4, SV("abcdefghij"), 9, 2, -7); - test(S("abcde"), 2, 4, SV("abcdefghij"), 10, 0, 3); - test(S("abcde"), 2, 4, SV("abcdefghij"), 10, 1, 3); - test(S("abcde"), 2, 4, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 0, 0, 3); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 0, 1, 2); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 0, 10, 2); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 0, 19, 2); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 0, 20, 2); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 0, 21, 2); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 1, 0, 3); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 1, 1, 1); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 1, 9, 1); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 1, 18, 1); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 1, 19, 1); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 1, 20, 1); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 10, 0, 3); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 10, 1, -8); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 10, 5, -8); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 10, 9, -8); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 10, 10, -8); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 10, 11, -8); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 19, 0, 3); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 19, 1, -17); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 19, 2, -17); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 20, 0, 3); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 20, 1, 3); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 4, 0, SV(""), 0, 0, 0); - test(S("abcde"), 4, 0, SV(""), 0, 1, 0); - test(S("abcde"), 4, 0, SV(""), 1, 0, 0); - test(S("abcde"), 4, 0, SV("abcde"), 0, 0, 0); - test(S("abcde"), 4, 0, SV("abcde"), 0, 1, -1); - test(S("abcde"), 4, 0, SV("abcde"), 0, 2, -2); - test(S("abcde"), 4, 0, SV("abcde"), 0, 4, -4); - test(S("abcde"), 4, 0, SV("abcde"), 0, 5, -5); - test(S("abcde"), 4, 0, SV("abcde"), 0, 6, -5); - test(S("abcde"), 4, 0, SV("abcde"), 1, 0, 0); - test(S("abcde"), 4, 0, SV("abcde"), 1, 1, -1); - test(S("abcde"), 4, 0, SV("abcde"), 1, 2, -2); - test(S("abcde"), 4, 0, SV("abcde"), 1, 3, -3); - test(S("abcde"), 4, 0, SV("abcde"), 1, 4, -4); - test(S("abcde"), 4, 0, SV("abcde"), 1, 5, -4); - test(S("abcde"), 4, 0, SV("abcde"), 2, 0, 0); - test(S("abcde"), 4, 0, SV("abcde"), 2, 1, -1); - test(S("abcde"), 4, 0, SV("abcde"), 2, 2, -2); - test(S("abcde"), 4, 0, SV("abcde"), 2, 3, -3); - test(S("abcde"), 4, 0, SV("abcde"), 2, 4, -3); -} - -template <class S, class SV> -void test15() -{ - test(S("abcde"), 4, 0, SV("abcde"), 4, 0, 0); - test(S("abcde"), 4, 0, SV("abcde"), 4, 1, -1); - test(S("abcde"), 4, 0, SV("abcde"), 4, 2, -1); - test(S("abcde"), 4, 0, SV("abcde"), 5, 0, 0); - test(S("abcde"), 4, 0, SV("abcde"), 5, 1, 0); - test(S("abcde"), 4, 0, SV("abcde"), 6, 0, 0); - test(S("abcde"), 4, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcde"), 4, 0, SV("abcdefghij"), 0, 1, -1); - test(S("abcde"), 4, 0, SV("abcdefghij"), 0, 5, -5); - test(S("abcde"), 4, 0, SV("abcdefghij"), 0, 9, -9); - test(S("abcde"), 4, 0, SV("abcdefghij"), 0, 10, -10); - test(S("abcde"), 4, 0, SV("abcdefghij"), 0, 11, -10); - test(S("abcde"), 4, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcde"), 4, 0, SV("abcdefghij"), 1, 1, -1); - test(S("abcde"), 4, 0, SV("abcdefghij"), 1, 4, -4); - test(S("abcde"), 4, 0, SV("abcdefghij"), 1, 8, -8); - test(S("abcde"), 4, 0, SV("abcdefghij"), 1, 9, -9); - test(S("abcde"), 4, 0, SV("abcdefghij"), 1, 10, -9); - test(S("abcde"), 4, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcde"), 4, 0, SV("abcdefghij"), 5, 1, -1); - test(S("abcde"), 4, 0, SV("abcdefghij"), 5, 2, -2); - test(S("abcde"), 4, 0, SV("abcdefghij"), 5, 4, -4); - test(S("abcde"), 4, 0, SV("abcdefghij"), 5, 5, -5); - test(S("abcde"), 4, 0, SV("abcdefghij"), 5, 6, -5); - test(S("abcde"), 4, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcde"), 4, 0, SV("abcdefghij"), 9, 1, -1); - test(S("abcde"), 4, 0, SV("abcdefghij"), 9, 2, -1); - test(S("abcde"), 4, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcde"), 4, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcde"), 4, 0, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 4, 1, SV(""), 0, 0, 1); - test(S("abcde"), 4, 1, SV(""), 0, 1, 1); - test(S("abcde"), 4, 1, SV(""), 1, 0, 0); - test(S("abcde"), 4, 1, SV("abcde"), 0, 0, 1); - test(S("abcde"), 4, 1, SV("abcde"), 0, 1, 4); - test(S("abcde"), 4, 1, SV("abcde"), 0, 2, 4); - test(S("abcde"), 4, 1, SV("abcde"), 0, 4, 4); - test(S("abcde"), 4, 1, SV("abcde"), 0, 5, 4); - test(S("abcde"), 4, 1, SV("abcde"), 0, 6, 4); - test(S("abcde"), 4, 1, SV("abcde"), 1, 0, 1); - test(S("abcde"), 4, 1, SV("abcde"), 1, 1, 3); - test(S("abcde"), 4, 1, SV("abcde"), 1, 2, 3); - test(S("abcde"), 4, 1, SV("abcde"), 1, 3, 3); - test(S("abcde"), 4, 1, SV("abcde"), 1, 4, 3); - test(S("abcde"), 4, 1, SV("abcde"), 1, 5, 3); - test(S("abcde"), 4, 1, SV("abcde"), 2, 0, 1); - test(S("abcde"), 4, 1, SV("abcde"), 2, 1, 2); - test(S("abcde"), 4, 1, SV("abcde"), 2, 2, 2); - test(S("abcde"), 4, 1, SV("abcde"), 2, 3, 2); - test(S("abcde"), 4, 1, SV("abcde"), 2, 4, 2); - test(S("abcde"), 4, 1, SV("abcde"), 4, 0, 1); - test(S("abcde"), 4, 1, SV("abcde"), 4, 1, 0); - test(S("abcde"), 4, 1, SV("abcde"), 4, 2, 0); - test(S("abcde"), 4, 1, SV("abcde"), 5, 0, 1); - test(S("abcde"), 4, 1, SV("abcde"), 5, 1, 1); - test(S("abcde"), 4, 1, SV("abcde"), 6, 0, 0); - test(S("abcde"), 4, 1, SV("abcdefghij"), 0, 0, 1); - test(S("abcde"), 4, 1, SV("abcdefghij"), 0, 1, 4); - test(S("abcde"), 4, 1, SV("abcdefghij"), 0, 5, 4); - test(S("abcde"), 4, 1, SV("abcdefghij"), 0, 9, 4); - test(S("abcde"), 4, 1, SV("abcdefghij"), 0, 10, 4); - test(S("abcde"), 4, 1, SV("abcdefghij"), 0, 11, 4); - test(S("abcde"), 4, 1, SV("abcdefghij"), 1, 0, 1); - test(S("abcde"), 4, 1, SV("abcdefghij"), 1, 1, 3); - test(S("abcde"), 4, 1, SV("abcdefghij"), 1, 4, 3); - test(S("abcde"), 4, 1, SV("abcdefghij"), 1, 8, 3); - test(S("abcde"), 4, 1, SV("abcdefghij"), 1, 9, 3); - test(S("abcde"), 4, 1, SV("abcdefghij"), 1, 10, 3); - test(S("abcde"), 4, 1, SV("abcdefghij"), 5, 0, 1); - test(S("abcde"), 4, 1, SV("abcdefghij"), 5, 1, -1); - test(S("abcde"), 4, 1, SV("abcdefghij"), 5, 2, -1); - test(S("abcde"), 4, 1, SV("abcdefghij"), 5, 4, -1); - test(S("abcde"), 4, 1, SV("abcdefghij"), 5, 5, -1); - test(S("abcde"), 4, 1, SV("abcdefghij"), 5, 6, -1); - test(S("abcde"), 4, 1, SV("abcdefghij"), 9, 0, 1); - test(S("abcde"), 4, 1, SV("abcdefghij"), 9, 1, -5); -} - -template <class S, class SV> -void test16() -{ - test(S("abcde"), 4, 1, SV("abcdefghij"), 9, 2, -5); - test(S("abcde"), 4, 1, SV("abcdefghij"), 10, 0, 1); - test(S("abcde"), 4, 1, SV("abcdefghij"), 10, 1, 1); - test(S("abcde"), 4, 1, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 0, 1, 4); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 0, 10, 4); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 0, 19, 4); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 0, 20, 4); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 0, 21, 4); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 1, 1, 3); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 1, 9, 3); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 1, 18, 3); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 1, 19, 3); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 1, 20, 3); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 10, 1, -6); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 10, 5, -6); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 10, 9, -6); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 10, 10, -6); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 10, 11, -6); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 19, 1, -15); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 19, 2, -15); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 4, 2, SV(""), 0, 0, 1); - test(S("abcde"), 4, 2, SV(""), 0, 1, 1); - test(S("abcde"), 4, 2, SV(""), 1, 0, 0); - test(S("abcde"), 4, 2, SV("abcde"), 0, 0, 1); - test(S("abcde"), 4, 2, SV("abcde"), 0, 1, 4); - test(S("abcde"), 4, 2, SV("abcde"), 0, 2, 4); - test(S("abcde"), 4, 2, SV("abcde"), 0, 4, 4); - test(S("abcde"), 4, 2, SV("abcde"), 0, 5, 4); - test(S("abcde"), 4, 2, SV("abcde"), 0, 6, 4); - test(S("abcde"), 4, 2, SV("abcde"), 1, 0, 1); - test(S("abcde"), 4, 2, SV("abcde"), 1, 1, 3); - test(S("abcde"), 4, 2, SV("abcde"), 1, 2, 3); - test(S("abcde"), 4, 2, SV("abcde"), 1, 3, 3); - test(S("abcde"), 4, 2, SV("abcde"), 1, 4, 3); - test(S("abcde"), 4, 2, SV("abcde"), 1, 5, 3); - test(S("abcde"), 4, 2, SV("abcde"), 2, 0, 1); - test(S("abcde"), 4, 2, SV("abcde"), 2, 1, 2); - test(S("abcde"), 4, 2, SV("abcde"), 2, 2, 2); - test(S("abcde"), 4, 2, SV("abcde"), 2, 3, 2); - test(S("abcde"), 4, 2, SV("abcde"), 2, 4, 2); - test(S("abcde"), 4, 2, SV("abcde"), 4, 0, 1); - test(S("abcde"), 4, 2, SV("abcde"), 4, 1, 0); - test(S("abcde"), 4, 2, SV("abcde"), 4, 2, 0); - test(S("abcde"), 4, 2, SV("abcde"), 5, 0, 1); - test(S("abcde"), 4, 2, SV("abcde"), 5, 1, 1); - test(S("abcde"), 4, 2, SV("abcde"), 6, 0, 0); - test(S("abcde"), 4, 2, SV("abcdefghij"), 0, 0, 1); - test(S("abcde"), 4, 2, SV("abcdefghij"), 0, 1, 4); - test(S("abcde"), 4, 2, SV("abcdefghij"), 0, 5, 4); - test(S("abcde"), 4, 2, SV("abcdefghij"), 0, 9, 4); - test(S("abcde"), 4, 2, SV("abcdefghij"), 0, 10, 4); - test(S("abcde"), 4, 2, SV("abcdefghij"), 0, 11, 4); - test(S("abcde"), 4, 2, SV("abcdefghij"), 1, 0, 1); - test(S("abcde"), 4, 2, SV("abcdefghij"), 1, 1, 3); - test(S("abcde"), 4, 2, SV("abcdefghij"), 1, 4, 3); - test(S("abcde"), 4, 2, SV("abcdefghij"), 1, 8, 3); - test(S("abcde"), 4, 2, SV("abcdefghij"), 1, 9, 3); - test(S("abcde"), 4, 2, SV("abcdefghij"), 1, 10, 3); - test(S("abcde"), 4, 2, SV("abcdefghij"), 5, 0, 1); - test(S("abcde"), 4, 2, SV("abcdefghij"), 5, 1, -1); - test(S("abcde"), 4, 2, SV("abcdefghij"), 5, 2, -1); - test(S("abcde"), 4, 2, SV("abcdefghij"), 5, 4, -1); - test(S("abcde"), 4, 2, SV("abcdefghij"), 5, 5, -1); - test(S("abcde"), 4, 2, SV("abcdefghij"), 5, 6, -1); - test(S("abcde"), 4, 2, SV("abcdefghij"), 9, 0, 1); - test(S("abcde"), 4, 2, SV("abcdefghij"), 9, 1, -5); - test(S("abcde"), 4, 2, SV("abcdefghij"), 9, 2, -5); - test(S("abcde"), 4, 2, SV("abcdefghij"), 10, 0, 1); - test(S("abcde"), 4, 2, SV("abcdefghij"), 10, 1, 1); - test(S("abcde"), 4, 2, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 0, 1, 4); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 0, 10, 4); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 0, 19, 4); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 0, 20, 4); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 0, 21, 4); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 1, 1, 3); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 1, 9, 3); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 1, 18, 3); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 1, 19, 3); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 1, 20, 3); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 10, 1, -6); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 10, 5, -6); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 10, 9, -6); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 10, 10, -6); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 10, 11, -6); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 19, 1, -15); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 19, 2, -15); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 20, 0, 1); -} - -template <class S, class SV> -void test17() -{ - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 5, 0, SV(""), 0, 0, 0); - test(S("abcde"), 5, 0, SV(""), 0, 1, 0); - test(S("abcde"), 5, 0, SV(""), 1, 0, 0); - test(S("abcde"), 5, 0, SV("abcde"), 0, 0, 0); - test(S("abcde"), 5, 0, SV("abcde"), 0, 1, -1); - test(S("abcde"), 5, 0, SV("abcde"), 0, 2, -2); - test(S("abcde"), 5, 0, SV("abcde"), 0, 4, -4); - test(S("abcde"), 5, 0, SV("abcde"), 0, 5, -5); - test(S("abcde"), 5, 0, SV("abcde"), 0, 6, -5); - test(S("abcde"), 5, 0, SV("abcde"), 1, 0, 0); - test(S("abcde"), 5, 0, SV("abcde"), 1, 1, -1); - test(S("abcde"), 5, 0, SV("abcde"), 1, 2, -2); - test(S("abcde"), 5, 0, SV("abcde"), 1, 3, -3); - test(S("abcde"), 5, 0, SV("abcde"), 1, 4, -4); - test(S("abcde"), 5, 0, SV("abcde"), 1, 5, -4); - test(S("abcde"), 5, 0, SV("abcde"), 2, 0, 0); - test(S("abcde"), 5, 0, SV("abcde"), 2, 1, -1); - test(S("abcde"), 5, 0, SV("abcde"), 2, 2, -2); - test(S("abcde"), 5, 0, SV("abcde"), 2, 3, -3); - test(S("abcde"), 5, 0, SV("abcde"), 2, 4, -3); - test(S("abcde"), 5, 0, SV("abcde"), 4, 0, 0); - test(S("abcde"), 5, 0, SV("abcde"), 4, 1, -1); - test(S("abcde"), 5, 0, SV("abcde"), 4, 2, -1); - test(S("abcde"), 5, 0, SV("abcde"), 5, 0, 0); - test(S("abcde"), 5, 0, SV("abcde"), 5, 1, 0); - test(S("abcde"), 5, 0, SV("abcde"), 6, 0, 0); - test(S("abcde"), 5, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcde"), 5, 0, SV("abcdefghij"), 0, 1, -1); - test(S("abcde"), 5, 0, SV("abcdefghij"), 0, 5, -5); - test(S("abcde"), 5, 0, SV("abcdefghij"), 0, 9, -9); - test(S("abcde"), 5, 0, SV("abcdefghij"), 0, 10, -10); - test(S("abcde"), 5, 0, SV("abcdefghij"), 0, 11, -10); - test(S("abcde"), 5, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcde"), 5, 0, SV("abcdefghij"), 1, 1, -1); - test(S("abcde"), 5, 0, SV("abcdefghij"), 1, 4, -4); - test(S("abcde"), 5, 0, SV("abcdefghij"), 1, 8, -8); - test(S("abcde"), 5, 0, SV("abcdefghij"), 1, 9, -9); - test(S("abcde"), 5, 0, SV("abcdefghij"), 1, 10, -9); - test(S("abcde"), 5, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcde"), 5, 0, SV("abcdefghij"), 5, 1, -1); - test(S("abcde"), 5, 0, SV("abcdefghij"), 5, 2, -2); - test(S("abcde"), 5, 0, SV("abcdefghij"), 5, 4, -4); - test(S("abcde"), 5, 0, SV("abcdefghij"), 5, 5, -5); - test(S("abcde"), 5, 0, SV("abcdefghij"), 5, 6, -5); - test(S("abcde"), 5, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcde"), 5, 0, SV("abcdefghij"), 9, 1, -1); - test(S("abcde"), 5, 0, SV("abcdefghij"), 9, 2, -1); - test(S("abcde"), 5, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcde"), 5, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcde"), 5, 0, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 5, 1, SV(""), 0, 0, 0); - test(S("abcde"), 5, 1, SV(""), 0, 1, 0); - test(S("abcde"), 5, 1, SV(""), 1, 0, 0); - test(S("abcde"), 5, 1, SV("abcde"), 0, 0, 0); - test(S("abcde"), 5, 1, SV("abcde"), 0, 1, -1); - test(S("abcde"), 5, 1, SV("abcde"), 0, 2, -2); - test(S("abcde"), 5, 1, SV("abcde"), 0, 4, -4); - test(S("abcde"), 5, 1, SV("abcde"), 0, 5, -5); - test(S("abcde"), 5, 1, SV("abcde"), 0, 6, -5); - test(S("abcde"), 5, 1, SV("abcde"), 1, 0, 0); - test(S("abcde"), 5, 1, SV("abcde"), 1, 1, -1); - test(S("abcde"), 5, 1, SV("abcde"), 1, 2, -2); - test(S("abcde"), 5, 1, SV("abcde"), 1, 3, -3); - test(S("abcde"), 5, 1, SV("abcde"), 1, 4, -4); - test(S("abcde"), 5, 1, SV("abcde"), 1, 5, -4); - test(S("abcde"), 5, 1, SV("abcde"), 2, 0, 0); - test(S("abcde"), 5, 1, SV("abcde"), 2, 1, -1); - test(S("abcde"), 5, 1, SV("abcde"), 2, 2, -2); - test(S("abcde"), 5, 1, SV("abcde"), 2, 3, -3); - test(S("abcde"), 5, 1, SV("abcde"), 2, 4, -3); - test(S("abcde"), 5, 1, SV("abcde"), 4, 0, 0); - test(S("abcde"), 5, 1, SV("abcde"), 4, 1, -1); - test(S("abcde"), 5, 1, SV("abcde"), 4, 2, -1); - test(S("abcde"), 5, 1, SV("abcde"), 5, 0, 0); -} - -template <class S, class SV> -void test18() -{ - test(S("abcde"), 5, 1, SV("abcde"), 5, 1, 0); - test(S("abcde"), 5, 1, SV("abcde"), 6, 0, 0); - test(S("abcde"), 5, 1, SV("abcdefghij"), 0, 0, 0); - test(S("abcde"), 5, 1, SV("abcdefghij"), 0, 1, -1); - test(S("abcde"), 5, 1, SV("abcdefghij"), 0, 5, -5); - test(S("abcde"), 5, 1, SV("abcdefghij"), 0, 9, -9); - test(S("abcde"), 5, 1, SV("abcdefghij"), 0, 10, -10); - test(S("abcde"), 5, 1, SV("abcdefghij"), 0, 11, -10); - test(S("abcde"), 5, 1, SV("abcdefghij"), 1, 0, 0); - test(S("abcde"), 5, 1, SV("abcdefghij"), 1, 1, -1); - test(S("abcde"), 5, 1, SV("abcdefghij"), 1, 4, -4); - test(S("abcde"), 5, 1, SV("abcdefghij"), 1, 8, -8); - test(S("abcde"), 5, 1, SV("abcdefghij"), 1, 9, -9); - test(S("abcde"), 5, 1, SV("abcdefghij"), 1, 10, -9); - test(S("abcde"), 5, 1, SV("abcdefghij"), 5, 0, 0); - test(S("abcde"), 5, 1, SV("abcdefghij"), 5, 1, -1); - test(S("abcde"), 5, 1, SV("abcdefghij"), 5, 2, -2); - test(S("abcde"), 5, 1, SV("abcdefghij"), 5, 4, -4); - test(S("abcde"), 5, 1, SV("abcdefghij"), 5, 5, -5); - test(S("abcde"), 5, 1, SV("abcdefghij"), 5, 6, -5); - test(S("abcde"), 5, 1, SV("abcdefghij"), 9, 0, 0); - test(S("abcde"), 5, 1, SV("abcdefghij"), 9, 1, -1); - test(S("abcde"), 5, 1, SV("abcdefghij"), 9, 2, -1); - test(S("abcde"), 5, 1, SV("abcdefghij"), 10, 0, 0); - test(S("abcde"), 5, 1, SV("abcdefghij"), 10, 1, 0); - test(S("abcde"), 5, 1, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 6, 0, SV(""), 0, 0, 0); - test(S("abcde"), 6, 0, SV(""), 0, 1, 0); - test(S("abcde"), 6, 0, SV(""), 1, 0, 0); - test(S("abcde"), 6, 0, SV("abcde"), 0, 0, 0); - test(S("abcde"), 6, 0, SV("abcde"), 0, 1, 0); - test(S("abcde"), 6, 0, SV("abcde"), 0, 2, 0); - test(S("abcde"), 6, 0, SV("abcde"), 0, 4, 0); - test(S("abcde"), 6, 0, SV("abcde"), 0, 5, 0); - test(S("abcde"), 6, 0, SV("abcde"), 0, 6, 0); - test(S("abcde"), 6, 0, SV("abcde"), 1, 0, 0); - test(S("abcde"), 6, 0, SV("abcde"), 1, 1, 0); - test(S("abcde"), 6, 0, SV("abcde"), 1, 2, 0); - test(S("abcde"), 6, 0, SV("abcde"), 1, 3, 0); - test(S("abcde"), 6, 0, SV("abcde"), 1, 4, 0); - test(S("abcde"), 6, 0, SV("abcde"), 1, 5, 0); - test(S("abcde"), 6, 0, SV("abcde"), 2, 0, 0); - test(S("abcde"), 6, 0, SV("abcde"), 2, 1, 0); - test(S("abcde"), 6, 0, SV("abcde"), 2, 2, 0); - test(S("abcde"), 6, 0, SV("abcde"), 2, 3, 0); - test(S("abcde"), 6, 0, SV("abcde"), 2, 4, 0); - test(S("abcde"), 6, 0, SV("abcde"), 4, 0, 0); - test(S("abcde"), 6, 0, SV("abcde"), 4, 1, 0); - test(S("abcde"), 6, 0, SV("abcde"), 4, 2, 0); - test(S("abcde"), 6, 0, SV("abcde"), 5, 0, 0); - test(S("abcde"), 6, 0, SV("abcde"), 5, 1, 0); - test(S("abcde"), 6, 0, SV("abcde"), 6, 0, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 0, 1, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 0, 5, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 0, 9, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 0, 10, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 0, 11, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 1, 1, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 1, 4, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 1, 8, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 1, 9, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 1, 10, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 5, 1, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 5, 2, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 5, 4, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 5, 5, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 5, 6, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 9, 1, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 9, 2, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 11, 0, 0); -} - -template <class S, class SV> -void test19() -{ - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 0, 1, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 0, 10, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 0, 19, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 0, 20, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 0, 21, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 1, 1, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 1, 9, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 1, 18, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 1, 19, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 1, 20, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 10, 1, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 10, 5, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 10, 9, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 10, 10, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 10, 11, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 19, 1, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 19, 2, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 0, 0, SV(""), 0, 0, 0); - test(S("abcdefghij"), 0, 0, SV(""), 0, 1, 0); - test(S("abcdefghij"), 0, 0, SV(""), 1, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcde"), 0, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcde"), 0, 1, -1); - test(S("abcdefghij"), 0, 0, SV("abcde"), 0, 2, -2); - test(S("abcdefghij"), 0, 0, SV("abcde"), 0, 4, -4); - test(S("abcdefghij"), 0, 0, SV("abcde"), 0, 5, -5); - test(S("abcdefghij"), 0, 0, SV("abcde"), 0, 6, -5); - test(S("abcdefghij"), 0, 0, SV("abcde"), 1, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcde"), 1, 1, -1); - test(S("abcdefghij"), 0, 0, SV("abcde"), 1, 2, -2); - test(S("abcdefghij"), 0, 0, SV("abcde"), 1, 3, -3); - test(S("abcdefghij"), 0, 0, SV("abcde"), 1, 4, -4); - test(S("abcdefghij"), 0, 0, SV("abcde"), 1, 5, -4); - test(S("abcdefghij"), 0, 0, SV("abcde"), 2, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcde"), 2, 1, -1); - test(S("abcdefghij"), 0, 0, SV("abcde"), 2, 2, -2); - test(S("abcdefghij"), 0, 0, SV("abcde"), 2, 3, -3); - test(S("abcdefghij"), 0, 0, SV("abcde"), 2, 4, -3); - test(S("abcdefghij"), 0, 0, SV("abcde"), 4, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcde"), 4, 1, -1); - test(S("abcdefghij"), 0, 0, SV("abcde"), 4, 2, -1); - test(S("abcdefghij"), 0, 0, SV("abcde"), 5, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcde"), 5, 1, 0); - test(S("abcdefghij"), 0, 0, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 0, 1, -1); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 0, 5, -5); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 0, 9, -9); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 0, 10, -10); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 0, 11, -10); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 1, 4, -4); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 1, 8, -8); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 1, 9, -9); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 1, 10, -9); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 5, 1, -1); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 5, 2, -2); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 9, 1, -1); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 9, 2, -1); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 0, 1, SV(""), 0, 0, 1); - test(S("abcdefghij"), 0, 1, SV(""), 0, 1, 1); -} - -template <class S, class SV> -void test20() -{ - test(S("abcdefghij"), 0, 1, SV(""), 1, 0, 0); - test(S("abcdefghij"), 0, 1, SV("abcde"), 0, 0, 1); - test(S("abcdefghij"), 0, 1, SV("abcde"), 0, 1, 0); - test(S("abcdefghij"), 0, 1, SV("abcde"), 0, 2, -1); - test(S("abcdefghij"), 0, 1, SV("abcde"), 0, 4, -3); - test(S("abcdefghij"), 0, 1, SV("abcde"), 0, 5, -4); - test(S("abcdefghij"), 0, 1, SV("abcde"), 0, 6, -4); - test(S("abcdefghij"), 0, 1, SV("abcde"), 1, 0, 1); - test(S("abcdefghij"), 0, 1, SV("abcde"), 1, 1, -1); - test(S("abcdefghij"), 0, 1, SV("abcde"), 1, 2, -1); - test(S("abcdefghij"), 0, 1, SV("abcde"), 1, 3, -1); - test(S("abcdefghij"), 0, 1, SV("abcde"), 1, 4, -1); - test(S("abcdefghij"), 0, 1, SV("abcde"), 1, 5, -1); - test(S("abcdefghij"), 0, 1, SV("abcde"), 2, 0, 1); - test(S("abcdefghij"), 0, 1, SV("abcde"), 2, 1, -2); - test(S("abcdefghij"), 0, 1, SV("abcde"), 2, 2, -2); - test(S("abcdefghij"), 0, 1, SV("abcde"), 2, 3, -2); - test(S("abcdefghij"), 0, 1, SV("abcde"), 2, 4, -2); - test(S("abcdefghij"), 0, 1, SV("abcde"), 4, 0, 1); - test(S("abcdefghij"), 0, 1, SV("abcde"), 4, 1, -4); - test(S("abcdefghij"), 0, 1, SV("abcde"), 4, 2, -4); - test(S("abcdefghij"), 0, 1, SV("abcde"), 5, 0, 1); - test(S("abcdefghij"), 0, 1, SV("abcde"), 5, 1, 1); - test(S("abcdefghij"), 0, 1, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 0, 0, 1); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 0, 1, 0); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 0, 5, -4); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 0, 9, -8); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 0, 10, -9); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 0, 11, -9); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 1, 0, 1); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 1, 4, -1); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 1, 8, -1); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 1, 9, -1); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 1, 10, -1); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 5, 0, 1); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 5, 1, -5); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 5, 2, -5); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 5, 4, -5); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 9, 0, 1); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 9, 1, -9); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 9, 2, -9); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 10, 0, 1); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 10, 1, 1); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 1, 0); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 10, -9); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 19, -18); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 20, -19); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 21, -19); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 0, 5, SV(""), 0, 0, 5); - test(S("abcdefghij"), 0, 5, SV(""), 0, 1, 5); - test(S("abcdefghij"), 0, 5, SV(""), 1, 0, 0); - test(S("abcdefghij"), 0, 5, SV("abcde"), 0, 0, 5); - test(S("abcdefghij"), 0, 5, SV("abcde"), 0, 1, 4); - test(S("abcdefghij"), 0, 5, SV("abcde"), 0, 2, 3); - test(S("abcdefghij"), 0, 5, SV("abcde"), 0, 4, 1); - test(S("abcdefghij"), 0, 5, SV("abcde"), 0, 5, 0); - test(S("abcdefghij"), 0, 5, SV("abcde"), 0, 6, 0); - test(S("abcdefghij"), 0, 5, SV("abcde"), 1, 0, 5); - test(S("abcdefghij"), 0, 5, SV("abcde"), 1, 1, -1); - test(S("abcdefghij"), 0, 5, SV("abcde"), 1, 2, -1); - test(S("abcdefghij"), 0, 5, SV("abcde"), 1, 3, -1); - test(S("abcdefghij"), 0, 5, SV("abcde"), 1, 4, -1); - test(S("abcdefghij"), 0, 5, SV("abcde"), 1, 5, -1); - test(S("abcdefghij"), 0, 5, SV("abcde"), 2, 0, 5); - test(S("abcdefghij"), 0, 5, SV("abcde"), 2, 1, -2); - test(S("abcdefghij"), 0, 5, SV("abcde"), 2, 2, -2); - test(S("abcdefghij"), 0, 5, SV("abcde"), 2, 3, -2); - test(S("abcdefghij"), 0, 5, SV("abcde"), 2, 4, -2); - test(S("abcdefghij"), 0, 5, SV("abcde"), 4, 0, 5); - test(S("abcdefghij"), 0, 5, SV("abcde"), 4, 1, -4); - test(S("abcdefghij"), 0, 5, SV("abcde"), 4, 2, -4); - test(S("abcdefghij"), 0, 5, SV("abcde"), 5, 0, 5); - test(S("abcdefghij"), 0, 5, SV("abcde"), 5, 1, 5); - test(S("abcdefghij"), 0, 5, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 0, 0, 5); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 0, 1, 4); -} - -template <class S, class SV> -void test21() -{ - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 0, 5, 0); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 0, 9, -4); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 0, 10, -5); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 0, 11, -5); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 1, 0, 5); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 1, 4, -1); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 1, 8, -1); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 1, 9, -1); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 1, 10, -1); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 5, 0, 5); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 5, 1, -5); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 5, 2, -5); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 5, 4, -5); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 9, 0, 5); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 9, 1, -9); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 9, 2, -9); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 10, 0, 5); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 10, 1, 5); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 0, 5); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 1, 4); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 10, -5); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 19, -14); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 20, -15); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 21, -15); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 0, 5); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 0, 5); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 19, 0, 5); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 20, 0, 5); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 20, 1, 5); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 0, 9, SV(""), 0, 0, 9); - test(S("abcdefghij"), 0, 9, SV(""), 0, 1, 9); - test(S("abcdefghij"), 0, 9, SV(""), 1, 0, 0); - test(S("abcdefghij"), 0, 9, SV("abcde"), 0, 0, 9); - test(S("abcdefghij"), 0, 9, SV("abcde"), 0, 1, 8); - test(S("abcdefghij"), 0, 9, SV("abcde"), 0, 2, 7); - test(S("abcdefghij"), 0, 9, SV("abcde"), 0, 4, 5); - test(S("abcdefghij"), 0, 9, SV("abcde"), 0, 5, 4); - test(S("abcdefghij"), 0, 9, SV("abcde"), 0, 6, 4); - test(S("abcdefghij"), 0, 9, SV("abcde"), 1, 0, 9); - test(S("abcdefghij"), 0, 9, SV("abcde"), 1, 1, -1); - test(S("abcdefghij"), 0, 9, SV("abcde"), 1, 2, -1); - test(S("abcdefghij"), 0, 9, SV("abcde"), 1, 3, -1); - test(S("abcdefghij"), 0, 9, SV("abcde"), 1, 4, -1); - test(S("abcdefghij"), 0, 9, SV("abcde"), 1, 5, -1); - test(S("abcdefghij"), 0, 9, SV("abcde"), 2, 0, 9); - test(S("abcdefghij"), 0, 9, SV("abcde"), 2, 1, -2); - test(S("abcdefghij"), 0, 9, SV("abcde"), 2, 2, -2); - test(S("abcdefghij"), 0, 9, SV("abcde"), 2, 3, -2); - test(S("abcdefghij"), 0, 9, SV("abcde"), 2, 4, -2); - test(S("abcdefghij"), 0, 9, SV("abcde"), 4, 0, 9); - test(S("abcdefghij"), 0, 9, SV("abcde"), 4, 1, -4); - test(S("abcdefghij"), 0, 9, SV("abcde"), 4, 2, -4); - test(S("abcdefghij"), 0, 9, SV("abcde"), 5, 0, 9); - test(S("abcdefghij"), 0, 9, SV("abcde"), 5, 1, 9); - test(S("abcdefghij"), 0, 9, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 0, 0, 9); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 0, 1, 8); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 0, 5, 4); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 0, 9, 0); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 0, 10, -1); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 0, 11, -1); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 1, 0, 9); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 1, 4, -1); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 1, 8, -1); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 1, 9, -1); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 1, 10, -1); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 5, 0, 9); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 5, 1, -5); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 5, 2, -5); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 5, 4, -5); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 9, 0, 9); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 9, 1, -9); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 9, 2, -9); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 10, 0, 9); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 10, 1, 9); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 0, 0, 9); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 0, 1, 8); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 0, 10, -1); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 0, 19, -10); -} - -template <class S, class SV> -void test22() -{ - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 0, 20, -11); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 0, 21, -11); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 1, 0, 9); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 10, 0, 9); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 19, 0, 9); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 20, 0, 9); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 20, 1, 9); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 0, 10, SV(""), 0, 0, 10); - test(S("abcdefghij"), 0, 10, SV(""), 0, 1, 10); - test(S("abcdefghij"), 0, 10, SV(""), 1, 0, 0); - test(S("abcdefghij"), 0, 10, SV("abcde"), 0, 0, 10); - test(S("abcdefghij"), 0, 10, SV("abcde"), 0, 1, 9); - test(S("abcdefghij"), 0, 10, SV("abcde"), 0, 2, 8); - test(S("abcdefghij"), 0, 10, SV("abcde"), 0, 4, 6); - test(S("abcdefghij"), 0, 10, SV("abcde"), 0, 5, 5); - test(S("abcdefghij"), 0, 10, SV("abcde"), 0, 6, 5); - test(S("abcdefghij"), 0, 10, SV("abcde"), 1, 0, 10); - test(S("abcdefghij"), 0, 10, SV("abcde"), 1, 1, -1); - test(S("abcdefghij"), 0, 10, SV("abcde"), 1, 2, -1); - test(S("abcdefghij"), 0, 10, SV("abcde"), 1, 3, -1); - test(S("abcdefghij"), 0, 10, SV("abcde"), 1, 4, -1); - test(S("abcdefghij"), 0, 10, SV("abcde"), 1, 5, -1); - test(S("abcdefghij"), 0, 10, SV("abcde"), 2, 0, 10); - test(S("abcdefghij"), 0, 10, SV("abcde"), 2, 1, -2); - test(S("abcdefghij"), 0, 10, SV("abcde"), 2, 2, -2); - test(S("abcdefghij"), 0, 10, SV("abcde"), 2, 3, -2); - test(S("abcdefghij"), 0, 10, SV("abcde"), 2, 4, -2); - test(S("abcdefghij"), 0, 10, SV("abcde"), 4, 0, 10); - test(S("abcdefghij"), 0, 10, SV("abcde"), 4, 1, -4); - test(S("abcdefghij"), 0, 10, SV("abcde"), 4, 2, -4); - test(S("abcdefghij"), 0, 10, SV("abcde"), 5, 0, 10); - test(S("abcdefghij"), 0, 10, SV("abcde"), 5, 1, 10); - test(S("abcdefghij"), 0, 10, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 0, 0, 10); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 0, 1, 9); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 0, 5, 5); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 0, 9, 1); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 0, 10, 0); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 0, 11, 0); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 1, 0, 10); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 1, 4, -1); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 1, 8, -1); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 1, 9, -1); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 1, 10, -1); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 5, 0, 10); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 5, 1, -5); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 5, 2, -5); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 5, 4, -5); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 9, 0, 10); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 9, 1, -9); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 9, 2, -9); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 10, 0, 10); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 10, 1, 10); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 0, 10); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 1, 9); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 10, 0); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 19, -9); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 20, -10); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 21, -10); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 0, 10); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 0, 10); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 19, 0, 10); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 20, 0, 10); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 20, 1, 10); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 0, 11, SV(""), 0, 0, 10); - test(S("abcdefghij"), 0, 11, SV(""), 0, 1, 10); - test(S("abcdefghij"), 0, 11, SV(""), 1, 0, 0); - test(S("abcdefghij"), 0, 11, SV("abcde"), 0, 0, 10); - test(S("abcdefghij"), 0, 11, SV("abcde"), 0, 1, 9); - test(S("abcdefghij"), 0, 11, SV("abcde"), 0, 2, 8); -} - -template <class S, class SV> -void test23() -{ - test(S("abcdefghij"), 0, 11, SV("abcde"), 0, 4, 6); - test(S("abcdefghij"), 0, 11, SV("abcde"), 0, 5, 5); - test(S("abcdefghij"), 0, 11, SV("abcde"), 0, 6, 5); - test(S("abcdefghij"), 0, 11, SV("abcde"), 1, 0, 10); - test(S("abcdefghij"), 0, 11, SV("abcde"), 1, 1, -1); - test(S("abcdefghij"), 0, 11, SV("abcde"), 1, 2, -1); - test(S("abcdefghij"), 0, 11, SV("abcde"), 1, 3, -1); - test(S("abcdefghij"), 0, 11, SV("abcde"), 1, 4, -1); - test(S("abcdefghij"), 0, 11, SV("abcde"), 1, 5, -1); - test(S("abcdefghij"), 0, 11, SV("abcde"), 2, 0, 10); - test(S("abcdefghij"), 0, 11, SV("abcde"), 2, 1, -2); - test(S("abcdefghij"), 0, 11, SV("abcde"), 2, 2, -2); - test(S("abcdefghij"), 0, 11, SV("abcde"), 2, 3, -2); - test(S("abcdefghij"), 0, 11, SV("abcde"), 2, 4, -2); - test(S("abcdefghij"), 0, 11, SV("abcde"), 4, 0, 10); - test(S("abcdefghij"), 0, 11, SV("abcde"), 4, 1, -4); - test(S("abcdefghij"), 0, 11, SV("abcde"), 4, 2, -4); - test(S("abcdefghij"), 0, 11, SV("abcde"), 5, 0, 10); - test(S("abcdefghij"), 0, 11, SV("abcde"), 5, 1, 10); - test(S("abcdefghij"), 0, 11, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 0, 0, 10); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 0, 1, 9); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 0, 5, 5); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 0, 9, 1); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 0, 10, 0); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 0, 11, 0); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 1, 0, 10); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 1, 4, -1); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 1, 8, -1); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 1, 9, -1); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 1, 10, -1); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 5, 0, 10); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 5, 1, -5); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 5, 2, -5); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 5, 4, -5); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 9, 0, 10); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 9, 1, -9); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 9, 2, -9); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 10, 0, 10); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 10, 1, 10); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 0, 0, 10); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 0, 1, 9); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 0, 10, 0); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 0, 19, -9); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 0, 20, -10); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 0, 21, -10); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 1, 0, 10); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 10, 0, 10); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 19, 0, 10); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 20, 0, 10); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 20, 1, 10); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 1, 0, SV(""), 0, 0, 0); - test(S("abcdefghij"), 1, 0, SV(""), 0, 1, 0); - test(S("abcdefghij"), 1, 0, SV(""), 1, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcde"), 0, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcde"), 0, 1, -1); - test(S("abcdefghij"), 1, 0, SV("abcde"), 0, 2, -2); - test(S("abcdefghij"), 1, 0, SV("abcde"), 0, 4, -4); - test(S("abcdefghij"), 1, 0, SV("abcde"), 0, 5, -5); - test(S("abcdefghij"), 1, 0, SV("abcde"), 0, 6, -5); - test(S("abcdefghij"), 1, 0, SV("abcde"), 1, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcde"), 1, 1, -1); - test(S("abcdefghij"), 1, 0, SV("abcde"), 1, 2, -2); - test(S("abcdefghij"), 1, 0, SV("abcde"), 1, 3, -3); - test(S("abcdefghij"), 1, 0, SV("abcde"), 1, 4, -4); - test(S("abcdefghij"), 1, 0, SV("abcde"), 1, 5, -4); - test(S("abcdefghij"), 1, 0, SV("abcde"), 2, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcde"), 2, 1, -1); - test(S("abcdefghij"), 1, 0, SV("abcde"), 2, 2, -2); - test(S("abcdefghij"), 1, 0, SV("abcde"), 2, 3, -3); - test(S("abcdefghij"), 1, 0, SV("abcde"), 2, 4, -3); - test(S("abcdefghij"), 1, 0, SV("abcde"), 4, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcde"), 4, 1, -1); - test(S("abcdefghij"), 1, 0, SV("abcde"), 4, 2, -1); - test(S("abcdefghij"), 1, 0, SV("abcde"), 5, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcde"), 5, 1, 0); - test(S("abcdefghij"), 1, 0, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 0, 1, -1); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 0, 5, -5); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 0, 9, -9); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 0, 10, -10); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 0, 11, -10); -} - -template <class S, class SV> -void test24() -{ - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 1, 4, -4); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 1, 8, -8); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 1, 9, -9); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 1, 10, -9); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 5, 1, -1); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 5, 2, -2); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 9, 1, -1); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 9, 2, -1); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 1, 1, SV(""), 0, 0, 1); - test(S("abcdefghij"), 1, 1, SV(""), 0, 1, 1); - test(S("abcdefghij"), 1, 1, SV(""), 1, 0, 0); - test(S("abcdefghij"), 1, 1, SV("abcde"), 0, 0, 1); - test(S("abcdefghij"), 1, 1, SV("abcde"), 0, 1, 1); - test(S("abcdefghij"), 1, 1, SV("abcde"), 0, 2, 1); - test(S("abcdefghij"), 1, 1, SV("abcde"), 0, 4, 1); - test(S("abcdefghij"), 1, 1, SV("abcde"), 0, 5, 1); - test(S("abcdefghij"), 1, 1, SV("abcde"), 0, 6, 1); - test(S("abcdefghij"), 1, 1, SV("abcde"), 1, 0, 1); - test(S("abcdefghij"), 1, 1, SV("abcde"), 1, 1, 0); - test(S("abcdefghij"), 1, 1, SV("abcde"), 1, 2, -1); - test(S("abcdefghij"), 1, 1, SV("abcde"), 1, 3, -2); - test(S("abcdefghij"), 1, 1, SV("abcde"), 1, 4, -3); - test(S("abcdefghij"), 1, 1, SV("abcde"), 1, 5, -3); - test(S("abcdefghij"), 1, 1, SV("abcde"), 2, 0, 1); - test(S("abcdefghij"), 1, 1, SV("abcde"), 2, 1, -1); - test(S("abcdefghij"), 1, 1, SV("abcde"), 2, 2, -1); - test(S("abcdefghij"), 1, 1, SV("abcde"), 2, 3, -1); - test(S("abcdefghij"), 1, 1, SV("abcde"), 2, 4, -1); - test(S("abcdefghij"), 1, 1, SV("abcde"), 4, 0, 1); - test(S("abcdefghij"), 1, 1, SV("abcde"), 4, 1, -3); - test(S("abcdefghij"), 1, 1, SV("abcde"), 4, 2, -3); - test(S("abcdefghij"), 1, 1, SV("abcde"), 5, 0, 1); - test(S("abcdefghij"), 1, 1, SV("abcde"), 5, 1, 1); - test(S("abcdefghij"), 1, 1, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 0, 0, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 0, 1, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 0, 5, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 0, 9, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 0, 10, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 0, 11, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 1, 0, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 1, 1, 0); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 1, 4, -3); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 1, 8, -7); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 1, 9, -8); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 1, 10, -8); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 5, 0, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 5, 1, -4); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 5, 2, -4); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 5, 5, -4); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 5, 6, -4); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 9, 0, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 9, 1, -8); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 9, 2, -8); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 10, 0, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 10, 1, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 1, 0); -} - -template <class S, class SV> -void test25() -{ - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 9, -8); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 18, -17); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 19, -18); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 20, -18); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 1, 4, SV(""), 0, 0, 4); - test(S("abcdefghij"), 1, 4, SV(""), 0, 1, 4); - test(S("abcdefghij"), 1, 4, SV(""), 1, 0, 0); - test(S("abcdefghij"), 1, 4, SV("abcde"), 0, 0, 4); - test(S("abcdefghij"), 1, 4, SV("abcde"), 0, 1, 1); - test(S("abcdefghij"), 1, 4, SV("abcde"), 0, 2, 1); - test(S("abcdefghij"), 1, 4, SV("abcde"), 0, 4, 1); - test(S("abcdefghij"), 1, 4, SV("abcde"), 0, 5, 1); - test(S("abcdefghij"), 1, 4, SV("abcde"), 0, 6, 1); - test(S("abcdefghij"), 1, 4, SV("abcde"), 1, 0, 4); - test(S("abcdefghij"), 1, 4, SV("abcde"), 1, 1, 3); - test(S("abcdefghij"), 1, 4, SV("abcde"), 1, 2, 2); - test(S("abcdefghij"), 1, 4, SV("abcde"), 1, 3, 1); - test(S("abcdefghij"), 1, 4, SV("abcde"), 1, 4, 0); - test(S("abcdefghij"), 1, 4, SV("abcde"), 1, 5, 0); - test(S("abcdefghij"), 1, 4, SV("abcde"), 2, 0, 4); - test(S("abcdefghij"), 1, 4, SV("abcde"), 2, 1, -1); - test(S("abcdefghij"), 1, 4, SV("abcde"), 2, 2, -1); - test(S("abcdefghij"), 1, 4, SV("abcde"), 2, 3, -1); - test(S("abcdefghij"), 1, 4, SV("abcde"), 2, 4, -1); - test(S("abcdefghij"), 1, 4, SV("abcde"), 4, 0, 4); - test(S("abcdefghij"), 1, 4, SV("abcde"), 4, 1, -3); - test(S("abcdefghij"), 1, 4, SV("abcde"), 4, 2, -3); - test(S("abcdefghij"), 1, 4, SV("abcde"), 5, 0, 4); - test(S("abcdefghij"), 1, 4, SV("abcde"), 5, 1, 4); - test(S("abcdefghij"), 1, 4, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 0, 0, 4); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 0, 1, 1); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 0, 5, 1); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 0, 9, 1); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 0, 10, 1); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 0, 11, 1); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 1, 0, 4); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 1, 1, 3); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 1, 4, 0); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 1, 8, -4); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 1, 9, -5); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 1, 10, -5); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 5, 0, 4); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 5, 1, -4); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 5, 2, -4); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 5, 5, -4); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 5, 6, -4); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 9, 0, 4); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 9, 1, -8); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 9, 2, -8); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 10, 0, 4); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 10, 1, 4); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 0, 4); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 0, 4); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 1, 3); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 9, -5); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 18, -14); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 19, -15); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 20, -15); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 0, 4); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 19, 0, 4); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 20, 0, 4); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 20, 1, 4); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 1, 8, SV(""), 0, 0, 8); - test(S("abcdefghij"), 1, 8, SV(""), 0, 1, 8); - test(S("abcdefghij"), 1, 8, SV(""), 1, 0, 0); - test(S("abcdefghij"), 1, 8, SV("abcde"), 0, 0, 8); - test(S("abcdefghij"), 1, 8, SV("abcde"), 0, 1, 1); - test(S("abcdefghij"), 1, 8, SV("abcde"), 0, 2, 1); - test(S("abcdefghij"), 1, 8, SV("abcde"), 0, 4, 1); - test(S("abcdefghij"), 1, 8, SV("abcde"), 0, 5, 1); - test(S("abcdefghij"), 1, 8, SV("abcde"), 0, 6, 1); - test(S("abcdefghij"), 1, 8, SV("abcde"), 1, 0, 8); -} - -template <class S, class SV> -void test26() -{ - test(S("abcdefghij"), 1, 8, SV("abcde"), 1, 1, 7); - test(S("abcdefghij"), 1, 8, SV("abcde"), 1, 2, 6); - test(S("abcdefghij"), 1, 8, SV("abcde"), 1, 3, 5); - test(S("abcdefghij"), 1, 8, SV("abcde"), 1, 4, 4); - test(S("abcdefghij"), 1, 8, SV("abcde"), 1, 5, 4); - test(S("abcdefghij"), 1, 8, SV("abcde"), 2, 0, 8); - test(S("abcdefghij"), 1, 8, SV("abcde"), 2, 1, -1); - test(S("abcdefghij"), 1, 8, SV("abcde"), 2, 2, -1); - test(S("abcdefghij"), 1, 8, SV("abcde"), 2, 3, -1); - test(S("abcdefghij"), 1, 8, SV("abcde"), 2, 4, -1); - test(S("abcdefghij"), 1, 8, SV("abcde"), 4, 0, 8); - test(S("abcdefghij"), 1, 8, SV("abcde"), 4, 1, -3); - test(S("abcdefghij"), 1, 8, SV("abcde"), 4, 2, -3); - test(S("abcdefghij"), 1, 8, SV("abcde"), 5, 0, 8); - test(S("abcdefghij"), 1, 8, SV("abcde"), 5, 1, 8); - test(S("abcdefghij"), 1, 8, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 0, 0, 8); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 0, 1, 1); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 0, 5, 1); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 0, 9, 1); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 0, 10, 1); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 0, 11, 1); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 1, 0, 8); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 1, 1, 7); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 1, 4, 4); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 1, 8, 0); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 1, 9, -1); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 1, 10, -1); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 5, 0, 8); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 5, 1, -4); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 5, 2, -4); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 5, 5, -4); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 5, 6, -4); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 9, 0, 8); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 9, 1, -8); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 9, 2, -8); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 10, 0, 8); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 10, 1, 8); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 0, 0, 8); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 1, 0, 8); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 1, 1, 7); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 1, 18, -10); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 1, 19, -11); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 1, 20, -11); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 10, 0, 8); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 19, 0, 8); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 20, 0, 8); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 20, 1, 8); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 1, 9, SV(""), 0, 0, 9); - test(S("abcdefghij"), 1, 9, SV(""), 0, 1, 9); - test(S("abcdefghij"), 1, 9, SV(""), 1, 0, 0); - test(S("abcdefghij"), 1, 9, SV("abcde"), 0, 0, 9); - test(S("abcdefghij"), 1, 9, SV("abcde"), 0, 1, 1); - test(S("abcdefghij"), 1, 9, SV("abcde"), 0, 2, 1); - test(S("abcdefghij"), 1, 9, SV("abcde"), 0, 4, 1); - test(S("abcdefghij"), 1, 9, SV("abcde"), 0, 5, 1); - test(S("abcdefghij"), 1, 9, SV("abcde"), 0, 6, 1); - test(S("abcdefghij"), 1, 9, SV("abcde"), 1, 0, 9); - test(S("abcdefghij"), 1, 9, SV("abcde"), 1, 1, 8); - test(S("abcdefghij"), 1, 9, SV("abcde"), 1, 2, 7); - test(S("abcdefghij"), 1, 9, SV("abcde"), 1, 3, 6); - test(S("abcdefghij"), 1, 9, SV("abcde"), 1, 4, 5); - test(S("abcdefghij"), 1, 9, SV("abcde"), 1, 5, 5); - test(S("abcdefghij"), 1, 9, SV("abcde"), 2, 0, 9); - test(S("abcdefghij"), 1, 9, SV("abcde"), 2, 1, -1); - test(S("abcdefghij"), 1, 9, SV("abcde"), 2, 2, -1); - test(S("abcdefghij"), 1, 9, SV("abcde"), 2, 3, -1); - test(S("abcdefghij"), 1, 9, SV("abcde"), 2, 4, -1); - test(S("abcdefghij"), 1, 9, SV("abcde"), 4, 0, 9); - test(S("abcdefghij"), 1, 9, SV("abcde"), 4, 1, -3); - test(S("abcdefghij"), 1, 9, SV("abcde"), 4, 2, -3); - test(S("abcdefghij"), 1, 9, SV("abcde"), 5, 0, 9); - test(S("abcdefghij"), 1, 9, SV("abcde"), 5, 1, 9); - test(S("abcdefghij"), 1, 9, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 0, 0, 9); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 0, 1, 1); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 0, 5, 1); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 0, 9, 1); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 0, 10, 1); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 0, 11, 1); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 1, 0, 9); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 1, 1, 8); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 1, 4, 5); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 1, 8, 1); -} - -template <class S, class SV> -void test27() -{ - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 1, 9, 0); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 1, 10, 0); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 5, 0, 9); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 5, 1, -4); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 5, 2, -4); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 5, 5, -4); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 5, 6, -4); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 9, 0, 9); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 9, 1, -8); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 9, 2, -8); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 10, 0, 9); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 10, 1, 9); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 0, 9); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 0, 9); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 1, 8); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 9, 0); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 18, -9); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 19, -10); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 20, -10); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 0, 9); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 19, 0, 9); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 20, 0, 9); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 20, 1, 9); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 1, 10, SV(""), 0, 0, 9); - test(S("abcdefghij"), 1, 10, SV(""), 0, 1, 9); - test(S("abcdefghij"), 1, 10, SV(""), 1, 0, 0); - test(S("abcdefghij"), 1, 10, SV("abcde"), 0, 0, 9); - test(S("abcdefghij"), 1, 10, SV("abcde"), 0, 1, 1); - test(S("abcdefghij"), 1, 10, SV("abcde"), 0, 2, 1); - test(S("abcdefghij"), 1, 10, SV("abcde"), 0, 4, 1); - test(S("abcdefghij"), 1, 10, SV("abcde"), 0, 5, 1); - test(S("abcdefghij"), 1, 10, SV("abcde"), 0, 6, 1); - test(S("abcdefghij"), 1, 10, SV("abcde"), 1, 0, 9); - test(S("abcdefghij"), 1, 10, SV("abcde"), 1, 1, 8); - test(S("abcdefghij"), 1, 10, SV("abcde"), 1, 2, 7); - test(S("abcdefghij"), 1, 10, SV("abcde"), 1, 3, 6); - test(S("abcdefghij"), 1, 10, SV("abcde"), 1, 4, 5); - test(S("abcdefghij"), 1, 10, SV("abcde"), 1, 5, 5); - test(S("abcdefghij"), 1, 10, SV("abcde"), 2, 0, 9); - test(S("abcdefghij"), 1, 10, SV("abcde"), 2, 1, -1); - test(S("abcdefghij"), 1, 10, SV("abcde"), 2, 2, -1); - test(S("abcdefghij"), 1, 10, SV("abcde"), 2, 3, -1); - test(S("abcdefghij"), 1, 10, SV("abcde"), 2, 4, -1); - test(S("abcdefghij"), 1, 10, SV("abcde"), 4, 0, 9); - test(S("abcdefghij"), 1, 10, SV("abcde"), 4, 1, -3); - test(S("abcdefghij"), 1, 10, SV("abcde"), 4, 2, -3); - test(S("abcdefghij"), 1, 10, SV("abcde"), 5, 0, 9); - test(S("abcdefghij"), 1, 10, SV("abcde"), 5, 1, 9); - test(S("abcdefghij"), 1, 10, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 0, 0, 9); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 0, 1, 1); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 0, 5, 1); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 0, 9, 1); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 0, 10, 1); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 0, 11, 1); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 1, 0, 9); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 1, 1, 8); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 1, 4, 5); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 1, 8, 1); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 1, 9, 0); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 1, 10, 0); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 5, 0, 9); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 5, 1, -4); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 5, 2, -4); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 5, 5, -4); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 5, 6, -4); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 9, 0, 9); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 9, 1, -8); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 9, 2, -8); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 10, 0, 9); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 10, 1, 9); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 0, 0, 9); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 1, 0, 9); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 1, 1, 8); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 1, 9, 0); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 1, 18, -9); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 1, 19, -10); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 1, 20, -10); -} - -template <class S, class SV> -void test28() -{ - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 10, 0, 9); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 19, 0, 9); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 20, 0, 9); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 20, 1, 9); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 5, 0, SV(""), 0, 0, 0); - test(S("abcdefghij"), 5, 0, SV(""), 0, 1, 0); - test(S("abcdefghij"), 5, 0, SV(""), 1, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcde"), 0, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcde"), 0, 1, -1); - test(S("abcdefghij"), 5, 0, SV("abcde"), 0, 2, -2); - test(S("abcdefghij"), 5, 0, SV("abcde"), 0, 4, -4); - test(S("abcdefghij"), 5, 0, SV("abcde"), 0, 5, -5); - test(S("abcdefghij"), 5, 0, SV("abcde"), 0, 6, -5); - test(S("abcdefghij"), 5, 0, SV("abcde"), 1, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcde"), 1, 1, -1); - test(S("abcdefghij"), 5, 0, SV("abcde"), 1, 2, -2); - test(S("abcdefghij"), 5, 0, SV("abcde"), 1, 3, -3); - test(S("abcdefghij"), 5, 0, SV("abcde"), 1, 4, -4); - test(S("abcdefghij"), 5, 0, SV("abcde"), 1, 5, -4); - test(S("abcdefghij"), 5, 0, SV("abcde"), 2, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcde"), 2, 1, -1); - test(S("abcdefghij"), 5, 0, SV("abcde"), 2, 2, -2); - test(S("abcdefghij"), 5, 0, SV("abcde"), 2, 3, -3); - test(S("abcdefghij"), 5, 0, SV("abcde"), 2, 4, -3); - test(S("abcdefghij"), 5, 0, SV("abcde"), 4, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcde"), 4, 1, -1); - test(S("abcdefghij"), 5, 0, SV("abcde"), 4, 2, -1); - test(S("abcdefghij"), 5, 0, SV("abcde"), 5, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcde"), 5, 1, 0); - test(S("abcdefghij"), 5, 0, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 0, 1, -1); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 0, 5, -5); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 0, 9, -9); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 0, 10, -10); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 0, 11, -10); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 1, 4, -4); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 1, 8, -8); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 1, 9, -9); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 1, 10, -9); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 5, 1, -1); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 5, 2, -2); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 9, 1, -1); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 9, 2, -1); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 5, 1, SV(""), 0, 0, 1); - test(S("abcdefghij"), 5, 1, SV(""), 0, 1, 1); - test(S("abcdefghij"), 5, 1, SV(""), 1, 0, 0); - test(S("abcdefghij"), 5, 1, SV("abcde"), 0, 0, 1); - test(S("abcdefghij"), 5, 1, SV("abcde"), 0, 1, 5); - test(S("abcdefghij"), 5, 1, SV("abcde"), 0, 2, 5); - test(S("abcdefghij"), 5, 1, SV("abcde"), 0, 4, 5); - test(S("abcdefghij"), 5, 1, SV("abcde"), 0, 5, 5); - test(S("abcdefghij"), 5, 1, SV("abcde"), 0, 6, 5); - test(S("abcdefghij"), 5, 1, SV("abcde"), 1, 0, 1); - test(S("abcdefghij"), 5, 1, SV("abcde"), 1, 1, 4); - test(S("abcdefghij"), 5, 1, SV("abcde"), 1, 2, 4); - test(S("abcdefghij"), 5, 1, SV("abcde"), 1, 3, 4); - test(S("abcdefghij"), 5, 1, SV("abcde"), 1, 4, 4); -} - -template <class S, class SV> -void test29() -{ - test(S("abcdefghij"), 5, 1, SV("abcde"), 1, 5, 4); - test(S("abcdefghij"), 5, 1, SV("abcde"), 2, 0, 1); - test(S("abcdefghij"), 5, 1, SV("abcde"), 2, 1, 3); - test(S("abcdefghij"), 5, 1, SV("abcde"), 2, 2, 3); - test(S("abcdefghij"), 5, 1, SV("abcde"), 2, 3, 3); - test(S("abcdefghij"), 5, 1, SV("abcde"), 2, 4, 3); - test(S("abcdefghij"), 5, 1, SV("abcde"), 4, 0, 1); - test(S("abcdefghij"), 5, 1, SV("abcde"), 4, 1, 1); - test(S("abcdefghij"), 5, 1, SV("abcde"), 4, 2, 1); - test(S("abcdefghij"), 5, 1, SV("abcde"), 5, 0, 1); - test(S("abcdefghij"), 5, 1, SV("abcde"), 5, 1, 1); - test(S("abcdefghij"), 5, 1, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 0, 0, 1); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 0, 1, 5); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 0, 5, 5); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 0, 9, 5); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 0, 10, 5); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 0, 11, 5); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 1, 0, 1); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 1, 1, 4); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 1, 4, 4); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 1, 8, 4); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 1, 9, 4); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 1, 10, 4); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 5, 0, 1); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 5, 1, 0); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 5, 2, -1); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 5, 4, -3); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 5, 5, -4); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 5, 6, -4); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 9, 0, 1); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 9, 1, -4); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 9, 2, -4); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 10, 0, 1); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 10, 1, 1); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 1, 5); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 10, 5); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 19, 5); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 20, 5); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 21, 5); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 1, 4); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 9, 4); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 18, 4); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 19, 4); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 20, 4); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 1, -5); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 9, -5); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 10, -5); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 11, -5); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 19, 1, -14); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 19, 2, -14); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 5, 2, SV(""), 0, 0, 2); - test(S("abcdefghij"), 5, 2, SV(""), 0, 1, 2); - test(S("abcdefghij"), 5, 2, SV(""), 1, 0, 0); - test(S("abcdefghij"), 5, 2, SV("abcde"), 0, 0, 2); - test(S("abcdefghij"), 5, 2, SV("abcde"), 0, 1, 5); - test(S("abcdefghij"), 5, 2, SV("abcde"), 0, 2, 5); - test(S("abcdefghij"), 5, 2, SV("abcde"), 0, 4, 5); - test(S("abcdefghij"), 5, 2, SV("abcde"), 0, 5, 5); - test(S("abcdefghij"), 5, 2, SV("abcde"), 0, 6, 5); - test(S("abcdefghij"), 5, 2, SV("abcde"), 1, 0, 2); - test(S("abcdefghij"), 5, 2, SV("abcde"), 1, 1, 4); - test(S("abcdefghij"), 5, 2, SV("abcde"), 1, 2, 4); - test(S("abcdefghij"), 5, 2, SV("abcde"), 1, 3, 4); - test(S("abcdefghij"), 5, 2, SV("abcde"), 1, 4, 4); - test(S("abcdefghij"), 5, 2, SV("abcde"), 1, 5, 4); - test(S("abcdefghij"), 5, 2, SV("abcde"), 2, 0, 2); - test(S("abcdefghij"), 5, 2, SV("abcde"), 2, 1, 3); - test(S("abcdefghij"), 5, 2, SV("abcde"), 2, 2, 3); - test(S("abcdefghij"), 5, 2, SV("abcde"), 2, 3, 3); - test(S("abcdefghij"), 5, 2, SV("abcde"), 2, 4, 3); - test(S("abcdefghij"), 5, 2, SV("abcde"), 4, 0, 2); - test(S("abcdefghij"), 5, 2, SV("abcde"), 4, 1, 1); - test(S("abcdefghij"), 5, 2, SV("abcde"), 4, 2, 1); - test(S("abcdefghij"), 5, 2, SV("abcde"), 5, 0, 2); - test(S("abcdefghij"), 5, 2, SV("abcde"), 5, 1, 2); - test(S("abcdefghij"), 5, 2, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 0, 0, 2); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 0, 1, 5); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 0, 5, 5); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 0, 9, 5); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 0, 10, 5); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 0, 11, 5); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 1, 0, 2); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 1, 1, 4); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 1, 4, 4); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 1, 8, 4); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 1, 9, 4); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 1, 10, 4); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 5, 0, 2); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 5, 1, 1); -} - -template <class S, class SV> -void test30() -{ - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 5, 2, 0); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 5, 4, -2); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 5, 5, -3); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 5, 6, -3); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 9, 0, 2); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 9, 1, -4); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 9, 2, -4); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 10, 0, 2); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 10, 1, 2); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 0, 0, 2); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 0, 1, 5); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 0, 10, 5); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 0, 19, 5); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 0, 20, 5); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 0, 21, 5); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 1, 0, 2); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 1, 1, 4); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 1, 9, 4); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 1, 18, 4); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 1, 19, 4); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 1, 20, 4); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 10, 0, 2); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 10, 1, -5); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 10, 9, -5); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 10, 10, -5); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 10, 11, -5); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 19, 0, 2); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 19, 1, -14); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 19, 2, -14); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 20, 0, 2); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 20, 1, 2); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 5, 4, SV(""), 0, 0, 4); - test(S("abcdefghij"), 5, 4, SV(""), 0, 1, 4); - test(S("abcdefghij"), 5, 4, SV(""), 1, 0, 0); - test(S("abcdefghij"), 5, 4, SV("abcde"), 0, 0, 4); - test(S("abcdefghij"), 5, 4, SV("abcde"), 0, 1, 5); - test(S("abcdefghij"), 5, 4, SV("abcde"), 0, 2, 5); - test(S("abcdefghij"), 5, 4, SV("abcde"), 0, 4, 5); - test(S("abcdefghij"), 5, 4, SV("abcde"), 0, 5, 5); - test(S("abcdefghij"), 5, 4, SV("abcde"), 0, 6, 5); - test(S("abcdefghij"), 5, 4, SV("abcde"), 1, 0, 4); - test(S("abcdefghij"), 5, 4, SV("abcde"), 1, 1, 4); - test(S("abcdefghij"), 5, 4, SV("abcde"), 1, 2, 4); - test(S("abcdefghij"), 5, 4, SV("abcde"), 1, 3, 4); - test(S("abcdefghij"), 5, 4, SV("abcde"), 1, 4, 4); - test(S("abcdefghij"), 5, 4, SV("abcde"), 1, 5, 4); - test(S("abcdefghij"), 5, 4, SV("abcde"), 2, 0, 4); - test(S("abcdefghij"), 5, 4, SV("abcde"), 2, 1, 3); - test(S("abcdefghij"), 5, 4, SV("abcde"), 2, 2, 3); - test(S("abcdefghij"), 5, 4, SV("abcde"), 2, 3, 3); - test(S("abcdefghij"), 5, 4, SV("abcde"), 2, 4, 3); - test(S("abcdefghij"), 5, 4, SV("abcde"), 4, 0, 4); - test(S("abcdefghij"), 5, 4, SV("abcde"), 4, 1, 1); - test(S("abcdefghij"), 5, 4, SV("abcde"), 4, 2, 1); - test(S("abcdefghij"), 5, 4, SV("abcde"), 5, 0, 4); - test(S("abcdefghij"), 5, 4, SV("abcde"), 5, 1, 4); - test(S("abcdefghij"), 5, 4, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 0, 0, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 0, 1, 5); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 0, 5, 5); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 0, 9, 5); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 0, 10, 5); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 0, 11, 5); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 1, 0, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 1, 1, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 1, 4, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 1, 8, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 1, 9, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 1, 10, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 5, 0, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 5, 1, 3); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 5, 2, 2); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 5, 4, 0); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 5, 5, -1); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 5, 6, -1); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 9, 0, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 9, 1, -4); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 9, 2, -4); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 10, 0, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 10, 1, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 0, 0, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 0, 1, 5); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 0, 10, 5); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 0, 19, 5); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 0, 20, 5); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 0, 21, 5); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 1, 0, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 1, 1, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 1, 9, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 1, 18, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 1, 19, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 1, 20, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 10, 0, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 10, 1, -5); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 10, 9, -5); -} - -template <class S, class SV> -void test31() -{ - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 10, 10, -5); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 10, 11, -5); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 19, 0, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 19, 1, -14); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 19, 2, -14); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 20, 0, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 20, 1, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 5, 5, SV(""), 0, 0, 5); - test(S("abcdefghij"), 5, 5, SV(""), 0, 1, 5); - test(S("abcdefghij"), 5, 5, SV(""), 1, 0, 0); - test(S("abcdefghij"), 5, 5, SV("abcde"), 0, 0, 5); - test(S("abcdefghij"), 5, 5, SV("abcde"), 0, 1, 5); - test(S("abcdefghij"), 5, 5, SV("abcde"), 0, 2, 5); - test(S("abcdefghij"), 5, 5, SV("abcde"), 0, 4, 5); - test(S("abcdefghij"), 5, 5, SV("abcde"), 0, 5, 5); - test(S("abcdefghij"), 5, 5, SV("abcde"), 0, 6, 5); - test(S("abcdefghij"), 5, 5, SV("abcde"), 1, 0, 5); - test(S("abcdefghij"), 5, 5, SV("abcde"), 1, 1, 4); - test(S("abcdefghij"), 5, 5, SV("abcde"), 1, 2, 4); - test(S("abcdefghij"), 5, 5, SV("abcde"), 1, 3, 4); - test(S("abcdefghij"), 5, 5, SV("abcde"), 1, 4, 4); - test(S("abcdefghij"), 5, 5, SV("abcde"), 1, 5, 4); - test(S("abcdefghij"), 5, 5, SV("abcde"), 2, 0, 5); - test(S("abcdefghij"), 5, 5, SV("abcde"), 2, 1, 3); - test(S("abcdefghij"), 5, 5, SV("abcde"), 2, 2, 3); - test(S("abcdefghij"), 5, 5, SV("abcde"), 2, 3, 3); - test(S("abcdefghij"), 5, 5, SV("abcde"), 2, 4, 3); - test(S("abcdefghij"), 5, 5, SV("abcde"), 4, 0, 5); - test(S("abcdefghij"), 5, 5, SV("abcde"), 4, 1, 1); - test(S("abcdefghij"), 5, 5, SV("abcde"), 4, 2, 1); - test(S("abcdefghij"), 5, 5, SV("abcde"), 5, 0, 5); - test(S("abcdefghij"), 5, 5, SV("abcde"), 5, 1, 5); - test(S("abcdefghij"), 5, 5, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 0, 0, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 0, 1, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 0, 5, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 0, 9, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 0, 10, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 0, 11, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 1, 0, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 1, 1, 4); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 1, 4, 4); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 1, 8, 4); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 1, 9, 4); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 1, 10, 4); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 5, 0, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 5, 1, 4); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 5, 2, 3); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 5, 4, 1); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 5, 5, 0); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 5, 6, 0); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 9, 0, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 9, 1, -4); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 9, 2, -4); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 10, 0, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 10, 1, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 0, 0, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 0, 1, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 0, 10, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 0, 19, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 0, 20, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 0, 21, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 1, 0, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 1, 1, 4); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 1, 9, 4); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 1, 18, 4); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 1, 19, 4); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 1, 20, 4); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 10, 0, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 10, 1, -5); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 10, 9, -5); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 10, 10, -5); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 10, 11, -5); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 19, 0, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 19, 1, -14); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 19, 2, -14); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 20, 0, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 20, 1, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 5, 6, SV(""), 0, 0, 5); - test(S("abcdefghij"), 5, 6, SV(""), 0, 1, 5); - test(S("abcdefghij"), 5, 6, SV(""), 1, 0, 0); - test(S("abcdefghij"), 5, 6, SV("abcde"), 0, 0, 5); - test(S("abcdefghij"), 5, 6, SV("abcde"), 0, 1, 5); - test(S("abcdefghij"), 5, 6, SV("abcde"), 0, 2, 5); - test(S("abcdefghij"), 5, 6, SV("abcde"), 0, 4, 5); - test(S("abcdefghij"), 5, 6, SV("abcde"), 0, 5, 5); - test(S("abcdefghij"), 5, 6, SV("abcde"), 0, 6, 5); - test(S("abcdefghij"), 5, 6, SV("abcde"), 1, 0, 5); - test(S("abcdefghij"), 5, 6, SV("abcde"), 1, 1, 4); - test(S("abcdefghij"), 5, 6, SV("abcde"), 1, 2, 4); - test(S("abcdefghij"), 5, 6, SV("abcde"), 1, 3, 4); - test(S("abcdefghij"), 5, 6, SV("abcde"), 1, 4, 4); - test(S("abcdefghij"), 5, 6, SV("abcde"), 1, 5, 4); - test(S("abcdefghij"), 5, 6, SV("abcde"), 2, 0, 5); - test(S("abcdefghij"), 5, 6, SV("abcde"), 2, 1, 3); - test(S("abcdefghij"), 5, 6, SV("abcde"), 2, 2, 3); -} - -template <class S, class SV> -void test32() -{ - test(S("abcdefghij"), 5, 6, SV("abcde"), 2, 3, 3); - test(S("abcdefghij"), 5, 6, SV("abcde"), 2, 4, 3); - test(S("abcdefghij"), 5, 6, SV("abcde"), 4, 0, 5); - test(S("abcdefghij"), 5, 6, SV("abcde"), 4, 1, 1); - test(S("abcdefghij"), 5, 6, SV("abcde"), 4, 2, 1); - test(S("abcdefghij"), 5, 6, SV("abcde"), 5, 0, 5); - test(S("abcdefghij"), 5, 6, SV("abcde"), 5, 1, 5); - test(S("abcdefghij"), 5, 6, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 0, 0, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 0, 1, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 0, 5, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 0, 9, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 0, 10, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 0, 11, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 1, 0, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 1, 1, 4); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 1, 4, 4); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 1, 8, 4); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 1, 9, 4); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 1, 10, 4); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 5, 0, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 5, 1, 4); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 5, 2, 3); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 5, 4, 1); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 5, 5, 0); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 5, 6, 0); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 9, 0, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 9, 1, -4); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 9, 2, -4); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 10, 0, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 10, 1, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 0, 0, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 0, 1, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 0, 10, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 0, 19, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 0, 20, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 0, 21, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 1, 0, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 1, 1, 4); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 1, 9, 4); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 1, 18, 4); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 1, 19, 4); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 1, 20, 4); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 10, 0, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 10, 1, -5); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 10, 9, -5); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 10, 10, -5); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 10, 11, -5); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 19, 0, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 19, 1, -14); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 19, 2, -14); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 20, 0, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 20, 1, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 9, 0, SV(""), 0, 0, 0); - test(S("abcdefghij"), 9, 0, SV(""), 0, 1, 0); - test(S("abcdefghij"), 9, 0, SV(""), 1, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcde"), 0, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcde"), 0, 1, -1); - test(S("abcdefghij"), 9, 0, SV("abcde"), 0, 2, -2); - test(S("abcdefghij"), 9, 0, SV("abcde"), 0, 4, -4); - test(S("abcdefghij"), 9, 0, SV("abcde"), 0, 5, -5); - test(S("abcdefghij"), 9, 0, SV("abcde"), 0, 6, -5); - test(S("abcdefghij"), 9, 0, SV("abcde"), 1, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcde"), 1, 1, -1); - test(S("abcdefghij"), 9, 0, SV("abcde"), 1, 2, -2); - test(S("abcdefghij"), 9, 0, SV("abcde"), 1, 3, -3); - test(S("abcdefghij"), 9, 0, SV("abcde"), 1, 4, -4); - test(S("abcdefghij"), 9, 0, SV("abcde"), 1, 5, -4); - test(S("abcdefghij"), 9, 0, SV("abcde"), 2, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcde"), 2, 1, -1); - test(S("abcdefghij"), 9, 0, SV("abcde"), 2, 2, -2); - test(S("abcdefghij"), 9, 0, SV("abcde"), 2, 3, -3); - test(S("abcdefghij"), 9, 0, SV("abcde"), 2, 4, -3); - test(S("abcdefghij"), 9, 0, SV("abcde"), 4, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcde"), 4, 1, -1); - test(S("abcdefghij"), 9, 0, SV("abcde"), 4, 2, -1); - test(S("abcdefghij"), 9, 0, SV("abcde"), 5, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcde"), 5, 1, 0); - test(S("abcdefghij"), 9, 0, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 0, 1, -1); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 0, 5, -5); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 0, 9, -9); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 0, 10, -10); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 0, 11, -10); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 1, 4, -4); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 1, 8, -8); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 1, 9, -9); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 1, 10, -9); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 5, 1, -1); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 5, 2, -2); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 5, 6, -5); -} - -template <class S, class SV> -void test33() -{ - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 9, 1, -1); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 9, 2, -1); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 9, 1, SV(""), 0, 0, 1); - test(S("abcdefghij"), 9, 1, SV(""), 0, 1, 1); - test(S("abcdefghij"), 9, 1, SV(""), 1, 0, 0); - test(S("abcdefghij"), 9, 1, SV("abcde"), 0, 0, 1); - test(S("abcdefghij"), 9, 1, SV("abcde"), 0, 1, 9); - test(S("abcdefghij"), 9, 1, SV("abcde"), 0, 2, 9); - test(S("abcdefghij"), 9, 1, SV("abcde"), 0, 4, 9); - test(S("abcdefghij"), 9, 1, SV("abcde"), 0, 5, 9); - test(S("abcdefghij"), 9, 1, SV("abcde"), 0, 6, 9); - test(S("abcdefghij"), 9, 1, SV("abcde"), 1, 0, 1); - test(S("abcdefghij"), 9, 1, SV("abcde"), 1, 1, 8); - test(S("abcdefghij"), 9, 1, SV("abcde"), 1, 2, 8); - test(S("abcdefghij"), 9, 1, SV("abcde"), 1, 3, 8); - test(S("abcdefghij"), 9, 1, SV("abcde"), 1, 4, 8); - test(S("abcdefghij"), 9, 1, SV("abcde"), 1, 5, 8); - test(S("abcdefghij"), 9, 1, SV("abcde"), 2, 0, 1); - test(S("abcdefghij"), 9, 1, SV("abcde"), 2, 1, 7); - test(S("abcdefghij"), 9, 1, SV("abcde"), 2, 2, 7); - test(S("abcdefghij"), 9, 1, SV("abcde"), 2, 3, 7); - test(S("abcdefghij"), 9, 1, SV("abcde"), 2, 4, 7); - test(S("abcdefghij"), 9, 1, SV("abcde"), 4, 0, 1); - test(S("abcdefghij"), 9, 1, SV("abcde"), 4, 1, 5); - test(S("abcdefghij"), 9, 1, SV("abcde"), 4, 2, 5); - test(S("abcdefghij"), 9, 1, SV("abcde"), 5, 0, 1); - test(S("abcdefghij"), 9, 1, SV("abcde"), 5, 1, 1); - test(S("abcdefghij"), 9, 1, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 0, 0, 1); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 0, 1, 9); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 0, 5, 9); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 0, 9, 9); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 0, 10, 9); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 0, 11, 9); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 1, 0, 1); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 1, 1, 8); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 1, 4, 8); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 1, 8, 8); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 1, 9, 8); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 1, 10, 8); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 5, 0, 1); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 5, 1, 4); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 5, 2, 4); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 5, 4, 4); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 5, 5, 4); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 5, 6, 4); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 9, 0, 1); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 9, 1, 0); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 9, 2, 0); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 10, 0, 1); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 10, 1, 1); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 0, 1, 9); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 0, 10, 9); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 0, 19, 9); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 0, 20, 9); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 0, 21, 9); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 1, 1, 8); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 1, 9, 8); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 1, 18, 8); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 1, 19, 8); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 1, 20, 8); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 10, 5, -1); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 10, 9, -1); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 10, 10, -1); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 10, 11, -1); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 19, 1, -10); -} - -template <class S, class SV> -void test34() -{ - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 19, 2, -10); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 9, 2, SV(""), 0, 0, 1); - test(S("abcdefghij"), 9, 2, SV(""), 0, 1, 1); - test(S("abcdefghij"), 9, 2, SV(""), 1, 0, 0); - test(S("abcdefghij"), 9, 2, SV("abcde"), 0, 0, 1); - test(S("abcdefghij"), 9, 2, SV("abcde"), 0, 1, 9); - test(S("abcdefghij"), 9, 2, SV("abcde"), 0, 2, 9); - test(S("abcdefghij"), 9, 2, SV("abcde"), 0, 4, 9); - test(S("abcdefghij"), 9, 2, SV("abcde"), 0, 5, 9); - test(S("abcdefghij"), 9, 2, SV("abcde"), 0, 6, 9); - test(S("abcdefghij"), 9, 2, SV("abcde"), 1, 0, 1); - test(S("abcdefghij"), 9, 2, SV("abcde"), 1, 1, 8); - test(S("abcdefghij"), 9, 2, SV("abcde"), 1, 2, 8); - test(S("abcdefghij"), 9, 2, SV("abcde"), 1, 3, 8); - test(S("abcdefghij"), 9, 2, SV("abcde"), 1, 4, 8); - test(S("abcdefghij"), 9, 2, SV("abcde"), 1, 5, 8); - test(S("abcdefghij"), 9, 2, SV("abcde"), 2, 0, 1); - test(S("abcdefghij"), 9, 2, SV("abcde"), 2, 1, 7); - test(S("abcdefghij"), 9, 2, SV("abcde"), 2, 2, 7); - test(S("abcdefghij"), 9, 2, SV("abcde"), 2, 3, 7); - test(S("abcdefghij"), 9, 2, SV("abcde"), 2, 4, 7); - test(S("abcdefghij"), 9, 2, SV("abcde"), 4, 0, 1); - test(S("abcdefghij"), 9, 2, SV("abcde"), 4, 1, 5); - test(S("abcdefghij"), 9, 2, SV("abcde"), 4, 2, 5); - test(S("abcdefghij"), 9, 2, SV("abcde"), 5, 0, 1); - test(S("abcdefghij"), 9, 2, SV("abcde"), 5, 1, 1); - test(S("abcdefghij"), 9, 2, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 0, 0, 1); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 0, 1, 9); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 0, 5, 9); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 0, 9, 9); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 0, 10, 9); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 0, 11, 9); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 1, 0, 1); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 1, 1, 8); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 1, 4, 8); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 1, 8, 8); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 1, 9, 8); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 1, 10, 8); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 5, 0, 1); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 5, 1, 4); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 5, 2, 4); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 5, 4, 4); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 5, 5, 4); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 5, 6, 4); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 9, 0, 1); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 9, 1, 0); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 9, 2, 0); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 10, 0, 1); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 10, 1, 1); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 0, 1, 9); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 0, 10, 9); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 0, 19, 9); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 0, 20, 9); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 0, 21, 9); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 1, 1, 8); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 1, 9, 8); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 1, 18, 8); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 1, 19, 8); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 1, 20, 8); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 10, 5, -1); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 10, 9, -1); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 10, 10, -1); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 10, 11, -1); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 19, 1, -10); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 19, 2, -10); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 10, 0, SV(""), 0, 0, 0); - test(S("abcdefghij"), 10, 0, SV(""), 0, 1, 0); - test(S("abcdefghij"), 10, 0, SV(""), 1, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcde"), 0, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcde"), 0, 1, -1); - test(S("abcdefghij"), 10, 0, SV("abcde"), 0, 2, -2); - test(S("abcdefghij"), 10, 0, SV("abcde"), 0, 4, -4); - test(S("abcdefghij"), 10, 0, SV("abcde"), 0, 5, -5); - test(S("abcdefghij"), 10, 0, SV("abcde"), 0, 6, -5); - test(S("abcdefghij"), 10, 0, SV("abcde"), 1, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcde"), 1, 1, -1); - test(S("abcdefghij"), 10, 0, SV("abcde"), 1, 2, -2); - test(S("abcdefghij"), 10, 0, SV("abcde"), 1, 3, -3); - test(S("abcdefghij"), 10, 0, SV("abcde"), 1, 4, -4); - test(S("abcdefghij"), 10, 0, SV("abcde"), 1, 5, -4); - test(S("abcdefghij"), 10, 0, SV("abcde"), 2, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcde"), 2, 1, -1); - test(S("abcdefghij"), 10, 0, SV("abcde"), 2, 2, -2); - test(S("abcdefghij"), 10, 0, SV("abcde"), 2, 3, -3); - test(S("abcdefghij"), 10, 0, SV("abcde"), 2, 4, -3); - test(S("abcdefghij"), 10, 0, SV("abcde"), 4, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcde"), 4, 1, -1); -} - -template <class S, class SV> -void test35() -{ - test(S("abcdefghij"), 10, 0, SV("abcde"), 4, 2, -1); - test(S("abcdefghij"), 10, 0, SV("abcde"), 5, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcde"), 5, 1, 0); - test(S("abcdefghij"), 10, 0, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 0, 1, -1); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 0, 5, -5); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 0, 9, -9); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 0, 10, -10); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 0, 11, -10); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 1, 4, -4); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 1, 8, -8); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 1, 9, -9); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 1, 10, -9); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 5, 1, -1); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 5, 2, -2); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 9, 1, -1); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 9, 2, -1); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 10, 1, SV(""), 0, 0, 0); - test(S("abcdefghij"), 10, 1, SV(""), 0, 1, 0); - test(S("abcdefghij"), 10, 1, SV(""), 1, 0, 0); - test(S("abcdefghij"), 10, 1, SV("abcde"), 0, 0, 0); - test(S("abcdefghij"), 10, 1, SV("abcde"), 0, 1, -1); - test(S("abcdefghij"), 10, 1, SV("abcde"), 0, 2, -2); - test(S("abcdefghij"), 10, 1, SV("abcde"), 0, 4, -4); - test(S("abcdefghij"), 10, 1, SV("abcde"), 0, 5, -5); - test(S("abcdefghij"), 10, 1, SV("abcde"), 0, 6, -5); - test(S("abcdefghij"), 10, 1, SV("abcde"), 1, 0, 0); - test(S("abcdefghij"), 10, 1, SV("abcde"), 1, 1, -1); - test(S("abcdefghij"), 10, 1, SV("abcde"), 1, 2, -2); - test(S("abcdefghij"), 10, 1, SV("abcde"), 1, 3, -3); - test(S("abcdefghij"), 10, 1, SV("abcde"), 1, 4, -4); - test(S("abcdefghij"), 10, 1, SV("abcde"), 1, 5, -4); - test(S("abcdefghij"), 10, 1, SV("abcde"), 2, 0, 0); - test(S("abcdefghij"), 10, 1, SV("abcde"), 2, 1, -1); - test(S("abcdefghij"), 10, 1, SV("abcde"), 2, 2, -2); - test(S("abcdefghij"), 10, 1, SV("abcde"), 2, 3, -3); - test(S("abcdefghij"), 10, 1, SV("abcde"), 2, 4, -3); - test(S("abcdefghij"), 10, 1, SV("abcde"), 4, 0, 0); - test(S("abcdefghij"), 10, 1, SV("abcde"), 4, 1, -1); - test(S("abcdefghij"), 10, 1, SV("abcde"), 4, 2, -1); - test(S("abcdefghij"), 10, 1, SV("abcde"), 5, 0, 0); - test(S("abcdefghij"), 10, 1, SV("abcde"), 5, 1, 0); - test(S("abcdefghij"), 10, 1, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 0, 0, 0); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 0, 1, -1); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 0, 5, -5); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 0, 9, -9); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 0, 10, -10); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 0, 11, -10); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 1, 0, 0); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 1, 4, -4); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 1, 8, -8); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 1, 9, -9); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 1, 10, -9); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 5, 0, 0); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 5, 1, -1); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 5, 2, -2); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 9, 0, 0); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 9, 1, -1); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 9, 2, -1); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 10, 0, 0); -} - -template <class S, class SV> -void test36() -{ - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 10, 1, 0); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 11, 0, SV(""), 0, 0, 0); - test(S("abcdefghij"), 11, 0, SV(""), 0, 1, 0); - test(S("abcdefghij"), 11, 0, SV(""), 1, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 0, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 0, 1, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 0, 2, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 0, 4, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 0, 5, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 0, 6, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 1, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 1, 1, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 1, 2, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 1, 3, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 1, 4, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 1, 5, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 2, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 2, 1, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 2, 2, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 2, 3, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 2, 4, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 4, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 4, 1, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 4, 2, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 5, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 5, 1, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 0, 1, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 0, 5, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 0, 9, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 0, 10, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 0, 11, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 1, 1, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 1, 4, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 1, 8, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 1, 9, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 1, 10, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 5, 1, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 5, 2, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 5, 4, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 5, 5, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 5, 6, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 9, 1, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 9, 2, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 0, 1, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 0, 10, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 0, 19, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 0, 20, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 0, 21, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 1, 1, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 1, 9, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 1, 18, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 1, 19, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 1, 20, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 10, 1, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 10, 5, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 10, 9, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 10, 10, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 10, 11, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 19, 1, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 19, 2, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); -} - -template <class S, class SV> -void test37() -{ - test(S("abcdefghijklmnopqrst"), 0, 0, SV(""), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV(""), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 0, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 0, 4, -4); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 0, 6, -5); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 1, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 1, 3, -3); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 1, 5, -4); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 2, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 2, 3, -3); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 2, 4, -3); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 4, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 4, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 4, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 5, 1, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 0, 9, -9); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 0, 11, -10); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 1, 8, -8); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 1, 10, -9); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 5, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 5, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 9, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 9, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 1, SV(""), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV(""), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 0, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 0, 4, -3); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 0, 5, -4); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 0, 6, -4); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 1, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 1, 3, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 1, 5, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 2, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 2, 1, -2); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 2, 3, -2); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 2, 4, -2); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 4, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 4, 1, -4); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 4, 2, -4); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 5, 1, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 6, 0, 0); -} - -template <class S, class SV> -void test38() -{ - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 0, 5, -4); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 0, 9, -8); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 0, 10, -9); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 0, 11, -9); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 1, 8, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 1, 10, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 5, 1, -5); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 5, 2, -5); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 5, 4, -5); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 9, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 9, 1, -9); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 9, 2, -9); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 10, 1, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 10, -9); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 19, -18); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 20, -19); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 21, -19); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 10, SV(""), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV(""), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 0, 1, 9); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 0, 2, 8); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 0, 4, 6); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 0, 5, 5); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 0, 6, 5); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 1, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 1, 3, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 1, 5, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 2, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 2, 1, -2); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 2, 3, -2); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 2, 4, -2); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 4, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 4, 1, -4); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 4, 2, -4); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 5, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 5, 1, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 0, 1, 9); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 0, 5, 5); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 0, 9, 1); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 0, 10, 0); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 0, 11, 0); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 1, 8, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 1, 10, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 5, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 5, 1, -5); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 5, 2, -5); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 5, 4, -5); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 9, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 9, 1, -9); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 9, 2, -9); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 10, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 10, 1, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 1, 9); -} - -template <class S, class SV> -void test39() -{ - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 10, 0); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 19, -9); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 20, -10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 21, -10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 19, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 20, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 20, 1, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 19, SV(""), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV(""), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 0, 1, 18); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 0, 2, 17); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 0, 4, 15); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 0, 5, 14); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 0, 6, 14); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 1, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 1, 3, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 1, 5, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 2, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 2, 1, -2); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 2, 3, -2); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 2, 4, -2); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 4, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 4, 1, -4); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 4, 2, -4); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 5, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 5, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 0, 1, 18); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 0, 5, 14); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 0, 9, 10); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 0, 10, 9); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 0, 11, 9); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 1, 8, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 1, 10, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 5, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 5, 1, -5); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 5, 2, -5); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 5, 4, -5); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 9, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 9, 1, -9); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 9, 2, -9); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 10, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 10, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 0, 1, 18); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 0, 10, 9); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 0, 19, 0); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 0, 20, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 0, 21, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 10, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 19, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 20, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 20, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 20, SV(""), 0, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV(""), 0, 1, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 0, 0, 20); -} - -template <class S, class SV> -void test40() -{ - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 0, 2, 18); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 0, 4, 16); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 0, 5, 15); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 0, 6, 15); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 1, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 1, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 1, 3, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 1, 5, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 2, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 2, 1, -2); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 2, 3, -2); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 2, 4, -2); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 4, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 4, 1, -4); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 4, 2, -4); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 5, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 5, 1, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 0, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 0, 5, 15); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 0, 9, 11); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 0, 11, 10); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 1, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 1, 8, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 1, 10, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 5, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 5, 1, -5); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 5, 2, -5); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 5, 4, -5); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 9, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 9, 1, -9); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 9, 2, -9); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 10, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 10, 1, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 0, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 0, 20, 0); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 0, 21, 0); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 1, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 10, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 19, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 20, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 20, 1, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 21, SV(""), 0, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV(""), 0, 1, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 0, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 0, 2, 18); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 0, 4, 16); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 0, 5, 15); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 0, 6, 15); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 1, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 1, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 1, 3, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 1, 5, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 2, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 2, 1, -2); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 2, 3, -2); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 2, 4, -2); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 4, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 4, 1, -4); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 4, 2, -4); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 5, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 5, 1, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 0, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 0, 5, 15); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 0, 9, 11); -} - -template <class S, class SV> -void test41() -{ - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 0, 11, 10); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 1, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 1, 8, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 1, 10, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 5, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 5, 1, -5); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 5, 2, -5); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 5, 4, -5); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 9, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 9, 1, -9); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 9, 2, -9); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 10, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 10, 1, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 0, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 0, 20, 0); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 0, 21, 0); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 1, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 10, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 19, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 20, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 20, 1, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV(""), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV(""), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 0, 2, -2); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 0, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 0, 6, -5); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 1, 2, -2); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 1, 3, -3); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 1, 5, -4); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 2, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 2, 3, -3); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 2, 4, -3); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 4, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 4, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 4, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 5, 1, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 0, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 0, 11, -10); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 1, 8, -8); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 1, 10, -9); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 5, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 5, 2, -2); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 9, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 9, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); -} - -template <class S, class SV> -void test42() -{ - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 1, SV(""), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV(""), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 0, 2, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 0, 4, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 0, 6, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 1, 1, 0); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 1, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 1, 3, -2); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 1, 4, -3); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 1, 5, -3); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 2, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 2, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 2, 3, -1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 2, 4, -1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 4, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 4, 1, -3); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 4, 2, -3); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 5, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 0, 9, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 0, 11, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 1, 1, 0); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 1, 4, -3); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 1, 8, -7); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 1, 9, -8); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 1, 10, -8); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 5, 1, -4); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 5, 2, -4); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 5, 5, -4); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 5, 6, -4); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 9, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 9, 1, -8); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 9, 2, -8); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 10, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 1, 0); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 9, -8); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 18, -17); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 19, -18); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 20, -18); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 9, SV(""), 0, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV(""), 0, 1, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 0, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 0, 2, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 0, 4, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 0, 5, 1); -} - -template <class S, class SV> -void test43() -{ - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 0, 6, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 1, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 1, 1, 8); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 1, 2, 7); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 1, 3, 6); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 1, 4, 5); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 1, 5, 5); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 2, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 2, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 2, 3, -1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 2, 4, -1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 4, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 4, 1, -3); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 4, 2, -3); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 5, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 5, 1, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 0, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 0, 9, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 0, 11, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 1, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 1, 1, 8); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 1, 4, 5); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 1, 8, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 1, 9, 0); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 1, 10, 0); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 5, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 5, 1, -4); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 5, 2, -4); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 5, 5, -4); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 5, 6, -4); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 9, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 9, 1, -8); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 9, 2, -8); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 10, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 10, 1, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 1, 8); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 9, 0); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 18, -9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 19, -10); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 20, -10); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 19, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 20, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 20, 1, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 18, SV(""), 0, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV(""), 0, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 0, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 0, 2, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 0, 4, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 0, 6, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 1, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 1, 1, 17); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 1, 2, 16); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 1, 3, 15); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 1, 4, 14); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 1, 5, 14); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 2, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 2, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 2, 3, -1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 2, 4, -1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 4, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 4, 1, -3); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 4, 2, -3); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 5, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 5, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 0, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 0, 9, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 0, 11, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 1, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 1, 1, 17); -} - -template <class S, class SV> -void test44() -{ - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 1, 4, 14); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 1, 8, 10); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 1, 10, 9); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 5, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 5, 1, -4); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 5, 2, -4); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 5, 5, -4); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 5, 6, -4); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 9, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 9, 1, -8); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 9, 2, -8); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 10, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 10, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 0, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 1, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 1, 1, 17); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 1, 18, 0); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 10, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 19, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 20, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 20, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 19, SV(""), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV(""), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 0, 2, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 0, 4, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 0, 6, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 1, 2, 17); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 1, 3, 16); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 1, 4, 15); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 1, 5, 15); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 2, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 2, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 2, 3, -1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 2, 4, -1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 4, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 4, 1, -3); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 4, 2, -3); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 5, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 5, 1, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 0, 9, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 0, 11, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 1, 4, 15); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 1, 8, 11); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 1, 9, 10); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 1, 10, 10); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 5, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 5, 1, -4); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 5, 2, -4); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 5, 5, -4); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 5, 6, -4); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 9, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 9, 1, -8); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 9, 2, -8); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 10, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 10, 1, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 1, 9, 10); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 1, 18, 1); -} - -template <class S, class SV> -void test45() -{ - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 1, 19, 0); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 1, 20, 0); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 10, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 19, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 20, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 20, 1, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 20, SV(""), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV(""), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 0, 2, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 0, 4, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 0, 6, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 1, 2, 17); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 1, 3, 16); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 1, 4, 15); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 1, 5, 15); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 2, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 2, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 2, 3, -1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 2, 4, -1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 4, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 4, 1, -3); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 4, 2, -3); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 5, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 5, 1, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 0, 9, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 0, 11, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 1, 4, 15); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 1, 8, 11); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 1, 9, 10); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 1, 10, 10); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 5, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 5, 1, -4); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 5, 2, -4); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 5, 5, -4); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 5, 6, -4); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 9, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 9, 1, -8); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 9, 2, -8); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 10, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 10, 1, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 1, 9, 10); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 1, 18, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 1, 19, 0); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 1, 20, 0); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 10, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 19, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 20, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 20, 1, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV(""), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV(""), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 0, 2, -2); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 0, 4, -4); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 0, 6, -5); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 1, 2, -2); -} - -template <class S, class SV> -void test46() -{ - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 1, 3, -3); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 1, 5, -4); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 2, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 2, 3, -3); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 2, 4, -3); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 4, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 4, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 4, 2, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 5, 1, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 0, 9, -9); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 0, 11, -10); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 1, 8, -8); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 1, 10, -9); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 5, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 5, 2, -2); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 9, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 9, 2, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 1, SV(""), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV(""), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 0, 2, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 0, 4, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 0, 6, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 1, 2, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 1, 3, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 1, 5, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 2, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 2, 1, 8); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 2, 2, 8); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 2, 3, 8); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 2, 4, 8); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 4, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 4, 1, 6); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 4, 2, 6); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 5, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 0, 9, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 0, 11, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 1, 8, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 1, 10, 9); -} - -template <class S, class SV> -void test47() -{ - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 5, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 5, 2, 5); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 5, 4, 5); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 5, 5, 5); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 5, 6, 5); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 9, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 9, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 9, 2, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 10, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 19, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 20, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 21, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 18, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 19, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 20, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 5, -4); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 9, -8); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 19, 1, -9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 19, 2, -9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 5, SV(""), 0, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV(""), 0, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 0, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 0, 2, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 0, 4, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 0, 6, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 1, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 1, 2, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 1, 3, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 1, 5, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 2, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 2, 1, 8); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 2, 2, 8); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 2, 3, 8); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 2, 4, 8); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 4, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 4, 1, 6); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 4, 2, 6); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 5, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 5, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 0, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 0, 9, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 0, 11, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 1, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 1, 8, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 1, 10, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 5, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 5, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 5, 2, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 5, 4, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 5, 5, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 5, 6, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 9, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 9, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 9, 2, 1); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 10, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 10, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 0, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 0, 19, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 0, 20, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 0, 21, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 1, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 1, 18, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 1, 19, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 1, 20, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 10, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 10, 1, 4); -} - -template <class S, class SV> -void test48() -{ - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 10, 5, 0); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 10, 9, -4); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 10, 10, -5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 10, 11, -5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 19, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 19, 1, -9); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 19, 2, -9); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 20, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 20, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 9, SV(""), 0, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV(""), 0, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 0, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 0, 2, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 0, 4, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 0, 6, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 1, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 1, 2, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 1, 3, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 1, 5, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 2, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 2, 1, 8); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 2, 2, 8); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 2, 3, 8); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 2, 4, 8); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 4, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 4, 1, 6); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 4, 2, 6); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 5, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 5, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 0, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 0, 9, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 0, 11, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 1, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 1, 8, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 1, 10, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 5, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 5, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 5, 2, 5); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 5, 4, 5); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 5, 5, 5); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 5, 6, 5); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 9, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 9, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 9, 2, 1); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 10, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 10, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 0, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 0, 19, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 0, 20, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 0, 21, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 1, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 1, 18, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 1, 19, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 1, 20, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 10, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 10, 1, 8); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 10, 5, 4); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 10, 9, 0); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 10, 10, -1); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 10, 11, -1); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 19, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 19, 1, -9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 19, 2, -9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 20, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 20, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 10, SV(""), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV(""), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 0, 2, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 0, 4, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 0, 6, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 1, 2, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 1, 3, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 1, 5, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 2, 0, 10); -} - -template <class S, class SV> -void test49() -{ - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 2, 1, 8); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 2, 2, 8); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 2, 3, 8); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 2, 4, 8); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 4, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 4, 1, 6); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 4, 2, 6); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 5, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 5, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 0, 9, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 0, 11, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 1, 8, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 1, 10, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 5, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 5, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 5, 2, 5); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 5, 4, 5); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 5, 5, 5); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 5, 6, 5); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 9, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 9, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 9, 2, 1); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 10, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 10, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 0, 19, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 0, 20, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 0, 21, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 1, 18, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 1, 19, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 1, 20, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 10, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 10, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 10, 5, 5); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 10, 9, 1); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 10, 10, 0); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 10, 11, 0); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 19, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 19, 1, -9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 19, 2, -9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 20, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 20, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 11, SV(""), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV(""), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 0, 2, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 0, 4, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 0, 6, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 1, 2, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 1, 3, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 1, 5, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 2, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 2, 1, 8); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 2, 2, 8); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 2, 3, 8); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 2, 4, 8); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 4, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 4, 1, 6); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 4, 2, 6); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 5, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 5, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 0, 9, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 0, 11, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 1, 8, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 1, 10, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 5, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 5, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 5, 2, 5); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 5, 4, 5); -} - -template <class S, class SV> -void test50() -{ - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 5, 5, 5); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 5, 6, 5); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 9, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 9, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 9, 2, 1); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 10, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 10, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 0, 19, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 0, 20, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 0, 21, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 1, 18, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 1, 19, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 1, 20, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 10, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 10, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 10, 5, 5); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 10, 9, 1); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 10, 10, 0); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 10, 11, 0); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 19, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 19, 1, -9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 19, 2, -9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 20, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 20, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV(""), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV(""), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 0, 2, -2); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 0, 4, -4); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 0, 6, -5); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 1, 2, -2); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 1, 3, -3); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 1, 5, -4); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 2, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 2, 3, -3); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 2, 4, -3); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 4, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 4, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 4, 2, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 5, 1, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 0, 9, -9); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 0, 11, -10); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 1, 8, -8); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 1, 10, -9); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 5, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 5, 2, -2); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 9, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 9, 2, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); -} - -template <class S, class SV> -void test51() -{ - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 1, SV(""), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV(""), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 0, 2, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 0, 4, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 0, 5, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 0, 6, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 1, 2, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 1, 3, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 1, 4, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 1, 5, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 2, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 2, 1, 17); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 2, 2, 17); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 2, 3, 17); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 2, 4, 17); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 4, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 4, 1, 15); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 4, 2, 15); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 5, 1, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 0, 5, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 0, 9, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 0, 10, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 0, 11, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 1, 4, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 1, 8, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 1, 9, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 1, 10, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 5, 1, 14); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 5, 2, 14); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 5, 4, 14); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 5, 5, 14); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 5, 6, 14); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 9, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 9, 1, 10); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 9, 2, 10); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 10, 1, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 0, 10, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 0, 19, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 0, 20, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 0, 21, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 1, 9, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 1, 18, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 1, 19, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 1, 20, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 10, 1, 9); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 10, 5, 9); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 10, 9, 9); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 10, 10, 9); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 10, 11, 9); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 19, 1, 0); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 19, 2, 0); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 2, SV(""), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV(""), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 0, 2, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 0, 4, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 0, 5, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 0, 6, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 1, 2, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 1, 3, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 1, 4, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 1, 5, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 2, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 2, 1, 17); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 2, 2, 17); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 2, 3, 17); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 2, 4, 17); -} - -template <class S, class SV> -void test52() -{ - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 4, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 4, 1, 15); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 4, 2, 15); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 5, 1, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 0, 5, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 0, 9, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 0, 10, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 0, 11, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 1, 4, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 1, 8, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 1, 9, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 1, 10, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 5, 1, 14); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 5, 2, 14); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 5, 4, 14); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 5, 5, 14); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 5, 6, 14); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 9, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 9, 1, 10); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 9, 2, 10); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 10, 1, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 0, 10, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 0, 19, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 0, 20, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 0, 21, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 1, 9, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 1, 18, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 1, 19, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 1, 20, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 10, 1, 9); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 10, 5, 9); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 10, 9, 9); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 10, 10, 9); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 10, 11, 9); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 19, 1, 0); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 19, 2, 0); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV(""), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV(""), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 0, 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 0, 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 0, 6, -5); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 1, 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 1, 3, -3); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 1, 5, -4); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 2, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 2, 3, -3); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 2, 4, -3); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 4, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 4, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 4, 2, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 5, 1, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 0, 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 0, 11, -10); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 1, 8, -8); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 1, 10, -9); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 5, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 5, 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 9, 1, -1); -} - -template <class S, class SV> -void test53() -{ - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 9, 2, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV(""), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV(""), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 0, 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 0, 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 0, 6, -5); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 1, 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 1, 3, -3); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 1, 5, -4); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 2, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 2, 3, -3); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 2, 4, -3); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 4, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 4, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 4, 2, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 5, 1, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 0, 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 0, 11, -10); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 1, 8, -8); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 1, 10, -9); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 5, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 5, 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 9, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 9, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 9, 2, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 20, 0, 0); -} - -template <class S, class SV> -void test54() -{ - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV(""), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV(""), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 0, 2, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 0, 4, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 0, 5, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 0, 6, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 1, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 1, 2, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 1, 3, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 1, 4, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 1, 5, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 2, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 2, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 2, 2, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 2, 3, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 2, 4, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 4, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 4, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 4, 2, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 5, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 0, 5, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 0, 9, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 0, 10, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 0, 11, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 1, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 1, 4, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 1, 8, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 1, 9, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 1, 10, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 5, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 5, 2, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 5, 4, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 5, 5, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 5, 6, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 9, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 9, 2, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 0, 10, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 0, 19, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 0, 20, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 0, 21, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 1, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 1, 9, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 1, 18, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 1, 19, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 1, 20, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 10, 5, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 10, 9, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 10, 10, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 10, 11, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 19, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 19, 2, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); -} - -template <class S, class SV> -void test55() -{ - test_npos(S(""), 0, 0, SV(""), 0, 0); - test_npos(S(""), 0, 0, SV("abcde"), 0, -5); - test_npos(S("abcde"), 0, 0, SV("abcdefghij"), 0, -10); - test_npos(S("abcde"), 0, 0, SV("abcdefghij"), 1, -9); - test_npos(S("abcde"), 0, 0, SV("abcdefghij"), 5, -5); -} - -int main() -{ - { - typedef std::string S; - typedef std::string_view SV; - test0<S, SV>(); - test1<S, SV>(); - test2<S, SV>(); - test3<S, SV>(); - test4<S, SV>(); - test5<S, SV>(); - test6<S, SV>(); - test7<S, SV>(); - test8<S, SV>(); - test9<S, SV>(); - test10<S, SV>(); - test11<S, SV>(); - test12<S, SV>(); - test13<S, SV>(); - test14<S, SV>(); - test15<S, SV>(); - test16<S, SV>(); - test17<S, SV>(); - test18<S, SV>(); - test19<S, SV>(); - test20<S, SV>(); - test21<S, SV>(); - test22<S, SV>(); - test23<S, SV>(); - test24<S, SV>(); - test25<S, SV>(); - test26<S, SV>(); - test27<S, SV>(); - test28<S, SV>(); - test29<S, SV>(); - test30<S, SV>(); - test31<S, SV>(); - test32<S, SV>(); - test33<S, SV>(); - test34<S, SV>(); - test35<S, SV>(); - test36<S, SV>(); - test37<S, SV>(); - test38<S, SV>(); - test39<S, SV>(); - test40<S, SV>(); - test41<S, SV>(); - test42<S, SV>(); - test43<S, SV>(); - test44<S, SV>(); - test45<S, SV>(); - test46<S, SV>(); - test47<S, SV>(); - test48<S, SV>(); - test49<S, SV>(); - test50<S, SV>(); - test51<S, SV>(); - test52<S, SV>(); - test53<S, SV>(); - test54<S, SV>(); - test55<S, SV>(); - } -#if TEST_STD_VER >= 11 - { - typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S; - typedef std::basic_string_view<char, std::char_traits<char>> SV; - test0<S, SV>(); - test1<S, SV>(); - test2<S, SV>(); - test3<S, SV>(); - test4<S, SV>(); - test5<S, SV>(); - test6<S, SV>(); - test7<S, SV>(); - test8<S, SV>(); - test9<S, SV>(); - test10<S, SV>(); - test11<S, SV>(); - test12<S, SV>(); - test13<S, SV>(); - test14<S, SV>(); - test15<S, SV>(); - test16<S, SV>(); - test17<S, SV>(); - test18<S, SV>(); - test19<S, SV>(); - test20<S, SV>(); - test21<S, SV>(); - test22<S, SV>(); - test23<S, SV>(); - test24<S, SV>(); - test25<S, SV>(); - test26<S, SV>(); - test27<S, SV>(); - test28<S, SV>(); - test29<S, SV>(); - test30<S, SV>(); - test31<S, SV>(); - test32<S, SV>(); - test33<S, SV>(); - test34<S, SV>(); - test35<S, SV>(); - test36<S, SV>(); - test37<S, SV>(); - test38<S, SV>(); - test39<S, SV>(); - test40<S, SV>(); - test41<S, SV>(); - test42<S, SV>(); - test43<S, SV>(); - test44<S, SV>(); - test45<S, SV>(); - test46<S, SV>(); - test47<S, SV>(); - test48<S, SV>(); - test49<S, SV>(); - test50<S, SV>(); - test51<S, SV>(); - test52<S, SV>(); - test53<S, SV>(); - test54<S, SV>(); - test55<S, SV>(); - } -#endif - { - typedef std::string S; - typedef std::string_view SV; - S s = "MNOP"; - SV sv = "CDEF"; - char arr[] = "MNOP"; - -// calls compare(pos, n1, const char *, 0) - assert(s.compare(0, 4, "QRST", 0) > 0); - -// calls compare(pos, n1, string("QRST"), 0, npos) - assert(s.compare(0, 4, "QRST", 0, std::string::npos) < 0); - -// calls compare(pos, n1, T, 0, npos) - assert(s.compare(0, 4, sv, 0) > 0); - -// calls compare(pos, n1, T, 0, npos) - assert(s.compare(0, 4, sv, 0, std::string::npos) > 0); - -// calls compare(pos, n1, const char *, 0) - assert(s.compare(0, 4, arr, 0) > 0); - -// calls compare(size, size, string(arr), 0, npos) - assert(s.compare(0, 4, arr, 0, std::string::npos) == 0); - } -} diff --git a/test/std/strings/basic.string/string.ops/string_compare/size_size_pointer.pass.cpp b/test/std/strings/basic.string/string.ops/string_compare/size_size_pointer.pass.cpp deleted file mode 100644 index 55af081a7261..000000000000 --- a/test/std/strings/basic.string/string.ops/string_compare/size_size_pointer.pass.cpp +++ /dev/null @@ -1,381 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// <string> - -// int compare(size_type pos, size_type n1, const charT *s) const; - -#include <string> -#include <stdexcept> -#include <cassert> - -#include "min_allocator.h" - -#include "test_macros.h" - -int sign(int x) -{ - if (x == 0) - return 0; - if (x < 0) - return -1; - return 1; -} - -template <class S> -void -test(const S& s, typename S::size_type pos1, typename S::size_type n1, - const typename S::value_type* str, int x) -{ - if (pos1 <= s.size()) - assert(sign(s.compare(pos1, n1, str)) == sign(x)); -#ifndef TEST_HAS_NO_EXCEPTIONS - else - { - try - { - TEST_IGNORE_NODISCARD s.compare(pos1, n1, str); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos1 > s.size()); - } - } -#endif -} - -template <class S> -void test0() -{ - test(S(""), 0, 0, "", 0); - test(S(""), 0, 0, "abcde", -5); - test(S(""), 0, 0, "abcdefghij", -10); - test(S(""), 0, 0, "abcdefghijklmnopqrst", -20); - test(S(""), 0, 1, "", 0); - test(S(""), 0, 1, "abcde", -5); - test(S(""), 0, 1, "abcdefghij", -10); - test(S(""), 0, 1, "abcdefghijklmnopqrst", -20); - test(S(""), 1, 0, "", 0); - test(S(""), 1, 0, "abcde", 0); - test(S(""), 1, 0, "abcdefghij", 0); - test(S(""), 1, 0, "abcdefghijklmnopqrst", 0); - test(S("abcde"), 0, 0, "", 0); - test(S("abcde"), 0, 0, "abcde", -5); - test(S("abcde"), 0, 0, "abcdefghij", -10); - test(S("abcde"), 0, 0, "abcdefghijklmnopqrst", -20); - test(S("abcde"), 0, 1, "", 1); - test(S("abcde"), 0, 1, "abcde", -4); - test(S("abcde"), 0, 1, "abcdefghij", -9); - test(S("abcde"), 0, 1, "abcdefghijklmnopqrst", -19); - test(S("abcde"), 0, 2, "", 2); - test(S("abcde"), 0, 2, "abcde", -3); - test(S("abcde"), 0, 2, "abcdefghij", -8); - test(S("abcde"), 0, 2, "abcdefghijklmnopqrst", -18); - test(S("abcde"), 0, 4, "", 4); - test(S("abcde"), 0, 4, "abcde", -1); - test(S("abcde"), 0, 4, "abcdefghij", -6); - test(S("abcde"), 0, 4, "abcdefghijklmnopqrst", -16); - test(S("abcde"), 0, 5, "", 5); - test(S("abcde"), 0, 5, "abcde", 0); - test(S("abcde"), 0, 5, "abcdefghij", -5); - test(S("abcde"), 0, 5, "abcdefghijklmnopqrst", -15); - test(S("abcde"), 0, 6, "", 5); - test(S("abcde"), 0, 6, "abcde", 0); - test(S("abcde"), 0, 6, "abcdefghij", -5); - test(S("abcde"), 0, 6, "abcdefghijklmnopqrst", -15); - test(S("abcde"), 1, 0, "", 0); - test(S("abcde"), 1, 0, "abcde", -5); - test(S("abcde"), 1, 0, "abcdefghij", -10); - test(S("abcde"), 1, 0, "abcdefghijklmnopqrst", -20); - test(S("abcde"), 1, 1, "", 1); - test(S("abcde"), 1, 1, "abcde", 1); - test(S("abcde"), 1, 1, "abcdefghij", 1); - test(S("abcde"), 1, 1, "abcdefghijklmnopqrst", 1); - test(S("abcde"), 1, 2, "", 2); - test(S("abcde"), 1, 2, "abcde", 1); - test(S("abcde"), 1, 2, "abcdefghij", 1); - test(S("abcde"), 1, 2, "abcdefghijklmnopqrst", 1); - test(S("abcde"), 1, 3, "", 3); - test(S("abcde"), 1, 3, "abcde", 1); - test(S("abcde"), 1, 3, "abcdefghij", 1); - test(S("abcde"), 1, 3, "abcdefghijklmnopqrst", 1); - test(S("abcde"), 1, 4, "", 4); - test(S("abcde"), 1, 4, "abcde", 1); - test(S("abcde"), 1, 4, "abcdefghij", 1); - test(S("abcde"), 1, 4, "abcdefghijklmnopqrst", 1); - test(S("abcde"), 1, 5, "", 4); - test(S("abcde"), 1, 5, "abcde", 1); - test(S("abcde"), 1, 5, "abcdefghij", 1); - test(S("abcde"), 1, 5, "abcdefghijklmnopqrst", 1); - test(S("abcde"), 2, 0, "", 0); - test(S("abcde"), 2, 0, "abcde", -5); - test(S("abcde"), 2, 0, "abcdefghij", -10); - test(S("abcde"), 2, 0, "abcdefghijklmnopqrst", -20); - test(S("abcde"), 2, 1, "", 1); - test(S("abcde"), 2, 1, "abcde", 2); - test(S("abcde"), 2, 1, "abcdefghij", 2); - test(S("abcde"), 2, 1, "abcdefghijklmnopqrst", 2); - test(S("abcde"), 2, 2, "", 2); - test(S("abcde"), 2, 2, "abcde", 2); - test(S("abcde"), 2, 2, "abcdefghij", 2); - test(S("abcde"), 2, 2, "abcdefghijklmnopqrst", 2); - test(S("abcde"), 2, 3, "", 3); - test(S("abcde"), 2, 3, "abcde", 2); - test(S("abcde"), 2, 3, "abcdefghij", 2); - test(S("abcde"), 2, 3, "abcdefghijklmnopqrst", 2); - test(S("abcde"), 2, 4, "", 3); - test(S("abcde"), 2, 4, "abcde", 2); - test(S("abcde"), 2, 4, "abcdefghij", 2); - test(S("abcde"), 2, 4, "abcdefghijklmnopqrst", 2); - test(S("abcde"), 4, 0, "", 0); - test(S("abcde"), 4, 0, "abcde", -5); - test(S("abcde"), 4, 0, "abcdefghij", -10); - test(S("abcde"), 4, 0, "abcdefghijklmnopqrst", -20); - test(S("abcde"), 4, 1, "", 1); - test(S("abcde"), 4, 1, "abcde", 4); - test(S("abcde"), 4, 1, "abcdefghij", 4); - test(S("abcde"), 4, 1, "abcdefghijklmnopqrst", 4); - test(S("abcde"), 4, 2, "", 1); - test(S("abcde"), 4, 2, "abcde", 4); - test(S("abcde"), 4, 2, "abcdefghij", 4); - test(S("abcde"), 4, 2, "abcdefghijklmnopqrst", 4); - test(S("abcde"), 5, 0, "", 0); - test(S("abcde"), 5, 0, "abcde", -5); - test(S("abcde"), 5, 0, "abcdefghij", -10); - test(S("abcde"), 5, 0, "abcdefghijklmnopqrst", -20); - test(S("abcde"), 5, 1, "", 0); - test(S("abcde"), 5, 1, "abcde", -5); - test(S("abcde"), 5, 1, "abcdefghij", -10); - test(S("abcde"), 5, 1, "abcdefghijklmnopqrst", -20); -} - -template <class S> -void test1() -{ - test(S("abcde"), 6, 0, "", 0); - test(S("abcde"), 6, 0, "abcde", 0); - test(S("abcde"), 6, 0, "abcdefghij", 0); - test(S("abcde"), 6, 0, "abcdefghijklmnopqrst", 0); - test(S("abcdefghij"), 0, 0, "", 0); - test(S("abcdefghij"), 0, 0, "abcde", -5); - test(S("abcdefghij"), 0, 0, "abcdefghij", -10); - test(S("abcdefghij"), 0, 0, "abcdefghijklmnopqrst", -20); - test(S("abcdefghij"), 0, 1, "", 1); - test(S("abcdefghij"), 0, 1, "abcde", -4); - test(S("abcdefghij"), 0, 1, "abcdefghij", -9); - test(S("abcdefghij"), 0, 1, "abcdefghijklmnopqrst", -19); - test(S("abcdefghij"), 0, 5, "", 5); - test(S("abcdefghij"), 0, 5, "abcde", 0); - test(S("abcdefghij"), 0, 5, "abcdefghij", -5); - test(S("abcdefghij"), 0, 5, "abcdefghijklmnopqrst", -15); - test(S("abcdefghij"), 0, 9, "", 9); - test(S("abcdefghij"), 0, 9, "abcde", 4); - test(S("abcdefghij"), 0, 9, "abcdefghij", -1); - test(S("abcdefghij"), 0, 9, "abcdefghijklmnopqrst", -11); - test(S("abcdefghij"), 0, 10, "", 10); - test(S("abcdefghij"), 0, 10, "abcde", 5); - test(S("abcdefghij"), 0, 10, "abcdefghij", 0); - test(S("abcdefghij"), 0, 10, "abcdefghijklmnopqrst", -10); - test(S("abcdefghij"), 0, 11, "", 10); - test(S("abcdefghij"), 0, 11, "abcde", 5); - test(S("abcdefghij"), 0, 11, "abcdefghij", 0); - test(S("abcdefghij"), 0, 11, "abcdefghijklmnopqrst", -10); - test(S("abcdefghij"), 1, 0, "", 0); - test(S("abcdefghij"), 1, 0, "abcde", -5); - test(S("abcdefghij"), 1, 0, "abcdefghij", -10); - test(S("abcdefghij"), 1, 0, "abcdefghijklmnopqrst", -20); - test(S("abcdefghij"), 1, 1, "", 1); - test(S("abcdefghij"), 1, 1, "abcde", 1); - test(S("abcdefghij"), 1, 1, "abcdefghij", 1); - test(S("abcdefghij"), 1, 1, "abcdefghijklmnopqrst", 1); - test(S("abcdefghij"), 1, 4, "", 4); - test(S("abcdefghij"), 1, 4, "abcde", 1); - test(S("abcdefghij"), 1, 4, "abcdefghij", 1); - test(S("abcdefghij"), 1, 4, "abcdefghijklmnopqrst", 1); - test(S("abcdefghij"), 1, 8, "", 8); - test(S("abcdefghij"), 1, 8, "abcde", 1); - test(S("abcdefghij"), 1, 8, "abcdefghij", 1); - test(S("abcdefghij"), 1, 8, "abcdefghijklmnopqrst", 1); - test(S("abcdefghij"), 1, 9, "", 9); - test(S("abcdefghij"), 1, 9, "abcde", 1); - test(S("abcdefghij"), 1, 9, "abcdefghij", 1); - test(S("abcdefghij"), 1, 9, "abcdefghijklmnopqrst", 1); - test(S("abcdefghij"), 1, 10, "", 9); - test(S("abcdefghij"), 1, 10, "abcde", 1); - test(S("abcdefghij"), 1, 10, "abcdefghij", 1); - test(S("abcdefghij"), 1, 10, "abcdefghijklmnopqrst", 1); - test(S("abcdefghij"), 5, 0, "", 0); - test(S("abcdefghij"), 5, 0, "abcde", -5); - test(S("abcdefghij"), 5, 0, "abcdefghij", -10); - test(S("abcdefghij"), 5, 0, "abcdefghijklmnopqrst", -20); - test(S("abcdefghij"), 5, 1, "", 1); - test(S("abcdefghij"), 5, 1, "abcde", 5); - test(S("abcdefghij"), 5, 1, "abcdefghij", 5); - test(S("abcdefghij"), 5, 1, "abcdefghijklmnopqrst", 5); - test(S("abcdefghij"), 5, 2, "", 2); - test(S("abcdefghij"), 5, 2, "abcde", 5); - test(S("abcdefghij"), 5, 2, "abcdefghij", 5); - test(S("abcdefghij"), 5, 2, "abcdefghijklmnopqrst", 5); - test(S("abcdefghij"), 5, 4, "", 4); - test(S("abcdefghij"), 5, 4, "abcde", 5); - test(S("abcdefghij"), 5, 4, "abcdefghij", 5); - test(S("abcdefghij"), 5, 4, "abcdefghijklmnopqrst", 5); - test(S("abcdefghij"), 5, 5, "", 5); - test(S("abcdefghij"), 5, 5, "abcde", 5); - test(S("abcdefghij"), 5, 5, "abcdefghij", 5); - test(S("abcdefghij"), 5, 5, "abcdefghijklmnopqrst", 5); - test(S("abcdefghij"), 5, 6, "", 5); - test(S("abcdefghij"), 5, 6, "abcde", 5); - test(S("abcdefghij"), 5, 6, "abcdefghij", 5); - test(S("abcdefghij"), 5, 6, "abcdefghijklmnopqrst", 5); - test(S("abcdefghij"), 9, 0, "", 0); - test(S("abcdefghij"), 9, 0, "abcde", -5); - test(S("abcdefghij"), 9, 0, "abcdefghij", -10); - test(S("abcdefghij"), 9, 0, "abcdefghijklmnopqrst", -20); - test(S("abcdefghij"), 9, 1, "", 1); - test(S("abcdefghij"), 9, 1, "abcde", 9); - test(S("abcdefghij"), 9, 1, "abcdefghij", 9); - test(S("abcdefghij"), 9, 1, "abcdefghijklmnopqrst", 9); - test(S("abcdefghij"), 9, 2, "", 1); - test(S("abcdefghij"), 9, 2, "abcde", 9); - test(S("abcdefghij"), 9, 2, "abcdefghij", 9); - test(S("abcdefghij"), 9, 2, "abcdefghijklmnopqrst", 9); - test(S("abcdefghij"), 10, 0, "", 0); - test(S("abcdefghij"), 10, 0, "abcde", -5); - test(S("abcdefghij"), 10, 0, "abcdefghij", -10); - test(S("abcdefghij"), 10, 0, "abcdefghijklmnopqrst", -20); - test(S("abcdefghij"), 10, 1, "", 0); - test(S("abcdefghij"), 10, 1, "abcde", -5); - test(S("abcdefghij"), 10, 1, "abcdefghij", -10); - test(S("abcdefghij"), 10, 1, "abcdefghijklmnopqrst", -20); - test(S("abcdefghij"), 11, 0, "", 0); - test(S("abcdefghij"), 11, 0, "abcde", 0); - test(S("abcdefghij"), 11, 0, "abcdefghij", 0); - test(S("abcdefghij"), 11, 0, "abcdefghijklmnopqrst", 0); -} - -template <class S> -void test2() -{ - test(S("abcdefghijklmnopqrst"), 0, 0, "", 0); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcde", -5); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghij", -10); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghijklmnopqrst", -20); - test(S("abcdefghijklmnopqrst"), 0, 1, "", 1); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcde", -4); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghij", -9); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghijklmnopqrst", -19); - test(S("abcdefghijklmnopqrst"), 0, 10, "", 10); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcde", 5); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghij", 0); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghijklmnopqrst", -10); - test(S("abcdefghijklmnopqrst"), 0, 19, "", 19); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcde", 14); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghij", 9); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghijklmnopqrst", -1); - test(S("abcdefghijklmnopqrst"), 0, 20, "", 20); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcde", 15); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghij", 10); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghijklmnopqrst", 0); - test(S("abcdefghijklmnopqrst"), 0, 21, "", 20); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcde", 15); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghij", 10); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghijklmnopqrst", 0); - test(S("abcdefghijklmnopqrst"), 1, 0, "", 0); - test(S("abcdefghijklmnopqrst"), 1, 0, "abcde", -5); - test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghij", -10); - test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghijklmnopqrst", -20); - test(S("abcdefghijklmnopqrst"), 1, 1, "", 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcde", 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghij", 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghijklmnopqrst", 1); - test(S("abcdefghijklmnopqrst"), 1, 9, "", 9); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcde", 1); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghij", 1); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghijklmnopqrst", 1); - test(S("abcdefghijklmnopqrst"), 1, 18, "", 18); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcde", 1); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghij", 1); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghijklmnopqrst", 1); - test(S("abcdefghijklmnopqrst"), 1, 19, "", 19); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcde", 1); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghij", 1); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghijklmnopqrst", 1); - test(S("abcdefghijklmnopqrst"), 1, 20, "", 19); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcde", 1); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghij", 1); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghijklmnopqrst", 1); - test(S("abcdefghijklmnopqrst"), 10, 0, "", 0); - test(S("abcdefghijklmnopqrst"), 10, 0, "abcde", -5); - test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghij", -10); - test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghijklmnopqrst", -20); - test(S("abcdefghijklmnopqrst"), 10, 1, "", 1); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcde", 10); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghij", 10); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghijklmnopqrst", 10); - test(S("abcdefghijklmnopqrst"), 10, 5, "", 5); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcde", 10); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghij", 10); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghijklmnopqrst", 10); - test(S("abcdefghijklmnopqrst"), 10, 9, "", 9); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcde", 10); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghij", 10); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghijklmnopqrst", 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "", 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcde", 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghij", 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghijklmnopqrst", 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "", 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcde", 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghij", 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghijklmnopqrst", 10); - test(S("abcdefghijklmnopqrst"), 19, 0, "", 0); - test(S("abcdefghijklmnopqrst"), 19, 0, "abcde", -5); - test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghij", -10); - test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghijklmnopqrst", -20); - test(S("abcdefghijklmnopqrst"), 19, 1, "", 1); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcde", 19); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghij", 19); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghijklmnopqrst", 19); - test(S("abcdefghijklmnopqrst"), 19, 2, "", 1); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcde", 19); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghij", 19); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghijklmnopqrst", 19); - test(S("abcdefghijklmnopqrst"), 20, 0, "", 0); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcde", -5); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghij", -10); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghijklmnopqrst", -20); - test(S("abcdefghijklmnopqrst"), 20, 1, "", 0); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcde", -5); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghij", -10); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghijklmnopqrst", -20); - test(S("abcdefghijklmnopqrst"), 21, 0, "", 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcde", 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghij", 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghijklmnopqrst", 0); -} - -int main() -{ - { - typedef std::string S; - test0<S>(); - test1<S>(); - test2<S>(); - } -#if TEST_STD_VER >= 11 - { - typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S; - test0<S>(); - test1<S>(); - test2<S>(); - } -#endif -} diff --git a/test/std/strings/basic.string/string.ops/string_compare/size_size_pointer_size.pass.cpp b/test/std/strings/basic.string/string.ops/string_compare/size_size_pointer_size.pass.cpp deleted file mode 100644 index 2fcecc7556a1..000000000000 --- a/test/std/strings/basic.string/string.ops/string_compare/size_size_pointer_size.pass.cpp +++ /dev/null @@ -1,1332 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// <string> - -// int compare(size_type pos, size_type n1, const charT *s, size_type n2) const; - -#include <string> -#include <stdexcept> -#include <cassert> - -#include "min_allocator.h" - -#include "test_macros.h" - -int sign(int x) -{ - if (x == 0) - return 0; - if (x < 0) - return -1; - return 1; -} - -template <class S> -void -test(const S& s, typename S::size_type pos, typename S::size_type n1, - const typename S::value_type* str, typename S::size_type n2, int x) -{ - if (pos <= s.size()) - assert(sign(s.compare(pos, n1, str, n2)) == sign(x)); -#ifndef TEST_HAS_NO_EXCEPTIONS - else - { - try - { - TEST_IGNORE_NODISCARD s.compare(pos, n1, str, n2); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos > s.size()); - } - } -#endif -} - -template <class S> -void test0() -{ - test(S(""), 0, 0, "", 0, 0); - test(S(""), 0, 0, "abcde", 0, 0); - test(S(""), 0, 0, "abcde", 1, -1); - test(S(""), 0, 0, "abcde", 2, -2); - test(S(""), 0, 0, "abcde", 4, -4); - test(S(""), 0, 0, "abcde", 5, -5); - test(S(""), 0, 0, "abcdefghij", 0, 0); - test(S(""), 0, 0, "abcdefghij", 1, -1); - test(S(""), 0, 0, "abcdefghij", 5, -5); - test(S(""), 0, 0, "abcdefghij", 9, -9); - test(S(""), 0, 0, "abcdefghij", 10, -10); - test(S(""), 0, 0, "abcdefghijklmnopqrst", 0, 0); - test(S(""), 0, 0, "abcdefghijklmnopqrst", 1, -1); - test(S(""), 0, 0, "abcdefghijklmnopqrst", 10, -10); - test(S(""), 0, 0, "abcdefghijklmnopqrst", 19, -19); - test(S(""), 0, 0, "abcdefghijklmnopqrst", 20, -20); - test(S(""), 0, 1, "", 0, 0); - test(S(""), 0, 1, "abcde", 0, 0); - test(S(""), 0, 1, "abcde", 1, -1); - test(S(""), 0, 1, "abcde", 2, -2); - test(S(""), 0, 1, "abcde", 4, -4); - test(S(""), 0, 1, "abcde", 5, -5); - test(S(""), 0, 1, "abcdefghij", 0, 0); - test(S(""), 0, 1, "abcdefghij", 1, -1); - test(S(""), 0, 1, "abcdefghij", 5, -5); - test(S(""), 0, 1, "abcdefghij", 9, -9); - test(S(""), 0, 1, "abcdefghij", 10, -10); - test(S(""), 0, 1, "abcdefghijklmnopqrst", 0, 0); - test(S(""), 0, 1, "abcdefghijklmnopqrst", 1, -1); - test(S(""), 0, 1, "abcdefghijklmnopqrst", 10, -10); - test(S(""), 0, 1, "abcdefghijklmnopqrst", 19, -19); - test(S(""), 0, 1, "abcdefghijklmnopqrst", 20, -20); - test(S(""), 1, 0, "", 0, 0); - test(S(""), 1, 0, "abcde", 0, 0); - test(S(""), 1, 0, "abcde", 1, 0); - test(S(""), 1, 0, "abcde", 2, 0); - test(S(""), 1, 0, "abcde", 4, 0); - test(S(""), 1, 0, "abcde", 5, 0); - test(S(""), 1, 0, "abcdefghij", 0, 0); - test(S(""), 1, 0, "abcdefghij", 1, 0); - test(S(""), 1, 0, "abcdefghij", 5, 0); - test(S(""), 1, 0, "abcdefghij", 9, 0); - test(S(""), 1, 0, "abcdefghij", 10, 0); - test(S(""), 1, 0, "abcdefghijklmnopqrst", 0, 0); - test(S(""), 1, 0, "abcdefghijklmnopqrst", 1, 0); - test(S(""), 1, 0, "abcdefghijklmnopqrst", 10, 0); - test(S(""), 1, 0, "abcdefghijklmnopqrst", 19, 0); - test(S(""), 1, 0, "abcdefghijklmnopqrst", 20, 0); - test(S("abcde"), 0, 0, "", 0, 0); - test(S("abcde"), 0, 0, "abcde", 0, 0); - test(S("abcde"), 0, 0, "abcde", 1, -1); - test(S("abcde"), 0, 0, "abcde", 2, -2); - test(S("abcde"), 0, 0, "abcde", 4, -4); - test(S("abcde"), 0, 0, "abcde", 5, -5); - test(S("abcde"), 0, 0, "abcdefghij", 0, 0); - test(S("abcde"), 0, 0, "abcdefghij", 1, -1); - test(S("abcde"), 0, 0, "abcdefghij", 5, -5); - test(S("abcde"), 0, 0, "abcdefghij", 9, -9); - test(S("abcde"), 0, 0, "abcdefghij", 10, -10); - test(S("abcde"), 0, 0, "abcdefghijklmnopqrst", 0, 0); - test(S("abcde"), 0, 0, "abcdefghijklmnopqrst", 1, -1); - test(S("abcde"), 0, 0, "abcdefghijklmnopqrst", 10, -10); - test(S("abcde"), 0, 0, "abcdefghijklmnopqrst", 19, -19); - test(S("abcde"), 0, 0, "abcdefghijklmnopqrst", 20, -20); - test(S("abcde"), 0, 1, "", 0, 1); - test(S("abcde"), 0, 1, "abcde", 0, 1); - test(S("abcde"), 0, 1, "abcde", 1, 0); - test(S("abcde"), 0, 1, "abcde", 2, -1); - test(S("abcde"), 0, 1, "abcde", 4, -3); - test(S("abcde"), 0, 1, "abcde", 5, -4); - test(S("abcde"), 0, 1, "abcdefghij", 0, 1); - test(S("abcde"), 0, 1, "abcdefghij", 1, 0); - test(S("abcde"), 0, 1, "abcdefghij", 5, -4); - test(S("abcde"), 0, 1, "abcdefghij", 9, -8); - test(S("abcde"), 0, 1, "abcdefghij", 10, -9); - test(S("abcde"), 0, 1, "abcdefghijklmnopqrst", 0, 1); - test(S("abcde"), 0, 1, "abcdefghijklmnopqrst", 1, 0); - test(S("abcde"), 0, 1, "abcdefghijklmnopqrst", 10, -9); - test(S("abcde"), 0, 1, "abcdefghijklmnopqrst", 19, -18); - test(S("abcde"), 0, 1, "abcdefghijklmnopqrst", 20, -19); - test(S("abcde"), 0, 2, "", 0, 2); - test(S("abcde"), 0, 2, "abcde", 0, 2); - test(S("abcde"), 0, 2, "abcde", 1, 1); - test(S("abcde"), 0, 2, "abcde", 2, 0); - test(S("abcde"), 0, 2, "abcde", 4, -2); - test(S("abcde"), 0, 2, "abcde", 5, -3); - test(S("abcde"), 0, 2, "abcdefghij", 0, 2); - test(S("abcde"), 0, 2, "abcdefghij", 1, 1); - test(S("abcde"), 0, 2, "abcdefghij", 5, -3); - test(S("abcde"), 0, 2, "abcdefghij", 9, -7); - test(S("abcde"), 0, 2, "abcdefghij", 10, -8); - test(S("abcde"), 0, 2, "abcdefghijklmnopqrst", 0, 2); - test(S("abcde"), 0, 2, "abcdefghijklmnopqrst", 1, 1); - test(S("abcde"), 0, 2, "abcdefghijklmnopqrst", 10, -8); - test(S("abcde"), 0, 2, "abcdefghijklmnopqrst", 19, -17); - test(S("abcde"), 0, 2, "abcdefghijklmnopqrst", 20, -18); - test(S("abcde"), 0, 4, "", 0, 4); - test(S("abcde"), 0, 4, "abcde", 0, 4); - test(S("abcde"), 0, 4, "abcde", 1, 3); - test(S("abcde"), 0, 4, "abcde", 2, 2); -} - -template <class S> -void test1() -{ - test(S("abcde"), 0, 4, "abcde", 4, 0); - test(S("abcde"), 0, 4, "abcde", 5, -1); - test(S("abcde"), 0, 4, "abcdefghij", 0, 4); - test(S("abcde"), 0, 4, "abcdefghij", 1, 3); - test(S("abcde"), 0, 4, "abcdefghij", 5, -1); - test(S("abcde"), 0, 4, "abcdefghij", 9, -5); - test(S("abcde"), 0, 4, "abcdefghij", 10, -6); - test(S("abcde"), 0, 4, "abcdefghijklmnopqrst", 0, 4); - test(S("abcde"), 0, 4, "abcdefghijklmnopqrst", 1, 3); - test(S("abcde"), 0, 4, "abcdefghijklmnopqrst", 10, -6); - test(S("abcde"), 0, 4, "abcdefghijklmnopqrst", 19, -15); - test(S("abcde"), 0, 4, "abcdefghijklmnopqrst", 20, -16); - test(S("abcde"), 0, 5, "", 0, 5); - test(S("abcde"), 0, 5, "abcde", 0, 5); - test(S("abcde"), 0, 5, "abcde", 1, 4); - test(S("abcde"), 0, 5, "abcde", 2, 3); - test(S("abcde"), 0, 5, "abcde", 4, 1); - test(S("abcde"), 0, 5, "abcde", 5, 0); - test(S("abcde"), 0, 5, "abcdefghij", 0, 5); - test(S("abcde"), 0, 5, "abcdefghij", 1, 4); - test(S("abcde"), 0, 5, "abcdefghij", 5, 0); - test(S("abcde"), 0, 5, "abcdefghij", 9, -4); - test(S("abcde"), 0, 5, "abcdefghij", 10, -5); - test(S("abcde"), 0, 5, "abcdefghijklmnopqrst", 0, 5); - test(S("abcde"), 0, 5, "abcdefghijklmnopqrst", 1, 4); - test(S("abcde"), 0, 5, "abcdefghijklmnopqrst", 10, -5); - test(S("abcde"), 0, 5, "abcdefghijklmnopqrst", 19, -14); - test(S("abcde"), 0, 5, "abcdefghijklmnopqrst", 20, -15); - test(S("abcde"), 0, 6, "", 0, 5); - test(S("abcde"), 0, 6, "abcde", 0, 5); - test(S("abcde"), 0, 6, "abcde", 1, 4); - test(S("abcde"), 0, 6, "abcde", 2, 3); - test(S("abcde"), 0, 6, "abcde", 4, 1); - test(S("abcde"), 0, 6, "abcde", 5, 0); - test(S("abcde"), 0, 6, "abcdefghij", 0, 5); - test(S("abcde"), 0, 6, "abcdefghij", 1, 4); - test(S("abcde"), 0, 6, "abcdefghij", 5, 0); - test(S("abcde"), 0, 6, "abcdefghij", 9, -4); - test(S("abcde"), 0, 6, "abcdefghij", 10, -5); - test(S("abcde"), 0, 6, "abcdefghijklmnopqrst", 0, 5); - test(S("abcde"), 0, 6, "abcdefghijklmnopqrst", 1, 4); - test(S("abcde"), 0, 6, "abcdefghijklmnopqrst", 10, -5); - test(S("abcde"), 0, 6, "abcdefghijklmnopqrst", 19, -14); - test(S("abcde"), 0, 6, "abcdefghijklmnopqrst", 20, -15); - test(S("abcde"), 1, 0, "", 0, 0); - test(S("abcde"), 1, 0, "abcde", 0, 0); - test(S("abcde"), 1, 0, "abcde", 1, -1); - test(S("abcde"), 1, 0, "abcde", 2, -2); - test(S("abcde"), 1, 0, "abcde", 4, -4); - test(S("abcde"), 1, 0, "abcde", 5, -5); - test(S("abcde"), 1, 0, "abcdefghij", 0, 0); - test(S("abcde"), 1, 0, "abcdefghij", 1, -1); - test(S("abcde"), 1, 0, "abcdefghij", 5, -5); - test(S("abcde"), 1, 0, "abcdefghij", 9, -9); - test(S("abcde"), 1, 0, "abcdefghij", 10, -10); - test(S("abcde"), 1, 0, "abcdefghijklmnopqrst", 0, 0); - test(S("abcde"), 1, 0, "abcdefghijklmnopqrst", 1, -1); - test(S("abcde"), 1, 0, "abcdefghijklmnopqrst", 10, -10); - test(S("abcde"), 1, 0, "abcdefghijklmnopqrst", 19, -19); - test(S("abcde"), 1, 0, "abcdefghijklmnopqrst", 20, -20); - test(S("abcde"), 1, 1, "", 0, 1); - test(S("abcde"), 1, 1, "abcde", 0, 1); - test(S("abcde"), 1, 1, "abcde", 1, 1); - test(S("abcde"), 1, 1, "abcde", 2, 1); - test(S("abcde"), 1, 1, "abcde", 4, 1); - test(S("abcde"), 1, 1, "abcde", 5, 1); - test(S("abcde"), 1, 1, "abcdefghij", 0, 1); - test(S("abcde"), 1, 1, "abcdefghij", 1, 1); - test(S("abcde"), 1, 1, "abcdefghij", 5, 1); - test(S("abcde"), 1, 1, "abcdefghij", 9, 1); - test(S("abcde"), 1, 1, "abcdefghij", 10, 1); - test(S("abcde"), 1, 1, "abcdefghijklmnopqrst", 0, 1); - test(S("abcde"), 1, 1, "abcdefghijklmnopqrst", 1, 1); - test(S("abcde"), 1, 1, "abcdefghijklmnopqrst", 10, 1); - test(S("abcde"), 1, 1, "abcdefghijklmnopqrst", 19, 1); - test(S("abcde"), 1, 1, "abcdefghijklmnopqrst", 20, 1); - test(S("abcde"), 1, 2, "", 0, 2); - test(S("abcde"), 1, 2, "abcde", 0, 2); - test(S("abcde"), 1, 2, "abcde", 1, 1); - test(S("abcde"), 1, 2, "abcde", 2, 1); - test(S("abcde"), 1, 2, "abcde", 4, 1); - test(S("abcde"), 1, 2, "abcde", 5, 1); - test(S("abcde"), 1, 2, "abcdefghij", 0, 2); - test(S("abcde"), 1, 2, "abcdefghij", 1, 1); - test(S("abcde"), 1, 2, "abcdefghij", 5, 1); - test(S("abcde"), 1, 2, "abcdefghij", 9, 1); - test(S("abcde"), 1, 2, "abcdefghij", 10, 1); - test(S("abcde"), 1, 2, "abcdefghijklmnopqrst", 0, 2); - test(S("abcde"), 1, 2, "abcdefghijklmnopqrst", 1, 1); - test(S("abcde"), 1, 2, "abcdefghijklmnopqrst", 10, 1); - test(S("abcde"), 1, 2, "abcdefghijklmnopqrst", 19, 1); - test(S("abcde"), 1, 2, "abcdefghijklmnopqrst", 20, 1); - test(S("abcde"), 1, 3, "", 0, 3); - test(S("abcde"), 1, 3, "abcde", 0, 3); - test(S("abcde"), 1, 3, "abcde", 1, 1); - test(S("abcde"), 1, 3, "abcde", 2, 1); - test(S("abcde"), 1, 3, "abcde", 4, 1); - test(S("abcde"), 1, 3, "abcde", 5, 1); - test(S("abcde"), 1, 3, "abcdefghij", 0, 3); - test(S("abcde"), 1, 3, "abcdefghij", 1, 1); -} - -template <class S> -void test2() -{ - test(S("abcde"), 1, 3, "abcdefghij", 5, 1); - test(S("abcde"), 1, 3, "abcdefghij", 9, 1); - test(S("abcde"), 1, 3, "abcdefghij", 10, 1); - test(S("abcde"), 1, 3, "abcdefghijklmnopqrst", 0, 3); - test(S("abcde"), 1, 3, "abcdefghijklmnopqrst", 1, 1); - test(S("abcde"), 1, 3, "abcdefghijklmnopqrst", 10, 1); - test(S("abcde"), 1, 3, "abcdefghijklmnopqrst", 19, 1); - test(S("abcde"), 1, 3, "abcdefghijklmnopqrst", 20, 1); - test(S("abcde"), 1, 4, "", 0, 4); - test(S("abcde"), 1, 4, "abcde", 0, 4); - test(S("abcde"), 1, 4, "abcde", 1, 1); - test(S("abcde"), 1, 4, "abcde", 2, 1); - test(S("abcde"), 1, 4, "abcde", 4, 1); - test(S("abcde"), 1, 4, "abcde", 5, 1); - test(S("abcde"), 1, 4, "abcdefghij", 0, 4); - test(S("abcde"), 1, 4, "abcdefghij", 1, 1); - test(S("abcde"), 1, 4, "abcdefghij", 5, 1); - test(S("abcde"), 1, 4, "abcdefghij", 9, 1); - test(S("abcde"), 1, 4, "abcdefghij", 10, 1); - test(S("abcde"), 1, 4, "abcdefghijklmnopqrst", 0, 4); - test(S("abcde"), 1, 4, "abcdefghijklmnopqrst", 1, 1); - test(S("abcde"), 1, 4, "abcdefghijklmnopqrst", 10, 1); - test(S("abcde"), 1, 4, "abcdefghijklmnopqrst", 19, 1); - test(S("abcde"), 1, 4, "abcdefghijklmnopqrst", 20, 1); - test(S("abcde"), 1, 5, "", 0, 4); - test(S("abcde"), 1, 5, "abcde", 0, 4); - test(S("abcde"), 1, 5, "abcde", 1, 1); - test(S("abcde"), 1, 5, "abcde", 2, 1); - test(S("abcde"), 1, 5, "abcde", 4, 1); - test(S("abcde"), 1, 5, "abcde", 5, 1); - test(S("abcde"), 1, 5, "abcdefghij", 0, 4); - test(S("abcde"), 1, 5, "abcdefghij", 1, 1); - test(S("abcde"), 1, 5, "abcdefghij", 5, 1); - test(S("abcde"), 1, 5, "abcdefghij", 9, 1); - test(S("abcde"), 1, 5, "abcdefghij", 10, 1); - test(S("abcde"), 1, 5, "abcdefghijklmnopqrst", 0, 4); - test(S("abcde"), 1, 5, "abcdefghijklmnopqrst", 1, 1); - test(S("abcde"), 1, 5, "abcdefghijklmnopqrst", 10, 1); - test(S("abcde"), 1, 5, "abcdefghijklmnopqrst", 19, 1); - test(S("abcde"), 1, 5, "abcdefghijklmnopqrst", 20, 1); - test(S("abcde"), 2, 0, "", 0, 0); - test(S("abcde"), 2, 0, "abcde", 0, 0); - test(S("abcde"), 2, 0, "abcde", 1, -1); - test(S("abcde"), 2, 0, "abcde", 2, -2); - test(S("abcde"), 2, 0, "abcde", 4, -4); - test(S("abcde"), 2, 0, "abcde", 5, -5); - test(S("abcde"), 2, 0, "abcdefghij", 0, 0); - test(S("abcde"), 2, 0, "abcdefghij", 1, -1); - test(S("abcde"), 2, 0, "abcdefghij", 5, -5); - test(S("abcde"), 2, 0, "abcdefghij", 9, -9); - test(S("abcde"), 2, 0, "abcdefghij", 10, -10); - test(S("abcde"), 2, 0, "abcdefghijklmnopqrst", 0, 0); - test(S("abcde"), 2, 0, "abcdefghijklmnopqrst", 1, -1); - test(S("abcde"), 2, 0, "abcdefghijklmnopqrst", 10, -10); - test(S("abcde"), 2, 0, "abcdefghijklmnopqrst", 19, -19); - test(S("abcde"), 2, 0, "abcdefghijklmnopqrst", 20, -20); - test(S("abcde"), 2, 1, "", 0, 1); - test(S("abcde"), 2, 1, "abcde", 0, 1); - test(S("abcde"), 2, 1, "abcde", 1, 2); - test(S("abcde"), 2, 1, "abcde", 2, 2); - test(S("abcde"), 2, 1, "abcde", 4, 2); - test(S("abcde"), 2, 1, "abcde", 5, 2); - test(S("abcde"), 2, 1, "abcdefghij", 0, 1); - test(S("abcde"), 2, 1, "abcdefghij", 1, 2); - test(S("abcde"), 2, 1, "abcdefghij", 5, 2); - test(S("abcde"), 2, 1, "abcdefghij", 9, 2); - test(S("abcde"), 2, 1, "abcdefghij", 10, 2); - test(S("abcde"), 2, 1, "abcdefghijklmnopqrst", 0, 1); - test(S("abcde"), 2, 1, "abcdefghijklmnopqrst", 1, 2); - test(S("abcde"), 2, 1, "abcdefghijklmnopqrst", 10, 2); - test(S("abcde"), 2, 1, "abcdefghijklmnopqrst", 19, 2); - test(S("abcde"), 2, 1, "abcdefghijklmnopqrst", 20, 2); - test(S("abcde"), 2, 2, "", 0, 2); - test(S("abcde"), 2, 2, "abcde", 0, 2); - test(S("abcde"), 2, 2, "abcde", 1, 2); - test(S("abcde"), 2, 2, "abcde", 2, 2); - test(S("abcde"), 2, 2, "abcde", 4, 2); - test(S("abcde"), 2, 2, "abcde", 5, 2); - test(S("abcde"), 2, 2, "abcdefghij", 0, 2); - test(S("abcde"), 2, 2, "abcdefghij", 1, 2); - test(S("abcde"), 2, 2, "abcdefghij", 5, 2); - test(S("abcde"), 2, 2, "abcdefghij", 9, 2); - test(S("abcde"), 2, 2, "abcdefghij", 10, 2); - test(S("abcde"), 2, 2, "abcdefghijklmnopqrst", 0, 2); - test(S("abcde"), 2, 2, "abcdefghijklmnopqrst", 1, 2); - test(S("abcde"), 2, 2, "abcdefghijklmnopqrst", 10, 2); - test(S("abcde"), 2, 2, "abcdefghijklmnopqrst", 19, 2); - test(S("abcde"), 2, 2, "abcdefghijklmnopqrst", 20, 2); - test(S("abcde"), 2, 3, "", 0, 3); - test(S("abcde"), 2, 3, "abcde", 0, 3); - test(S("abcde"), 2, 3, "abcde", 1, 2); - test(S("abcde"), 2, 3, "abcde", 2, 2); - test(S("abcde"), 2, 3, "abcde", 4, 2); - test(S("abcde"), 2, 3, "abcde", 5, 2); - test(S("abcde"), 2, 3, "abcdefghij", 0, 3); - test(S("abcde"), 2, 3, "abcdefghij", 1, 2); - test(S("abcde"), 2, 3, "abcdefghij", 5, 2); - test(S("abcde"), 2, 3, "abcdefghij", 9, 2); - test(S("abcde"), 2, 3, "abcdefghij", 10, 2); - test(S("abcde"), 2, 3, "abcdefghijklmnopqrst", 0, 3); -} - -template <class S> -void test3() -{ - test(S("abcde"), 2, 3, "abcdefghijklmnopqrst", 1, 2); - test(S("abcde"), 2, 3, "abcdefghijklmnopqrst", 10, 2); - test(S("abcde"), 2, 3, "abcdefghijklmnopqrst", 19, 2); - test(S("abcde"), 2, 3, "abcdefghijklmnopqrst", 20, 2); - test(S("abcde"), 2, 4, "", 0, 3); - test(S("abcde"), 2, 4, "abcde", 0, 3); - test(S("abcde"), 2, 4, "abcde", 1, 2); - test(S("abcde"), 2, 4, "abcde", 2, 2); - test(S("abcde"), 2, 4, "abcde", 4, 2); - test(S("abcde"), 2, 4, "abcde", 5, 2); - test(S("abcde"), 2, 4, "abcdefghij", 0, 3); - test(S("abcde"), 2, 4, "abcdefghij", 1, 2); - test(S("abcde"), 2, 4, "abcdefghij", 5, 2); - test(S("abcde"), 2, 4, "abcdefghij", 9, 2); - test(S("abcde"), 2, 4, "abcdefghij", 10, 2); - test(S("abcde"), 2, 4, "abcdefghijklmnopqrst", 0, 3); - test(S("abcde"), 2, 4, "abcdefghijklmnopqrst", 1, 2); - test(S("abcde"), 2, 4, "abcdefghijklmnopqrst", 10, 2); - test(S("abcde"), 2, 4, "abcdefghijklmnopqrst", 19, 2); - test(S("abcde"), 2, 4, "abcdefghijklmnopqrst", 20, 2); - test(S("abcde"), 4, 0, "", 0, 0); - test(S("abcde"), 4, 0, "abcde", 0, 0); - test(S("abcde"), 4, 0, "abcde", 1, -1); - test(S("abcde"), 4, 0, "abcde", 2, -2); - test(S("abcde"), 4, 0, "abcde", 4, -4); - test(S("abcde"), 4, 0, "abcde", 5, -5); - test(S("abcde"), 4, 0, "abcdefghij", 0, 0); - test(S("abcde"), 4, 0, "abcdefghij", 1, -1); - test(S("abcde"), 4, 0, "abcdefghij", 5, -5); - test(S("abcde"), 4, 0, "abcdefghij", 9, -9); - test(S("abcde"), 4, 0, "abcdefghij", 10, -10); - test(S("abcde"), 4, 0, "abcdefghijklmnopqrst", 0, 0); - test(S("abcde"), 4, 0, "abcdefghijklmnopqrst", 1, -1); - test(S("abcde"), 4, 0, "abcdefghijklmnopqrst", 10, -10); - test(S("abcde"), 4, 0, "abcdefghijklmnopqrst", 19, -19); - test(S("abcde"), 4, 0, "abcdefghijklmnopqrst", 20, -20); - test(S("abcde"), 4, 1, "", 0, 1); - test(S("abcde"), 4, 1, "abcde", 0, 1); - test(S("abcde"), 4, 1, "abcde", 1, 4); - test(S("abcde"), 4, 1, "abcde", 2, 4); - test(S("abcde"), 4, 1, "abcde", 4, 4); - test(S("abcde"), 4, 1, "abcde", 5, 4); - test(S("abcde"), 4, 1, "abcdefghij", 0, 1); - test(S("abcde"), 4, 1, "abcdefghij", 1, 4); - test(S("abcde"), 4, 1, "abcdefghij", 5, 4); - test(S("abcde"), 4, 1, "abcdefghij", 9, 4); - test(S("abcde"), 4, 1, "abcdefghij", 10, 4); - test(S("abcde"), 4, 1, "abcdefghijklmnopqrst", 0, 1); - test(S("abcde"), 4, 1, "abcdefghijklmnopqrst", 1, 4); - test(S("abcde"), 4, 1, "abcdefghijklmnopqrst", 10, 4); - test(S("abcde"), 4, 1, "abcdefghijklmnopqrst", 19, 4); - test(S("abcde"), 4, 1, "abcdefghijklmnopqrst", 20, 4); - test(S("abcde"), 4, 2, "", 0, 1); - test(S("abcde"), 4, 2, "abcde", 0, 1); - test(S("abcde"), 4, 2, "abcde", 1, 4); - test(S("abcde"), 4, 2, "abcde", 2, 4); - test(S("abcde"), 4, 2, "abcde", 4, 4); - test(S("abcde"), 4, 2, "abcde", 5, 4); - test(S("abcde"), 4, 2, "abcdefghij", 0, 1); - test(S("abcde"), 4, 2, "abcdefghij", 1, 4); - test(S("abcde"), 4, 2, "abcdefghij", 5, 4); - test(S("abcde"), 4, 2, "abcdefghij", 9, 4); - test(S("abcde"), 4, 2, "abcdefghij", 10, 4); - test(S("abcde"), 4, 2, "abcdefghijklmnopqrst", 0, 1); - test(S("abcde"), 4, 2, "abcdefghijklmnopqrst", 1, 4); - test(S("abcde"), 4, 2, "abcdefghijklmnopqrst", 10, 4); - test(S("abcde"), 4, 2, "abcdefghijklmnopqrst", 19, 4); - test(S("abcde"), 4, 2, "abcdefghijklmnopqrst", 20, 4); - test(S("abcde"), 5, 0, "", 0, 0); - test(S("abcde"), 5, 0, "abcde", 0, 0); - test(S("abcde"), 5, 0, "abcde", 1, -1); - test(S("abcde"), 5, 0, "abcde", 2, -2); - test(S("abcde"), 5, 0, "abcde", 4, -4); - test(S("abcde"), 5, 0, "abcde", 5, -5); - test(S("abcde"), 5, 0, "abcdefghij", 0, 0); - test(S("abcde"), 5, 0, "abcdefghij", 1, -1); - test(S("abcde"), 5, 0, "abcdefghij", 5, -5); - test(S("abcde"), 5, 0, "abcdefghij", 9, -9); - test(S("abcde"), 5, 0, "abcdefghij", 10, -10); - test(S("abcde"), 5, 0, "abcdefghijklmnopqrst", 0, 0); - test(S("abcde"), 5, 0, "abcdefghijklmnopqrst", 1, -1); - test(S("abcde"), 5, 0, "abcdefghijklmnopqrst", 10, -10); - test(S("abcde"), 5, 0, "abcdefghijklmnopqrst", 19, -19); - test(S("abcde"), 5, 0, "abcdefghijklmnopqrst", 20, -20); - test(S("abcde"), 5, 1, "", 0, 0); - test(S("abcde"), 5, 1, "abcde", 0, 0); - test(S("abcde"), 5, 1, "abcde", 1, -1); - test(S("abcde"), 5, 1, "abcde", 2, -2); - test(S("abcde"), 5, 1, "abcde", 4, -4); - test(S("abcde"), 5, 1, "abcde", 5, -5); - test(S("abcde"), 5, 1, "abcdefghij", 0, 0); - test(S("abcde"), 5, 1, "abcdefghij", 1, -1); - test(S("abcde"), 5, 1, "abcdefghij", 5, -5); - test(S("abcde"), 5, 1, "abcdefghij", 9, -9); - test(S("abcde"), 5, 1, "abcdefghij", 10, -10); - test(S("abcde"), 5, 1, "abcdefghijklmnopqrst", 0, 0); - test(S("abcde"), 5, 1, "abcdefghijklmnopqrst", 1, -1); - test(S("abcde"), 5, 1, "abcdefghijklmnopqrst", 10, -10); - test(S("abcde"), 5, 1, "abcdefghijklmnopqrst", 19, -19); - test(S("abcde"), 5, 1, "abcdefghijklmnopqrst", 20, -20); -} - -template <class S> -void test4() -{ - test(S("abcde"), 6, 0, "", 0, 0); - test(S("abcde"), 6, 0, "abcde", 0, 0); - test(S("abcde"), 6, 0, "abcde", 1, 0); - test(S("abcde"), 6, 0, "abcde", 2, 0); - test(S("abcde"), 6, 0, "abcde", 4, 0); - test(S("abcde"), 6, 0, "abcde", 5, 0); - test(S("abcde"), 6, 0, "abcdefghij", 0, 0); - test(S("abcde"), 6, 0, "abcdefghij", 1, 0); - test(S("abcde"), 6, 0, "abcdefghij", 5, 0); - test(S("abcde"), 6, 0, "abcdefghij", 9, 0); - test(S("abcde"), 6, 0, "abcdefghij", 10, 0); - test(S("abcde"), 6, 0, "abcdefghijklmnopqrst", 0, 0); - test(S("abcde"), 6, 0, "abcdefghijklmnopqrst", 1, 0); - test(S("abcde"), 6, 0, "abcdefghijklmnopqrst", 10, 0); - test(S("abcde"), 6, 0, "abcdefghijklmnopqrst", 19, 0); - test(S("abcde"), 6, 0, "abcdefghijklmnopqrst", 20, 0); - test(S("abcdefghij"), 0, 0, "", 0, 0); - test(S("abcdefghij"), 0, 0, "abcde", 0, 0); - test(S("abcdefghij"), 0, 0, "abcde", 1, -1); - test(S("abcdefghij"), 0, 0, "abcde", 2, -2); - test(S("abcdefghij"), 0, 0, "abcde", 4, -4); - test(S("abcdefghij"), 0, 0, "abcde", 5, -5); - test(S("abcdefghij"), 0, 0, "abcdefghij", 0, 0); - test(S("abcdefghij"), 0, 0, "abcdefghij", 1, -1); - test(S("abcdefghij"), 0, 0, "abcdefghij", 5, -5); - test(S("abcdefghij"), 0, 0, "abcdefghij", 9, -9); - test(S("abcdefghij"), 0, 0, "abcdefghij", 10, -10); - test(S("abcdefghij"), 0, 0, "abcdefghijklmnopqrst", 0, 0); - test(S("abcdefghij"), 0, 0, "abcdefghijklmnopqrst", 1, -1); - test(S("abcdefghij"), 0, 0, "abcdefghijklmnopqrst", 10, -10); - test(S("abcdefghij"), 0, 0, "abcdefghijklmnopqrst", 19, -19); - test(S("abcdefghij"), 0, 0, "abcdefghijklmnopqrst", 20, -20); - test(S("abcdefghij"), 0, 1, "", 0, 1); - test(S("abcdefghij"), 0, 1, "abcde", 0, 1); - test(S("abcdefghij"), 0, 1, "abcde", 1, 0); - test(S("abcdefghij"), 0, 1, "abcde", 2, -1); - test(S("abcdefghij"), 0, 1, "abcde", 4, -3); - test(S("abcdefghij"), 0, 1, "abcde", 5, -4); - test(S("abcdefghij"), 0, 1, "abcdefghij", 0, 1); - test(S("abcdefghij"), 0, 1, "abcdefghij", 1, 0); - test(S("abcdefghij"), 0, 1, "abcdefghij", 5, -4); - test(S("abcdefghij"), 0, 1, "abcdefghij", 9, -8); - test(S("abcdefghij"), 0, 1, "abcdefghij", 10, -9); - test(S("abcdefghij"), 0, 1, "abcdefghijklmnopqrst", 0, 1); - test(S("abcdefghij"), 0, 1, "abcdefghijklmnopqrst", 1, 0); - test(S("abcdefghij"), 0, 1, "abcdefghijklmnopqrst", 10, -9); - test(S("abcdefghij"), 0, 1, "abcdefghijklmnopqrst", 19, -18); - test(S("abcdefghij"), 0, 1, "abcdefghijklmnopqrst", 20, -19); - test(S("abcdefghij"), 0, 5, "", 0, 5); - test(S("abcdefghij"), 0, 5, "abcde", 0, 5); - test(S("abcdefghij"), 0, 5, "abcde", 1, 4); - test(S("abcdefghij"), 0, 5, "abcde", 2, 3); - test(S("abcdefghij"), 0, 5, "abcde", 4, 1); - test(S("abcdefghij"), 0, 5, "abcde", 5, 0); - test(S("abcdefghij"), 0, 5, "abcdefghij", 0, 5); - test(S("abcdefghij"), 0, 5, "abcdefghij", 1, 4); - test(S("abcdefghij"), 0, 5, "abcdefghij", 5, 0); - test(S("abcdefghij"), 0, 5, "abcdefghij", 9, -4); - test(S("abcdefghij"), 0, 5, "abcdefghij", 10, -5); - test(S("abcdefghij"), 0, 5, "abcdefghijklmnopqrst", 0, 5); - test(S("abcdefghij"), 0, 5, "abcdefghijklmnopqrst", 1, 4); - test(S("abcdefghij"), 0, 5, "abcdefghijklmnopqrst", 10, -5); - test(S("abcdefghij"), 0, 5, "abcdefghijklmnopqrst", 19, -14); - test(S("abcdefghij"), 0, 5, "abcdefghijklmnopqrst", 20, -15); - test(S("abcdefghij"), 0, 9, "", 0, 9); - test(S("abcdefghij"), 0, 9, "abcde", 0, 9); - test(S("abcdefghij"), 0, 9, "abcde", 1, 8); - test(S("abcdefghij"), 0, 9, "abcde", 2, 7); - test(S("abcdefghij"), 0, 9, "abcde", 4, 5); - test(S("abcdefghij"), 0, 9, "abcde", 5, 4); - test(S("abcdefghij"), 0, 9, "abcdefghij", 0, 9); - test(S("abcdefghij"), 0, 9, "abcdefghij", 1, 8); - test(S("abcdefghij"), 0, 9, "abcdefghij", 5, 4); - test(S("abcdefghij"), 0, 9, "abcdefghij", 9, 0); - test(S("abcdefghij"), 0, 9, "abcdefghij", 10, -1); - test(S("abcdefghij"), 0, 9, "abcdefghijklmnopqrst", 0, 9); - test(S("abcdefghij"), 0, 9, "abcdefghijklmnopqrst", 1, 8); - test(S("abcdefghij"), 0, 9, "abcdefghijklmnopqrst", 10, -1); - test(S("abcdefghij"), 0, 9, "abcdefghijklmnopqrst", 19, -10); - test(S("abcdefghij"), 0, 9, "abcdefghijklmnopqrst", 20, -11); - test(S("abcdefghij"), 0, 10, "", 0, 10); - test(S("abcdefghij"), 0, 10, "abcde", 0, 10); - test(S("abcdefghij"), 0, 10, "abcde", 1, 9); - test(S("abcdefghij"), 0, 10, "abcde", 2, 8); - test(S("abcdefghij"), 0, 10, "abcde", 4, 6); - test(S("abcdefghij"), 0, 10, "abcde", 5, 5); - test(S("abcdefghij"), 0, 10, "abcdefghij", 0, 10); - test(S("abcdefghij"), 0, 10, "abcdefghij", 1, 9); - test(S("abcdefghij"), 0, 10, "abcdefghij", 5, 5); - test(S("abcdefghij"), 0, 10, "abcdefghij", 9, 1); - test(S("abcdefghij"), 0, 10, "abcdefghij", 10, 0); - test(S("abcdefghij"), 0, 10, "abcdefghijklmnopqrst", 0, 10); - test(S("abcdefghij"), 0, 10, "abcdefghijklmnopqrst", 1, 9); - test(S("abcdefghij"), 0, 10, "abcdefghijklmnopqrst", 10, 0); - test(S("abcdefghij"), 0, 10, "abcdefghijklmnopqrst", 19, -9); - test(S("abcdefghij"), 0, 10, "abcdefghijklmnopqrst", 20, -10); - test(S("abcdefghij"), 0, 11, "", 0, 10); - test(S("abcdefghij"), 0, 11, "abcde", 0, 10); - test(S("abcdefghij"), 0, 11, "abcde", 1, 9); - test(S("abcdefghij"), 0, 11, "abcde", 2, 8); -} - -template <class S> -void test5() -{ - test(S("abcdefghij"), 0, 11, "abcde", 4, 6); - test(S("abcdefghij"), 0, 11, "abcde", 5, 5); - test(S("abcdefghij"), 0, 11, "abcdefghij", 0, 10); - test(S("abcdefghij"), 0, 11, "abcdefghij", 1, 9); - test(S("abcdefghij"), 0, 11, "abcdefghij", 5, 5); - test(S("abcdefghij"), 0, 11, "abcdefghij", 9, 1); - test(S("abcdefghij"), 0, 11, "abcdefghij", 10, 0); - test(S("abcdefghij"), 0, 11, "abcdefghijklmnopqrst", 0, 10); - test(S("abcdefghij"), 0, 11, "abcdefghijklmnopqrst", 1, 9); - test(S("abcdefghij"), 0, 11, "abcdefghijklmnopqrst", 10, 0); - test(S("abcdefghij"), 0, 11, "abcdefghijklmnopqrst", 19, -9); - test(S("abcdefghij"), 0, 11, "abcdefghijklmnopqrst", 20, -10); - test(S("abcdefghij"), 1, 0, "", 0, 0); - test(S("abcdefghij"), 1, 0, "abcde", 0, 0); - test(S("abcdefghij"), 1, 0, "abcde", 1, -1); - test(S("abcdefghij"), 1, 0, "abcde", 2, -2); - test(S("abcdefghij"), 1, 0, "abcde", 4, -4); - test(S("abcdefghij"), 1, 0, "abcde", 5, -5); - test(S("abcdefghij"), 1, 0, "abcdefghij", 0, 0); - test(S("abcdefghij"), 1, 0, "abcdefghij", 1, -1); - test(S("abcdefghij"), 1, 0, "abcdefghij", 5, -5); - test(S("abcdefghij"), 1, 0, "abcdefghij", 9, -9); - test(S("abcdefghij"), 1, 0, "abcdefghij", 10, -10); - test(S("abcdefghij"), 1, 0, "abcdefghijklmnopqrst", 0, 0); - test(S("abcdefghij"), 1, 0, "abcdefghijklmnopqrst", 1, -1); - test(S("abcdefghij"), 1, 0, "abcdefghijklmnopqrst", 10, -10); - test(S("abcdefghij"), 1, 0, "abcdefghijklmnopqrst", 19, -19); - test(S("abcdefghij"), 1, 0, "abcdefghijklmnopqrst", 20, -20); - test(S("abcdefghij"), 1, 1, "", 0, 1); - test(S("abcdefghij"), 1, 1, "abcde", 0, 1); - test(S("abcdefghij"), 1, 1, "abcde", 1, 1); - test(S("abcdefghij"), 1, 1, "abcde", 2, 1); - test(S("abcdefghij"), 1, 1, "abcde", 4, 1); - test(S("abcdefghij"), 1, 1, "abcde", 5, 1); - test(S("abcdefghij"), 1, 1, "abcdefghij", 0, 1); - test(S("abcdefghij"), 1, 1, "abcdefghij", 1, 1); - test(S("abcdefghij"), 1, 1, "abcdefghij", 5, 1); - test(S("abcdefghij"), 1, 1, "abcdefghij", 9, 1); - test(S("abcdefghij"), 1, 1, "abcdefghij", 10, 1); - test(S("abcdefghij"), 1, 1, "abcdefghijklmnopqrst", 0, 1); - test(S("abcdefghij"), 1, 1, "abcdefghijklmnopqrst", 1, 1); - test(S("abcdefghij"), 1, 1, "abcdefghijklmnopqrst", 10, 1); - test(S("abcdefghij"), 1, 1, "abcdefghijklmnopqrst", 19, 1); - test(S("abcdefghij"), 1, 1, "abcdefghijklmnopqrst", 20, 1); - test(S("abcdefghij"), 1, 4, "", 0, 4); - test(S("abcdefghij"), 1, 4, "abcde", 0, 4); - test(S("abcdefghij"), 1, 4, "abcde", 1, 1); - test(S("abcdefghij"), 1, 4, "abcde", 2, 1); - test(S("abcdefghij"), 1, 4, "abcde", 4, 1); - test(S("abcdefghij"), 1, 4, "abcde", 5, 1); - test(S("abcdefghij"), 1, 4, "abcdefghij", 0, 4); - test(S("abcdefghij"), 1, 4, "abcdefghij", 1, 1); - test(S("abcdefghij"), 1, 4, "abcdefghij", 5, 1); - test(S("abcdefghij"), 1, 4, "abcdefghij", 9, 1); - test(S("abcdefghij"), 1, 4, "abcdefghij", 10, 1); - test(S("abcdefghij"), 1, 4, "abcdefghijklmnopqrst", 0, 4); - test(S("abcdefghij"), 1, 4, "abcdefghijklmnopqrst", 1, 1); - test(S("abcdefghij"), 1, 4, "abcdefghijklmnopqrst", 10, 1); - test(S("abcdefghij"), 1, 4, "abcdefghijklmnopqrst", 19, 1); - test(S("abcdefghij"), 1, 4, "abcdefghijklmnopqrst", 20, 1); - test(S("abcdefghij"), 1, 8, "", 0, 8); - test(S("abcdefghij"), 1, 8, "abcde", 0, 8); - test(S("abcdefghij"), 1, 8, "abcde", 1, 1); - test(S("abcdefghij"), 1, 8, "abcde", 2, 1); - test(S("abcdefghij"), 1, 8, "abcde", 4, 1); - test(S("abcdefghij"), 1, 8, "abcde", 5, 1); - test(S("abcdefghij"), 1, 8, "abcdefghij", 0, 8); - test(S("abcdefghij"), 1, 8, "abcdefghij", 1, 1); - test(S("abcdefghij"), 1, 8, "abcdefghij", 5, 1); - test(S("abcdefghij"), 1, 8, "abcdefghij", 9, 1); - test(S("abcdefghij"), 1, 8, "abcdefghij", 10, 1); - test(S("abcdefghij"), 1, 8, "abcdefghijklmnopqrst", 0, 8); - test(S("abcdefghij"), 1, 8, "abcdefghijklmnopqrst", 1, 1); - test(S("abcdefghij"), 1, 8, "abcdefghijklmnopqrst", 10, 1); - test(S("abcdefghij"), 1, 8, "abcdefghijklmnopqrst", 19, 1); - test(S("abcdefghij"), 1, 8, "abcdefghijklmnopqrst", 20, 1); - test(S("abcdefghij"), 1, 9, "", 0, 9); - test(S("abcdefghij"), 1, 9, "abcde", 0, 9); - test(S("abcdefghij"), 1, 9, "abcde", 1, 1); - test(S("abcdefghij"), 1, 9, "abcde", 2, 1); - test(S("abcdefghij"), 1, 9, "abcde", 4, 1); - test(S("abcdefghij"), 1, 9, "abcde", 5, 1); - test(S("abcdefghij"), 1, 9, "abcdefghij", 0, 9); - test(S("abcdefghij"), 1, 9, "abcdefghij", 1, 1); - test(S("abcdefghij"), 1, 9, "abcdefghij", 5, 1); - test(S("abcdefghij"), 1, 9, "abcdefghij", 9, 1); - test(S("abcdefghij"), 1, 9, "abcdefghij", 10, 1); - test(S("abcdefghij"), 1, 9, "abcdefghijklmnopqrst", 0, 9); - test(S("abcdefghij"), 1, 9, "abcdefghijklmnopqrst", 1, 1); - test(S("abcdefghij"), 1, 9, "abcdefghijklmnopqrst", 10, 1); - test(S("abcdefghij"), 1, 9, "abcdefghijklmnopqrst", 19, 1); - test(S("abcdefghij"), 1, 9, "abcdefghijklmnopqrst", 20, 1); - test(S("abcdefghij"), 1, 10, "", 0, 9); - test(S("abcdefghij"), 1, 10, "abcde", 0, 9); - test(S("abcdefghij"), 1, 10, "abcde", 1, 1); - test(S("abcdefghij"), 1, 10, "abcde", 2, 1); - test(S("abcdefghij"), 1, 10, "abcde", 4, 1); - test(S("abcdefghij"), 1, 10, "abcde", 5, 1); - test(S("abcdefghij"), 1, 10, "abcdefghij", 0, 9); - test(S("abcdefghij"), 1, 10, "abcdefghij", 1, 1); -} - -template <class S> -void test6() -{ - test(S("abcdefghij"), 1, 10, "abcdefghij", 5, 1); - test(S("abcdefghij"), 1, 10, "abcdefghij", 9, 1); - test(S("abcdefghij"), 1, 10, "abcdefghij", 10, 1); - test(S("abcdefghij"), 1, 10, "abcdefghijklmnopqrst", 0, 9); - test(S("abcdefghij"), 1, 10, "abcdefghijklmnopqrst", 1, 1); - test(S("abcdefghij"), 1, 10, "abcdefghijklmnopqrst", 10, 1); - test(S("abcdefghij"), 1, 10, "abcdefghijklmnopqrst", 19, 1); - test(S("abcdefghij"), 1, 10, "abcdefghijklmnopqrst", 20, 1); - test(S("abcdefghij"), 5, 0, "", 0, 0); - test(S("abcdefghij"), 5, 0, "abcde", 0, 0); - test(S("abcdefghij"), 5, 0, "abcde", 1, -1); - test(S("abcdefghij"), 5, 0, "abcde", 2, -2); - test(S("abcdefghij"), 5, 0, "abcde", 4, -4); - test(S("abcdefghij"), 5, 0, "abcde", 5, -5); - test(S("abcdefghij"), 5, 0, "abcdefghij", 0, 0); - test(S("abcdefghij"), 5, 0, "abcdefghij", 1, -1); - test(S("abcdefghij"), 5, 0, "abcdefghij", 5, -5); - test(S("abcdefghij"), 5, 0, "abcdefghij", 9, -9); - test(S("abcdefghij"), 5, 0, "abcdefghij", 10, -10); - test(S("abcdefghij"), 5, 0, "abcdefghijklmnopqrst", 0, 0); - test(S("abcdefghij"), 5, 0, "abcdefghijklmnopqrst", 1, -1); - test(S("abcdefghij"), 5, 0, "abcdefghijklmnopqrst", 10, -10); - test(S("abcdefghij"), 5, 0, "abcdefghijklmnopqrst", 19, -19); - test(S("abcdefghij"), 5, 0, "abcdefghijklmnopqrst", 20, -20); - test(S("abcdefghij"), 5, 1, "", 0, 1); - test(S("abcdefghij"), 5, 1, "abcde", 0, 1); - test(S("abcdefghij"), 5, 1, "abcde", 1, 5); - test(S("abcdefghij"), 5, 1, "abcde", 2, 5); - test(S("abcdefghij"), 5, 1, "abcde", 4, 5); - test(S("abcdefghij"), 5, 1, "abcde", 5, 5); - test(S("abcdefghij"), 5, 1, "abcdefghij", 0, 1); - test(S("abcdefghij"), 5, 1, "abcdefghij", 1, 5); - test(S("abcdefghij"), 5, 1, "abcdefghij", 5, 5); - test(S("abcdefghij"), 5, 1, "abcdefghij", 9, 5); - test(S("abcdefghij"), 5, 1, "abcdefghij", 10, 5); - test(S("abcdefghij"), 5, 1, "abcdefghijklmnopqrst", 0, 1); - test(S("abcdefghij"), 5, 1, "abcdefghijklmnopqrst", 1, 5); - test(S("abcdefghij"), 5, 1, "abcdefghijklmnopqrst", 10, 5); - test(S("abcdefghij"), 5, 1, "abcdefghijklmnopqrst", 19, 5); - test(S("abcdefghij"), 5, 1, "abcdefghijklmnopqrst", 20, 5); - test(S("abcdefghij"), 5, 2, "", 0, 2); - test(S("abcdefghij"), 5, 2, "abcde", 0, 2); - test(S("abcdefghij"), 5, 2, "abcde", 1, 5); - test(S("abcdefghij"), 5, 2, "abcde", 2, 5); - test(S("abcdefghij"), 5, 2, "abcde", 4, 5); - test(S("abcdefghij"), 5, 2, "abcde", 5, 5); - test(S("abcdefghij"), 5, 2, "abcdefghij", 0, 2); - test(S("abcdefghij"), 5, 2, "abcdefghij", 1, 5); - test(S("abcdefghij"), 5, 2, "abcdefghij", 5, 5); - test(S("abcdefghij"), 5, 2, "abcdefghij", 9, 5); - test(S("abcdefghij"), 5, 2, "abcdefghij", 10, 5); - test(S("abcdefghij"), 5, 2, "abcdefghijklmnopqrst", 0, 2); - test(S("abcdefghij"), 5, 2, "abcdefghijklmnopqrst", 1, 5); - test(S("abcdefghij"), 5, 2, "abcdefghijklmnopqrst", 10, 5); - test(S("abcdefghij"), 5, 2, "abcdefghijklmnopqrst", 19, 5); - test(S("abcdefghij"), 5, 2, "abcdefghijklmnopqrst", 20, 5); - test(S("abcdefghij"), 5, 4, "", 0, 4); - test(S("abcdefghij"), 5, 4, "abcde", 0, 4); - test(S("abcdefghij"), 5, 4, "abcde", 1, 5); - test(S("abcdefghij"), 5, 4, "abcde", 2, 5); - test(S("abcdefghij"), 5, 4, "abcde", 4, 5); - test(S("abcdefghij"), 5, 4, "abcde", 5, 5); - test(S("abcdefghij"), 5, 4, "abcdefghij", 0, 4); - test(S("abcdefghij"), 5, 4, "abcdefghij", 1, 5); - test(S("abcdefghij"), 5, 4, "abcdefghij", 5, 5); - test(S("abcdefghij"), 5, 4, "abcdefghij", 9, 5); - test(S("abcdefghij"), 5, 4, "abcdefghij", 10, 5); - test(S("abcdefghij"), 5, 4, "abcdefghijklmnopqrst", 0, 4); - test(S("abcdefghij"), 5, 4, "abcdefghijklmnopqrst", 1, 5); - test(S("abcdefghij"), 5, 4, "abcdefghijklmnopqrst", 10, 5); - test(S("abcdefghij"), 5, 4, "abcdefghijklmnopqrst", 19, 5); - test(S("abcdefghij"), 5, 4, "abcdefghijklmnopqrst", 20, 5); - test(S("abcdefghij"), 5, 5, "", 0, 5); - test(S("abcdefghij"), 5, 5, "abcde", 0, 5); - test(S("abcdefghij"), 5, 5, "abcde", 1, 5); - test(S("abcdefghij"), 5, 5, "abcde", 2, 5); - test(S("abcdefghij"), 5, 5, "abcde", 4, 5); - test(S("abcdefghij"), 5, 5, "abcde", 5, 5); - test(S("abcdefghij"), 5, 5, "abcdefghij", 0, 5); - test(S("abcdefghij"), 5, 5, "abcdefghij", 1, 5); - test(S("abcdefghij"), 5, 5, "abcdefghij", 5, 5); - test(S("abcdefghij"), 5, 5, "abcdefghij", 9, 5); - test(S("abcdefghij"), 5, 5, "abcdefghij", 10, 5); - test(S("abcdefghij"), 5, 5, "abcdefghijklmnopqrst", 0, 5); - test(S("abcdefghij"), 5, 5, "abcdefghijklmnopqrst", 1, 5); - test(S("abcdefghij"), 5, 5, "abcdefghijklmnopqrst", 10, 5); - test(S("abcdefghij"), 5, 5, "abcdefghijklmnopqrst", 19, 5); - test(S("abcdefghij"), 5, 5, "abcdefghijklmnopqrst", 20, 5); - test(S("abcdefghij"), 5, 6, "", 0, 5); - test(S("abcdefghij"), 5, 6, "abcde", 0, 5); - test(S("abcdefghij"), 5, 6, "abcde", 1, 5); - test(S("abcdefghij"), 5, 6, "abcde", 2, 5); - test(S("abcdefghij"), 5, 6, "abcde", 4, 5); - test(S("abcdefghij"), 5, 6, "abcde", 5, 5); - test(S("abcdefghij"), 5, 6, "abcdefghij", 0, 5); - test(S("abcdefghij"), 5, 6, "abcdefghij", 1, 5); - test(S("abcdefghij"), 5, 6, "abcdefghij", 5, 5); - test(S("abcdefghij"), 5, 6, "abcdefghij", 9, 5); - test(S("abcdefghij"), 5, 6, "abcdefghij", 10, 5); - test(S("abcdefghij"), 5, 6, "abcdefghijklmnopqrst", 0, 5); -} - -template <class S> -void test7() -{ - test(S("abcdefghij"), 5, 6, "abcdefghijklmnopqrst", 1, 5); - test(S("abcdefghij"), 5, 6, "abcdefghijklmnopqrst", 10, 5); - test(S("abcdefghij"), 5, 6, "abcdefghijklmnopqrst", 19, 5); - test(S("abcdefghij"), 5, 6, "abcdefghijklmnopqrst", 20, 5); - test(S("abcdefghij"), 9, 0, "", 0, 0); - test(S("abcdefghij"), 9, 0, "abcde", 0, 0); - test(S("abcdefghij"), 9, 0, "abcde", 1, -1); - test(S("abcdefghij"), 9, 0, "abcde", 2, -2); - test(S("abcdefghij"), 9, 0, "abcde", 4, -4); - test(S("abcdefghij"), 9, 0, "abcde", 5, -5); - test(S("abcdefghij"), 9, 0, "abcdefghij", 0, 0); - test(S("abcdefghij"), 9, 0, "abcdefghij", 1, -1); - test(S("abcdefghij"), 9, 0, "abcdefghij", 5, -5); - test(S("abcdefghij"), 9, 0, "abcdefghij", 9, -9); - test(S("abcdefghij"), 9, 0, "abcdefghij", 10, -10); - test(S("abcdefghij"), 9, 0, "abcdefghijklmnopqrst", 0, 0); - test(S("abcdefghij"), 9, 0, "abcdefghijklmnopqrst", 1, -1); - test(S("abcdefghij"), 9, 0, "abcdefghijklmnopqrst", 10, -10); - test(S("abcdefghij"), 9, 0, "abcdefghijklmnopqrst", 19, -19); - test(S("abcdefghij"), 9, 0, "abcdefghijklmnopqrst", 20, -20); - test(S("abcdefghij"), 9, 1, "", 0, 1); - test(S("abcdefghij"), 9, 1, "abcde", 0, 1); - test(S("abcdefghij"), 9, 1, "abcde", 1, 9); - test(S("abcdefghij"), 9, 1, "abcde", 2, 9); - test(S("abcdefghij"), 9, 1, "abcde", 4, 9); - test(S("abcdefghij"), 9, 1, "abcde", 5, 9); - test(S("abcdefghij"), 9, 1, "abcdefghij", 0, 1); - test(S("abcdefghij"), 9, 1, "abcdefghij", 1, 9); - test(S("abcdefghij"), 9, 1, "abcdefghij", 5, 9); - test(S("abcdefghij"), 9, 1, "abcdefghij", 9, 9); - test(S("abcdefghij"), 9, 1, "abcdefghij", 10, 9); - test(S("abcdefghij"), 9, 1, "abcdefghijklmnopqrst", 0, 1); - test(S("abcdefghij"), 9, 1, "abcdefghijklmnopqrst", 1, 9); - test(S("abcdefghij"), 9, 1, "abcdefghijklmnopqrst", 10, 9); - test(S("abcdefghij"), 9, 1, "abcdefghijklmnopqrst", 19, 9); - test(S("abcdefghij"), 9, 1, "abcdefghijklmnopqrst", 20, 9); - test(S("abcdefghij"), 9, 2, "", 0, 1); - test(S("abcdefghij"), 9, 2, "abcde", 0, 1); - test(S("abcdefghij"), 9, 2, "abcde", 1, 9); - test(S("abcdefghij"), 9, 2, "abcde", 2, 9); - test(S("abcdefghij"), 9, 2, "abcde", 4, 9); - test(S("abcdefghij"), 9, 2, "abcde", 5, 9); - test(S("abcdefghij"), 9, 2, "abcdefghij", 0, 1); - test(S("abcdefghij"), 9, 2, "abcdefghij", 1, 9); - test(S("abcdefghij"), 9, 2, "abcdefghij", 5, 9); - test(S("abcdefghij"), 9, 2, "abcdefghij", 9, 9); - test(S("abcdefghij"), 9, 2, "abcdefghij", 10, 9); - test(S("abcdefghij"), 9, 2, "abcdefghijklmnopqrst", 0, 1); - test(S("abcdefghij"), 9, 2, "abcdefghijklmnopqrst", 1, 9); - test(S("abcdefghij"), 9, 2, "abcdefghijklmnopqrst", 10, 9); - test(S("abcdefghij"), 9, 2, "abcdefghijklmnopqrst", 19, 9); - test(S("abcdefghij"), 9, 2, "abcdefghijklmnopqrst", 20, 9); - test(S("abcdefghij"), 10, 0, "", 0, 0); - test(S("abcdefghij"), 10, 0, "abcde", 0, 0); - test(S("abcdefghij"), 10, 0, "abcde", 1, -1); - test(S("abcdefghij"), 10, 0, "abcde", 2, -2); - test(S("abcdefghij"), 10, 0, "abcde", 4, -4); - test(S("abcdefghij"), 10, 0, "abcde", 5, -5); - test(S("abcdefghij"), 10, 0, "abcdefghij", 0, 0); - test(S("abcdefghij"), 10, 0, "abcdefghij", 1, -1); - test(S("abcdefghij"), 10, 0, "abcdefghij", 5, -5); - test(S("abcdefghij"), 10, 0, "abcdefghij", 9, -9); - test(S("abcdefghij"), 10, 0, "abcdefghij", 10, -10); - test(S("abcdefghij"), 10, 0, "abcdefghijklmnopqrst", 0, 0); - test(S("abcdefghij"), 10, 0, "abcdefghijklmnopqrst", 1, -1); - test(S("abcdefghij"), 10, 0, "abcdefghijklmnopqrst", 10, -10); - test(S("abcdefghij"), 10, 0, "abcdefghijklmnopqrst", 19, -19); - test(S("abcdefghij"), 10, 0, "abcdefghijklmnopqrst", 20, -20); - test(S("abcdefghij"), 10, 1, "", 0, 0); - test(S("abcdefghij"), 10, 1, "abcde", 0, 0); - test(S("abcdefghij"), 10, 1, "abcde", 1, -1); - test(S("abcdefghij"), 10, 1, "abcde", 2, -2); - test(S("abcdefghij"), 10, 1, "abcde", 4, -4); - test(S("abcdefghij"), 10, 1, "abcde", 5, -5); - test(S("abcdefghij"), 10, 1, "abcdefghij", 0, 0); - test(S("abcdefghij"), 10, 1, "abcdefghij", 1, -1); - test(S("abcdefghij"), 10, 1, "abcdefghij", 5, -5); - test(S("abcdefghij"), 10, 1, "abcdefghij", 9, -9); - test(S("abcdefghij"), 10, 1, "abcdefghij", 10, -10); - test(S("abcdefghij"), 10, 1, "abcdefghijklmnopqrst", 0, 0); - test(S("abcdefghij"), 10, 1, "abcdefghijklmnopqrst", 1, -1); - test(S("abcdefghij"), 10, 1, "abcdefghijklmnopqrst", 10, -10); - test(S("abcdefghij"), 10, 1, "abcdefghijklmnopqrst", 19, -19); - test(S("abcdefghij"), 10, 1, "abcdefghijklmnopqrst", 20, -20); - test(S("abcdefghij"), 11, 0, "", 0, 0); - test(S("abcdefghij"), 11, 0, "abcde", 0, 0); - test(S("abcdefghij"), 11, 0, "abcde", 1, 0); - test(S("abcdefghij"), 11, 0, "abcde", 2, 0); - test(S("abcdefghij"), 11, 0, "abcde", 4, 0); - test(S("abcdefghij"), 11, 0, "abcde", 5, 0); - test(S("abcdefghij"), 11, 0, "abcdefghij", 0, 0); - test(S("abcdefghij"), 11, 0, "abcdefghij", 1, 0); - test(S("abcdefghij"), 11, 0, "abcdefghij", 5, 0); - test(S("abcdefghij"), 11, 0, "abcdefghij", 9, 0); - test(S("abcdefghij"), 11, 0, "abcdefghij", 10, 0); - test(S("abcdefghij"), 11, 0, "abcdefghijklmnopqrst", 0, 0); - test(S("abcdefghij"), 11, 0, "abcdefghijklmnopqrst", 1, 0); - test(S("abcdefghij"), 11, 0, "abcdefghijklmnopqrst", 10, 0); - test(S("abcdefghij"), 11, 0, "abcdefghijklmnopqrst", 19, 0); - test(S("abcdefghij"), 11, 0, "abcdefghijklmnopqrst", 20, 0); -} - -template <class S> -void test8() -{ - test(S("abcdefghijklmnopqrst"), 0, 0, "", 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcde", 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcde", 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcde", 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcde", 4, -4); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcde", 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghij", 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghij", 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghij", 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghij", 9, -9); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghij", 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghijklmnopqrst", 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghijklmnopqrst", 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghijklmnopqrst", 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghijklmnopqrst", 19, -19); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghijklmnopqrst", 20, -20); - test(S("abcdefghijklmnopqrst"), 0, 1, "", 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcde", 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcde", 1, 0); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcde", 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcde", 4, -3); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcde", 5, -4); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghij", 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghij", 1, 0); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghij", 5, -4); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghij", 9, -8); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghij", 10, -9); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghijklmnopqrst", 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghijklmnopqrst", 1, 0); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghijklmnopqrst", 10, -9); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghijklmnopqrst", 19, -18); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghijklmnopqrst", 20, -19); - test(S("abcdefghijklmnopqrst"), 0, 10, "", 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcde", 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcde", 1, 9); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcde", 2, 8); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcde", 4, 6); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcde", 5, 5); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghij", 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghij", 1, 9); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghij", 5, 5); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghij", 9, 1); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghij", 10, 0); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghijklmnopqrst", 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghijklmnopqrst", 1, 9); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghijklmnopqrst", 10, 0); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghijklmnopqrst", 19, -9); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghijklmnopqrst", 20, -10); - test(S("abcdefghijklmnopqrst"), 0, 19, "", 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcde", 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcde", 1, 18); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcde", 2, 17); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcde", 4, 15); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcde", 5, 14); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghij", 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghij", 1, 18); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghij", 5, 14); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghij", 9, 10); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghij", 10, 9); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghijklmnopqrst", 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghijklmnopqrst", 1, 18); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghijklmnopqrst", 10, 9); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghijklmnopqrst", 19, 0); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghijklmnopqrst", 20, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, "", 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcde", 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcde", 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcde", 2, 18); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcde", 4, 16); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcde", 5, 15); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghij", 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghij", 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghij", 5, 15); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghij", 9, 11); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghij", 10, 10); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghijklmnopqrst", 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghijklmnopqrst", 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghijklmnopqrst", 10, 10); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghijklmnopqrst", 19, 1); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghijklmnopqrst", 20, 0); - test(S("abcdefghijklmnopqrst"), 0, 21, "", 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcde", 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcde", 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcde", 2, 18); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcde", 4, 16); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcde", 5, 15); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghij", 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghij", 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghij", 5, 15); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghij", 9, 11); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghij", 10, 10); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghijklmnopqrst", 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghijklmnopqrst", 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghijklmnopqrst", 10, 10); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghijklmnopqrst", 19, 1); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghijklmnopqrst", 20, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, "", 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, "abcde", 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, "abcde", 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, "abcde", 2, -2); -} - -template <class S> -void test9() -{ - test(S("abcdefghijklmnopqrst"), 1, 0, "abcde", 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 0, "abcde", 5, -5); - test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghij", 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghij", 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghij", 5, -5); - test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghij", 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghij", 10, -10); - test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghijklmnopqrst", 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghijklmnopqrst", 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghijklmnopqrst", 10, -10); - test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghijklmnopqrst", 19, -19); - test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghijklmnopqrst", 20, -20); - test(S("abcdefghijklmnopqrst"), 1, 1, "", 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcde", 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcde", 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcde", 2, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcde", 4, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcde", 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghij", 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghij", 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghij", 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghij", 9, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghij", 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghijklmnopqrst", 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghijklmnopqrst", 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghijklmnopqrst", 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghijklmnopqrst", 19, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghijklmnopqrst", 20, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, "", 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcde", 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcde", 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcde", 2, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcde", 4, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcde", 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghij", 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghij", 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghij", 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghij", 9, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghij", 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghijklmnopqrst", 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghijklmnopqrst", 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghijklmnopqrst", 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghijklmnopqrst", 19, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghijklmnopqrst", 20, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, "", 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcde", 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcde", 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcde", 2, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcde", 4, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcde", 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghij", 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghij", 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghij", 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghij", 9, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghij", 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghijklmnopqrst", 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghijklmnopqrst", 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghijklmnopqrst", 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghijklmnopqrst", 19, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghijklmnopqrst", 20, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, "", 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcde", 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcde", 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcde", 2, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcde", 4, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcde", 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghij", 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghij", 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghij", 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghij", 9, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghij", 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghijklmnopqrst", 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghijklmnopqrst", 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghijklmnopqrst", 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghijklmnopqrst", 19, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghijklmnopqrst", 20, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, "", 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcde", 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcde", 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcde", 2, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcde", 4, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcde", 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghij", 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghij", 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghij", 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghij", 9, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghij", 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghijklmnopqrst", 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghijklmnopqrst", 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghijklmnopqrst", 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghijklmnopqrst", 19, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghijklmnopqrst", 20, 1); - test(S("abcdefghijklmnopqrst"), 10, 0, "", 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, "abcde", 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, "abcde", 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, "abcde", 2, -2); - test(S("abcdefghijklmnopqrst"), 10, 0, "abcde", 4, -4); - test(S("abcdefghijklmnopqrst"), 10, 0, "abcde", 5, -5); - test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghij", 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghij", 1, -1); -} - -template <class S> -void test10() -{ - test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghij", 5, -5); - test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghij", 9, -9); - test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghij", 10, -10); - test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghijklmnopqrst", 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghijklmnopqrst", 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghijklmnopqrst", 10, -10); - test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghijklmnopqrst", 19, -19); - test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghijklmnopqrst", 20, -20); - test(S("abcdefghijklmnopqrst"), 10, 1, "", 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcde", 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcde", 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcde", 2, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcde", 4, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcde", 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghij", 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghij", 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghij", 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghij", 9, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghij", 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghijklmnopqrst", 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghijklmnopqrst", 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghijklmnopqrst", 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghijklmnopqrst", 19, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghijklmnopqrst", 20, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, "", 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcde", 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcde", 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcde", 2, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcde", 4, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcde", 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghij", 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghij", 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghij", 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghij", 9, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghij", 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghijklmnopqrst", 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghijklmnopqrst", 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghijklmnopqrst", 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghijklmnopqrst", 19, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghijklmnopqrst", 20, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, "", 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcde", 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcde", 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcde", 2, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcde", 4, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcde", 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghij", 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghij", 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghij", 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghij", 9, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghij", 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghijklmnopqrst", 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghijklmnopqrst", 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghijklmnopqrst", 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghijklmnopqrst", 19, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghijklmnopqrst", 20, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "", 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcde", 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcde", 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcde", 2, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcde", 4, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcde", 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghij", 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghij", 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghij", 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghij", 9, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghij", 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghijklmnopqrst", 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghijklmnopqrst", 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghijklmnopqrst", 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghijklmnopqrst", 19, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghijklmnopqrst", 20, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "", 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcde", 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcde", 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcde", 2, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcde", 4, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcde", 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghij", 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghij", 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghij", 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghij", 9, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghij", 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghijklmnopqrst", 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghijklmnopqrst", 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghijklmnopqrst", 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghijklmnopqrst", 19, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghijklmnopqrst", 20, 10); - test(S("abcdefghijklmnopqrst"), 19, 0, "", 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, "abcde", 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, "abcde", 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, "abcde", 2, -2); - test(S("abcdefghijklmnopqrst"), 19, 0, "abcde", 4, -4); - test(S("abcdefghijklmnopqrst"), 19, 0, "abcde", 5, -5); - test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghij", 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghij", 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghij", 5, -5); - test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghij", 9, -9); - test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghij", 10, -10); - test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghijklmnopqrst", 0, 0); -} - -template <class S> -void test11() -{ - test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghijklmnopqrst", 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghijklmnopqrst", 10, -10); - test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghijklmnopqrst", 19, -19); - test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghijklmnopqrst", 20, -20); - test(S("abcdefghijklmnopqrst"), 19, 1, "", 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcde", 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcde", 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcde", 2, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcde", 4, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcde", 5, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghij", 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghij", 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghij", 5, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghij", 9, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghij", 10, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghijklmnopqrst", 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghijklmnopqrst", 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghijklmnopqrst", 10, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghijklmnopqrst", 19, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghijklmnopqrst", 20, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, "", 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcde", 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcde", 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcde", 2, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcde", 4, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcde", 5, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghij", 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghij", 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghij", 5, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghij", 9, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghij", 10, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghijklmnopqrst", 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghijklmnopqrst", 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghijklmnopqrst", 10, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghijklmnopqrst", 19, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghijklmnopqrst", 20, 19); - test(S("abcdefghijklmnopqrst"), 20, 0, "", 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcde", 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcde", 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcde", 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcde", 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcde", 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghij", 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghij", 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghij", 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghij", 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghij", 10, -10); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghijklmnopqrst", 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghijklmnopqrst", 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghijklmnopqrst", 10, -10); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghijklmnopqrst", 19, -19); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghijklmnopqrst", 20, -20); - test(S("abcdefghijklmnopqrst"), 20, 1, "", 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcde", 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcde", 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcde", 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcde", 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcde", 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghij", 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghij", 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghij", 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghij", 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghij", 10, -10); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghijklmnopqrst", 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghijklmnopqrst", 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghijklmnopqrst", 10, -10); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghijklmnopqrst", 19, -19); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghijklmnopqrst", 20, -20); - test(S("abcdefghijklmnopqrst"), 21, 0, "", 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcde", 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcde", 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcde", 2, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcde", 4, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcde", 5, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghij", 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghij", 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghij", 5, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghij", 9, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghij", 10, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghijklmnopqrst", 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghijklmnopqrst", 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghijklmnopqrst", 10, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghijklmnopqrst", 19, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghijklmnopqrst", 20, 0); -} - -int main() -{ - { - typedef std::string S; - test0<S>(); - test1<S>(); - test2<S>(); - test3<S>(); - test4<S>(); - test5<S>(); - test6<S>(); - test7<S>(); - test8<S>(); - test9<S>(); - test10<S>(); - test11<S>(); - } -#if TEST_STD_VER >= 11 - { - typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S; - test0<S>(); - test1<S>(); - test2<S>(); - test3<S>(); - test4<S>(); - test5<S>(); - test6<S>(); - test7<S>(); - test8<S>(); - test9<S>(); - test10<S>(); - test11<S>(); - } -#endif -} diff --git a/test/std/strings/basic.string/string.ops/string_compare/size_size_string.pass.cpp b/test/std/strings/basic.string/string.ops/string_compare/size_size_string.pass.cpp deleted file mode 100644 index be730cbc1242..000000000000 --- a/test/std/strings/basic.string/string.ops/string_compare/size_size_string.pass.cpp +++ /dev/null @@ -1,387 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// <string> - -// int compare(size_type pos1, size_type n1, const basic_string& str) const; - -#include <string> -#include <stdexcept> -#include <cassert> - -#include "test_macros.h" -#include "min_allocator.h" - -int sign(int x) -{ - if (x == 0) - return 0; - if (x < 0) - return -1; - return 1; -} - -template <class S> -void -test(const S& s, typename S::size_type pos1, typename S::size_type n1, - const S& str, int x) -{ - if (pos1 <= s.size()) - assert(sign(s.compare(pos1, n1, str)) == sign(x)); -#ifndef TEST_HAS_NO_EXCEPTIONS - else - { - try - { - TEST_IGNORE_NODISCARD s.compare(pos1, n1, str); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos1 > s.size()); - } - } -#endif -} - -template <class S> -void test0() -{ - test(S(""), 0, 0, S(""), 0); - test(S(""), 0, 0, S("abcde"), -5); - test(S(""), 0, 0, S("abcdefghij"), -10); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), -20); - test(S(""), 0, 1, S(""), 0); - test(S(""), 0, 1, S("abcde"), -5); - test(S(""), 0, 1, S("abcdefghij"), -10); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), -20); - test(S(""), 1, 0, S(""), 0); - test(S(""), 1, 0, S("abcde"), 0); - test(S(""), 1, 0, S("abcdefghij"), 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 0); - test(S("abcde"), 0, 0, S(""), 0); - test(S("abcde"), 0, 0, S("abcde"), -5); - test(S("abcde"), 0, 0, S("abcdefghij"), -10); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), -20); - test(S("abcde"), 0, 1, S(""), 1); - test(S("abcde"), 0, 1, S("abcde"), -4); - test(S("abcde"), 0, 1, S("abcdefghij"), -9); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), -19); - test(S("abcde"), 0, 2, S(""), 2); - test(S("abcde"), 0, 2, S("abcde"), -3); - test(S("abcde"), 0, 2, S("abcdefghij"), -8); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), -18); - test(S("abcde"), 0, 4, S(""), 4); - test(S("abcde"), 0, 4, S("abcde"), -1); - test(S("abcde"), 0, 4, S("abcdefghij"), -6); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), -16); - test(S("abcde"), 0, 5, S(""), 5); - test(S("abcde"), 0, 5, S("abcde"), 0); - test(S("abcde"), 0, 5, S("abcdefghij"), -5); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), -15); - test(S("abcde"), 0, 6, S(""), 5); - test(S("abcde"), 0, 6, S("abcde"), 0); - test(S("abcde"), 0, 6, S("abcdefghij"), -5); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), -15); - test(S("abcde"), 1, 0, S(""), 0); - test(S("abcde"), 1, 0, S("abcde"), -5); - test(S("abcde"), 1, 0, S("abcdefghij"), -10); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), -20); - test(S("abcde"), 1, 1, S(""), 1); - test(S("abcde"), 1, 1, S("abcde"), 1); - test(S("abcde"), 1, 1, S("abcdefghij"), 1); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 1); - test(S("abcde"), 1, 2, S(""), 2); - test(S("abcde"), 1, 2, S("abcde"), 1); - test(S("abcde"), 1, 2, S("abcdefghij"), 1); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 1); - test(S("abcde"), 1, 3, S(""), 3); - test(S("abcde"), 1, 3, S("abcde"), 1); - test(S("abcde"), 1, 3, S("abcdefghij"), 1); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 1); - test(S("abcde"), 1, 4, S(""), 4); - test(S("abcde"), 1, 4, S("abcde"), 1); - test(S("abcde"), 1, 4, S("abcdefghij"), 1); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 1); - test(S("abcde"), 1, 5, S(""), 4); - test(S("abcde"), 1, 5, S("abcde"), 1); - test(S("abcde"), 1, 5, S("abcdefghij"), 1); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 1); - test(S("abcde"), 2, 0, S(""), 0); - test(S("abcde"), 2, 0, S("abcde"), -5); - test(S("abcde"), 2, 0, S("abcdefghij"), -10); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), -20); - test(S("abcde"), 2, 1, S(""), 1); - test(S("abcde"), 2, 1, S("abcde"), 2); - test(S("abcde"), 2, 1, S("abcdefghij"), 2); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 2); - test(S("abcde"), 2, 2, S(""), 2); - test(S("abcde"), 2, 2, S("abcde"), 2); - test(S("abcde"), 2, 2, S("abcdefghij"), 2); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 2); - test(S("abcde"), 2, 3, S(""), 3); - test(S("abcde"), 2, 3, S("abcde"), 2); - test(S("abcde"), 2, 3, S("abcdefghij"), 2); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 2); - test(S("abcde"), 2, 4, S(""), 3); - test(S("abcde"), 2, 4, S("abcde"), 2); - test(S("abcde"), 2, 4, S("abcdefghij"), 2); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 2); - test(S("abcde"), 4, 0, S(""), 0); - test(S("abcde"), 4, 0, S("abcde"), -5); - test(S("abcde"), 4, 0, S("abcdefghij"), -10); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), -20); - test(S("abcde"), 4, 1, S(""), 1); - test(S("abcde"), 4, 1, S("abcde"), 4); - test(S("abcde"), 4, 1, S("abcdefghij"), 4); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 4); - test(S("abcde"), 4, 2, S(""), 1); - test(S("abcde"), 4, 2, S("abcde"), 4); - test(S("abcde"), 4, 2, S("abcdefghij"), 4); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 4); - test(S("abcde"), 5, 0, S(""), 0); - test(S("abcde"), 5, 0, S("abcde"), -5); - test(S("abcde"), 5, 0, S("abcdefghij"), -10); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), -20); - test(S("abcde"), 5, 1, S(""), 0); - test(S("abcde"), 5, 1, S("abcde"), -5); - test(S("abcde"), 5, 1, S("abcdefghij"), -10); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), -20); -} - -template <class S> -void test1() -{ - test(S("abcde"), 6, 0, S(""), 0); - test(S("abcde"), 6, 0, S("abcde"), 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 0); - test(S("abcdefghij"), 0, 0, S(""), 0); - test(S("abcdefghij"), 0, 0, S("abcde"), -5); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), -10); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), -20); - test(S("abcdefghij"), 0, 1, S(""), 1); - test(S("abcdefghij"), 0, 1, S("abcde"), -4); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), -9); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), -19); - test(S("abcdefghij"), 0, 5, S(""), 5); - test(S("abcdefghij"), 0, 5, S("abcde"), 0); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), -5); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), -15); - test(S("abcdefghij"), 0, 9, S(""), 9); - test(S("abcdefghij"), 0, 9, S("abcde"), 4); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), -1); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), -11); - test(S("abcdefghij"), 0, 10, S(""), 10); - test(S("abcdefghij"), 0, 10, S("abcde"), 5); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 0); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), -10); - test(S("abcdefghij"), 0, 11, S(""), 10); - test(S("abcdefghij"), 0, 11, S("abcde"), 5); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 0); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), -10); - test(S("abcdefghij"), 1, 0, S(""), 0); - test(S("abcdefghij"), 1, 0, S("abcde"), -5); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), -10); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), -20); - test(S("abcdefghij"), 1, 1, S(""), 1); - test(S("abcdefghij"), 1, 1, S("abcde"), 1); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 1); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 1); - test(S("abcdefghij"), 1, 4, S(""), 4); - test(S("abcdefghij"), 1, 4, S("abcde"), 1); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 1); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 1); - test(S("abcdefghij"), 1, 8, S(""), 8); - test(S("abcdefghij"), 1, 8, S("abcde"), 1); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 1); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 1); - test(S("abcdefghij"), 1, 9, S(""), 9); - test(S("abcdefghij"), 1, 9, S("abcde"), 1); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 1); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 1); - test(S("abcdefghij"), 1, 10, S(""), 9); - test(S("abcdefghij"), 1, 10, S("abcde"), 1); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 1); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 1); - test(S("abcdefghij"), 5, 0, S(""), 0); - test(S("abcdefghij"), 5, 0, S("abcde"), -5); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), -10); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), -20); - test(S("abcdefghij"), 5, 1, S(""), 1); - test(S("abcdefghij"), 5, 1, S("abcde"), 5); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 5); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 5); - test(S("abcdefghij"), 5, 2, S(""), 2); - test(S("abcdefghij"), 5, 2, S("abcde"), 5); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 5); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 5); - test(S("abcdefghij"), 5, 4, S(""), 4); - test(S("abcdefghij"), 5, 4, S("abcde"), 5); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 5); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 5); - test(S("abcdefghij"), 5, 5, S(""), 5); - test(S("abcdefghij"), 5, 5, S("abcde"), 5); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 5); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 5); - test(S("abcdefghij"), 5, 6, S(""), 5); - test(S("abcdefghij"), 5, 6, S("abcde"), 5); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 5); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 5); - test(S("abcdefghij"), 9, 0, S(""), 0); - test(S("abcdefghij"), 9, 0, S("abcde"), -5); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), -10); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), -20); - test(S("abcdefghij"), 9, 1, S(""), 1); - test(S("abcdefghij"), 9, 1, S("abcde"), 9); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 9); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 9); - test(S("abcdefghij"), 9, 2, S(""), 1); - test(S("abcdefghij"), 9, 2, S("abcde"), 9); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 9); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 9); - test(S("abcdefghij"), 10, 0, S(""), 0); - test(S("abcdefghij"), 10, 0, S("abcde"), -5); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), -10); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), -20); - test(S("abcdefghij"), 10, 1, S(""), 0); - test(S("abcdefghij"), 10, 1, S("abcde"), -5); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), -10); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), -20); - test(S("abcdefghij"), 11, 0, S(""), 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 0); -} - -template <class S> -void test2() -{ - test(S("abcdefghijklmnopqrst"), 0, 0, S(""), 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), -5); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), -10); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), -20); - test(S("abcdefghijklmnopqrst"), 0, 1, S(""), 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), -4); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), -9); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), -19); - test(S("abcdefghijklmnopqrst"), 0, 10, S(""), 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 5); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 0); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), -10); - test(S("abcdefghijklmnopqrst"), 0, 19, S(""), 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 14); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 9); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), -1); - test(S("abcdefghijklmnopqrst"), 0, 20, S(""), 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 15); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 10); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 0); - test(S("abcdefghijklmnopqrst"), 0, 21, S(""), 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 15); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 10); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S(""), 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), -5); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), -10); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), -20); - test(S("abcdefghijklmnopqrst"), 1, 1, S(""), 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S(""), 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S(""), 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S(""), 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S(""), 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 1); - test(S("abcdefghijklmnopqrst"), 10, 0, S(""), 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), -5); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), -10); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), -20); - test(S("abcdefghijklmnopqrst"), 10, 1, S(""), 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 10); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 10); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S(""), 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S(""), 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S(""), 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S(""), 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 10); - test(S("abcdefghijklmnopqrst"), 19, 0, S(""), 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), -5); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), -10); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), -20); - test(S("abcdefghijklmnopqrst"), 19, 1, S(""), 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 19); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 19); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S(""), 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 19); - test(S("abcdefghijklmnopqrst"), 20, 0, S(""), 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), -5); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), -10); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), -20); - test(S("abcdefghijklmnopqrst"), 20, 1, S(""), 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), -5); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), -10); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), -20); - test(S("abcdefghijklmnopqrst"), 21, 0, S(""), 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 0); -} - -int main() -{ - { - typedef std::string S; - test0<S>(); - test1<S>(); - test2<S>(); - } -#if TEST_STD_VER >= 11 - { - typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S; - test0<S>(); - test1<S>(); - test2<S>(); - } -#endif - -#if TEST_STD_VER > 3 - { // LWG 2946 - std::string s = " !"; - assert(s.compare(0, 1, {"abc", 1}) < 0); - } -#endif -} diff --git a/test/std/strings/basic.string/string.ops/string_compare/size_size_string_size_size.pass.cpp b/test/std/strings/basic.string/string.ops/string_compare/size_size_string_size_size.pass.cpp deleted file mode 100644 index 590a1518812f..000000000000 --- a/test/std/strings/basic.string/string.ops/string_compare/size_size_string_size_size.pass.cpp +++ /dev/null @@ -1,5962 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// <string> - -// int compare(size_type pos1, size_type n1, const basic_string& str, -// size_type pos2, size_type n2=npos) const; -// the "=npos" was added in C++14 - -#include <string> -#include <stdexcept> -#include <cassert> - -#include "min_allocator.h" - -#include "test_macros.h" - -int sign(int x) -{ - if (x == 0) - return 0; - if (x < 0) - return -1; - return 1; -} - -template <class S> -void -test(const S& s, typename S::size_type pos1, typename S::size_type n1, - const S& str, typename S::size_type pos2, typename S::size_type n2, int x) -{ - if (pos1 <= s.size() && pos2 <= str.size()) - assert(sign(s.compare(pos1, n1, str, pos2, n2)) == sign(x)); -#ifndef TEST_HAS_NO_EXCEPTIONS - else - { - try - { - TEST_IGNORE_NODISCARD s.compare(pos1, n1, str, pos2, n2); - assert(false); - } - catch (const std::out_of_range&) - { - assert(pos1 > s.size() || pos2 > str.size()); - } - } -#endif -} - -template <class S> -void -test_npos(const S& s, typename S::size_type pos1, typename S::size_type n1, - const S& str, typename S::size_type pos2, int x) -{ - if (pos1 <= s.size() && pos2 <= str.size()) - assert(sign(s.compare(pos1, n1, str, pos2)) == sign(x)); -#ifndef TEST_HAS_NO_EXCEPTIONS - else - { - try - { - TEST_IGNORE_NODISCARD s.compare(pos1, n1, str, pos2); - assert(false); - } - catch (const std::out_of_range&) - { - assert(pos1 > s.size() || pos2 > str.size()); - } - } -#endif -} - -template <class S> -void test0() -{ - test(S(""), 0, 0, S(""), 0, 0, 0); - test(S(""), 0, 0, S(""), 0, 1, 0); - test(S(""), 0, 0, S(""), 1, 0, 0); - test(S(""), 0, 0, S("abcde"), 0, 0, 0); - test(S(""), 0, 0, S("abcde"), 0, 1, -1); - test(S(""), 0, 0, S("abcde"), 0, 2, -2); - test(S(""), 0, 0, S("abcde"), 0, 4, -4); - test(S(""), 0, 0, S("abcde"), 0, 5, -5); - test(S(""), 0, 0, S("abcde"), 0, 6, -5); - test(S(""), 0, 0, S("abcde"), 1, 0, 0); - test(S(""), 0, 0, S("abcde"), 1, 1, -1); - test(S(""), 0, 0, S("abcde"), 1, 2, -2); - test(S(""), 0, 0, S("abcde"), 1, 3, -3); - test(S(""), 0, 0, S("abcde"), 1, 4, -4); - test(S(""), 0, 0, S("abcde"), 1, 5, -4); - test(S(""), 0, 0, S("abcde"), 2, 0, 0); - test(S(""), 0, 0, S("abcde"), 2, 1, -1); - test(S(""), 0, 0, S("abcde"), 2, 2, -2); - test(S(""), 0, 0, S("abcde"), 2, 3, -3); - test(S(""), 0, 0, S("abcde"), 2, 4, -3); - test(S(""), 0, 0, S("abcde"), 4, 0, 0); - test(S(""), 0, 0, S("abcde"), 4, 1, -1); - test(S(""), 0, 0, S("abcde"), 4, 2, -1); - test(S(""), 0, 0, S("abcde"), 5, 0, 0); - test(S(""), 0, 0, S("abcde"), 5, 1, 0); - test(S(""), 0, 0, S("abcde"), 6, 0, 0); - test(S(""), 0, 0, S("abcdefghij"), 0, 0, 0); - test(S(""), 0, 0, S("abcdefghij"), 0, 1, -1); - test(S(""), 0, 0, S("abcdefghij"), 0, 5, -5); - test(S(""), 0, 0, S("abcdefghij"), 0, 9, -9); - test(S(""), 0, 0, S("abcdefghij"), 0, 10, -10); - test(S(""), 0, 0, S("abcdefghij"), 0, 11, -10); - test(S(""), 0, 0, S("abcdefghij"), 1, 0, 0); - test(S(""), 0, 0, S("abcdefghij"), 1, 1, -1); - test(S(""), 0, 0, S("abcdefghij"), 1, 4, -4); - test(S(""), 0, 0, S("abcdefghij"), 1, 8, -8); - test(S(""), 0, 0, S("abcdefghij"), 1, 9, -9); - test(S(""), 0, 0, S("abcdefghij"), 1, 10, -9); - test(S(""), 0, 0, S("abcdefghij"), 5, 0, 0); - test(S(""), 0, 0, S("abcdefghij"), 5, 1, -1); - test(S(""), 0, 0, S("abcdefghij"), 5, 2, -2); - test(S(""), 0, 0, S("abcdefghij"), 5, 4, -4); - test(S(""), 0, 0, S("abcdefghij"), 5, 5, -5); - test(S(""), 0, 0, S("abcdefghij"), 5, 6, -5); - test(S(""), 0, 0, S("abcdefghij"), 9, 0, 0); - test(S(""), 0, 0, S("abcdefghij"), 9, 1, -1); - test(S(""), 0, 0, S("abcdefghij"), 9, 2, -1); - test(S(""), 0, 0, S("abcdefghij"), 10, 0, 0); - test(S(""), 0, 0, S("abcdefghij"), 10, 1, 0); - test(S(""), 0, 0, S("abcdefghij"), 11, 0, 0); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S(""), 0, 1, S(""), 0, 0, 0); - test(S(""), 0, 1, S(""), 0, 1, 0); - test(S(""), 0, 1, S(""), 1, 0, 0); - test(S(""), 0, 1, S("abcde"), 0, 0, 0); - test(S(""), 0, 1, S("abcde"), 0, 1, -1); - test(S(""), 0, 1, S("abcde"), 0, 2, -2); - test(S(""), 0, 1, S("abcde"), 0, 4, -4); - test(S(""), 0, 1, S("abcde"), 0, 5, -5); - test(S(""), 0, 1, S("abcde"), 0, 6, -5); - test(S(""), 0, 1, S("abcde"), 1, 0, 0); - test(S(""), 0, 1, S("abcde"), 1, 1, -1); - test(S(""), 0, 1, S("abcde"), 1, 2, -2); - test(S(""), 0, 1, S("abcde"), 1, 3, -3); - test(S(""), 0, 1, S("abcde"), 1, 4, -4); - test(S(""), 0, 1, S("abcde"), 1, 5, -4); - test(S(""), 0, 1, S("abcde"), 2, 0, 0); - test(S(""), 0, 1, S("abcde"), 2, 1, -1); - test(S(""), 0, 1, S("abcde"), 2, 2, -2); - test(S(""), 0, 1, S("abcde"), 2, 3, -3); - test(S(""), 0, 1, S("abcde"), 2, 4, -3); - test(S(""), 0, 1, S("abcde"), 4, 0, 0); - test(S(""), 0, 1, S("abcde"), 4, 1, -1); - test(S(""), 0, 1, S("abcde"), 4, 2, -1); - test(S(""), 0, 1, S("abcde"), 5, 0, 0); - test(S(""), 0, 1, S("abcde"), 5, 1, 0); - test(S(""), 0, 1, S("abcde"), 6, 0, 0); -} - -template <class S> -void test1() -{ - test(S(""), 0, 1, S("abcdefghij"), 0, 0, 0); - test(S(""), 0, 1, S("abcdefghij"), 0, 1, -1); - test(S(""), 0, 1, S("abcdefghij"), 0, 5, -5); - test(S(""), 0, 1, S("abcdefghij"), 0, 9, -9); - test(S(""), 0, 1, S("abcdefghij"), 0, 10, -10); - test(S(""), 0, 1, S("abcdefghij"), 0, 11, -10); - test(S(""), 0, 1, S("abcdefghij"), 1, 0, 0); - test(S(""), 0, 1, S("abcdefghij"), 1, 1, -1); - test(S(""), 0, 1, S("abcdefghij"), 1, 4, -4); - test(S(""), 0, 1, S("abcdefghij"), 1, 8, -8); - test(S(""), 0, 1, S("abcdefghij"), 1, 9, -9); - test(S(""), 0, 1, S("abcdefghij"), 1, 10, -9); - test(S(""), 0, 1, S("abcdefghij"), 5, 0, 0); - test(S(""), 0, 1, S("abcdefghij"), 5, 1, -1); - test(S(""), 0, 1, S("abcdefghij"), 5, 2, -2); - test(S(""), 0, 1, S("abcdefghij"), 5, 4, -4); - test(S(""), 0, 1, S("abcdefghij"), 5, 5, -5); - test(S(""), 0, 1, S("abcdefghij"), 5, 6, -5); - test(S(""), 0, 1, S("abcdefghij"), 9, 0, 0); - test(S(""), 0, 1, S("abcdefghij"), 9, 1, -1); - test(S(""), 0, 1, S("abcdefghij"), 9, 2, -1); - test(S(""), 0, 1, S("abcdefghij"), 10, 0, 0); - test(S(""), 0, 1, S("abcdefghij"), 10, 1, 0); - test(S(""), 0, 1, S("abcdefghij"), 11, 0, 0); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S(""), 1, 0, S(""), 0, 0, 0); - test(S(""), 1, 0, S(""), 0, 1, 0); - test(S(""), 1, 0, S(""), 1, 0, 0); - test(S(""), 1, 0, S("abcde"), 0, 0, 0); - test(S(""), 1, 0, S("abcde"), 0, 1, 0); - test(S(""), 1, 0, S("abcde"), 0, 2, 0); - test(S(""), 1, 0, S("abcde"), 0, 4, 0); - test(S(""), 1, 0, S("abcde"), 0, 5, 0); - test(S(""), 1, 0, S("abcde"), 0, 6, 0); - test(S(""), 1, 0, S("abcde"), 1, 0, 0); - test(S(""), 1, 0, S("abcde"), 1, 1, 0); - test(S(""), 1, 0, S("abcde"), 1, 2, 0); - test(S(""), 1, 0, S("abcde"), 1, 3, 0); - test(S(""), 1, 0, S("abcde"), 1, 4, 0); - test(S(""), 1, 0, S("abcde"), 1, 5, 0); - test(S(""), 1, 0, S("abcde"), 2, 0, 0); - test(S(""), 1, 0, S("abcde"), 2, 1, 0); - test(S(""), 1, 0, S("abcde"), 2, 2, 0); - test(S(""), 1, 0, S("abcde"), 2, 3, 0); - test(S(""), 1, 0, S("abcde"), 2, 4, 0); - test(S(""), 1, 0, S("abcde"), 4, 0, 0); - test(S(""), 1, 0, S("abcde"), 4, 1, 0); - test(S(""), 1, 0, S("abcde"), 4, 2, 0); - test(S(""), 1, 0, S("abcde"), 5, 0, 0); - test(S(""), 1, 0, S("abcde"), 5, 1, 0); - test(S(""), 1, 0, S("abcde"), 6, 0, 0); - test(S(""), 1, 0, S("abcdefghij"), 0, 0, 0); - test(S(""), 1, 0, S("abcdefghij"), 0, 1, 0); - test(S(""), 1, 0, S("abcdefghij"), 0, 5, 0); - test(S(""), 1, 0, S("abcdefghij"), 0, 9, 0); - test(S(""), 1, 0, S("abcdefghij"), 0, 10, 0); - test(S(""), 1, 0, S("abcdefghij"), 0, 11, 0); - test(S(""), 1, 0, S("abcdefghij"), 1, 0, 0); - test(S(""), 1, 0, S("abcdefghij"), 1, 1, 0); - test(S(""), 1, 0, S("abcdefghij"), 1, 4, 0); - test(S(""), 1, 0, S("abcdefghij"), 1, 8, 0); - test(S(""), 1, 0, S("abcdefghij"), 1, 9, 0); - test(S(""), 1, 0, S("abcdefghij"), 1, 10, 0); - test(S(""), 1, 0, S("abcdefghij"), 5, 0, 0); - test(S(""), 1, 0, S("abcdefghij"), 5, 1, 0); - test(S(""), 1, 0, S("abcdefghij"), 5, 2, 0); - test(S(""), 1, 0, S("abcdefghij"), 5, 4, 0); - test(S(""), 1, 0, S("abcdefghij"), 5, 5, 0); - test(S(""), 1, 0, S("abcdefghij"), 5, 6, 0); - test(S(""), 1, 0, S("abcdefghij"), 9, 0, 0); - test(S(""), 1, 0, S("abcdefghij"), 9, 1, 0); - test(S(""), 1, 0, S("abcdefghij"), 9, 2, 0); - test(S(""), 1, 0, S("abcdefghij"), 10, 0, 0); - test(S(""), 1, 0, S("abcdefghij"), 10, 1, 0); - test(S(""), 1, 0, S("abcdefghij"), 11, 0, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 0, 1, 0); -} - -template <class S> -void test2() -{ - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 0, 10, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 0, 19, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 0, 20, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 0, 21, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 1, 1, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 1, 9, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 1, 18, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 1, 19, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 1, 20, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 10, 1, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 10, 5, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 10, 9, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 10, 10, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 10, 11, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 19, 1, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 19, 2, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 0, 0, S(""), 0, 0, 0); - test(S("abcde"), 0, 0, S(""), 0, 1, 0); - test(S("abcde"), 0, 0, S(""), 1, 0, 0); - test(S("abcde"), 0, 0, S("abcde"), 0, 0, 0); - test(S("abcde"), 0, 0, S("abcde"), 0, 1, -1); - test(S("abcde"), 0, 0, S("abcde"), 0, 2, -2); - test(S("abcde"), 0, 0, S("abcde"), 0, 4, -4); - test(S("abcde"), 0, 0, S("abcde"), 0, 5, -5); - test(S("abcde"), 0, 0, S("abcde"), 0, 6, -5); - test(S("abcde"), 0, 0, S("abcde"), 1, 0, 0); - test(S("abcde"), 0, 0, S("abcde"), 1, 1, -1); - test(S("abcde"), 0, 0, S("abcde"), 1, 2, -2); - test(S("abcde"), 0, 0, S("abcde"), 1, 3, -3); - test(S("abcde"), 0, 0, S("abcde"), 1, 4, -4); - test(S("abcde"), 0, 0, S("abcde"), 1, 5, -4); - test(S("abcde"), 0, 0, S("abcde"), 2, 0, 0); - test(S("abcde"), 0, 0, S("abcde"), 2, 1, -1); - test(S("abcde"), 0, 0, S("abcde"), 2, 2, -2); - test(S("abcde"), 0, 0, S("abcde"), 2, 3, -3); - test(S("abcde"), 0, 0, S("abcde"), 2, 4, -3); - test(S("abcde"), 0, 0, S("abcde"), 4, 0, 0); - test(S("abcde"), 0, 0, S("abcde"), 4, 1, -1); - test(S("abcde"), 0, 0, S("abcde"), 4, 2, -1); - test(S("abcde"), 0, 0, S("abcde"), 5, 0, 0); - test(S("abcde"), 0, 0, S("abcde"), 5, 1, 0); - test(S("abcde"), 0, 0, S("abcde"), 6, 0, 0); - test(S("abcde"), 0, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcde"), 0, 0, S("abcdefghij"), 0, 1, -1); - test(S("abcde"), 0, 0, S("abcdefghij"), 0, 5, -5); - test(S("abcde"), 0, 0, S("abcdefghij"), 0, 9, -9); - test(S("abcde"), 0, 0, S("abcdefghij"), 0, 10, -10); - test(S("abcde"), 0, 0, S("abcdefghij"), 0, 11, -10); - test(S("abcde"), 0, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcde"), 0, 0, S("abcdefghij"), 1, 1, -1); - test(S("abcde"), 0, 0, S("abcdefghij"), 1, 4, -4); - test(S("abcde"), 0, 0, S("abcdefghij"), 1, 8, -8); - test(S("abcde"), 0, 0, S("abcdefghij"), 1, 9, -9); - test(S("abcde"), 0, 0, S("abcdefghij"), 1, 10, -9); - test(S("abcde"), 0, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcde"), 0, 0, S("abcdefghij"), 5, 1, -1); - test(S("abcde"), 0, 0, S("abcdefghij"), 5, 2, -2); - test(S("abcde"), 0, 0, S("abcdefghij"), 5, 4, -4); - test(S("abcde"), 0, 0, S("abcdefghij"), 5, 5, -5); - test(S("abcde"), 0, 0, S("abcdefghij"), 5, 6, -5); - test(S("abcde"), 0, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcde"), 0, 0, S("abcdefghij"), 9, 1, -1); - test(S("abcde"), 0, 0, S("abcdefghij"), 9, 2, -1); - test(S("abcde"), 0, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcde"), 0, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcde"), 0, 0, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 0, 1, S(""), 0, 0, 1); - test(S("abcde"), 0, 1, S(""), 0, 1, 1); - test(S("abcde"), 0, 1, S(""), 1, 0, 0); - test(S("abcde"), 0, 1, S("abcde"), 0, 0, 1); -} - -template <class S> -void test3() -{ - test(S("abcde"), 0, 1, S("abcde"), 0, 1, 0); - test(S("abcde"), 0, 1, S("abcde"), 0, 2, -1); - test(S("abcde"), 0, 1, S("abcde"), 0, 4, -3); - test(S("abcde"), 0, 1, S("abcde"), 0, 5, -4); - test(S("abcde"), 0, 1, S("abcde"), 0, 6, -4); - test(S("abcde"), 0, 1, S("abcde"), 1, 0, 1); - test(S("abcde"), 0, 1, S("abcde"), 1, 1, -1); - test(S("abcde"), 0, 1, S("abcde"), 1, 2, -1); - test(S("abcde"), 0, 1, S("abcde"), 1, 3, -1); - test(S("abcde"), 0, 1, S("abcde"), 1, 4, -1); - test(S("abcde"), 0, 1, S("abcde"), 1, 5, -1); - test(S("abcde"), 0, 1, S("abcde"), 2, 0, 1); - test(S("abcde"), 0, 1, S("abcde"), 2, 1, -2); - test(S("abcde"), 0, 1, S("abcde"), 2, 2, -2); - test(S("abcde"), 0, 1, S("abcde"), 2, 3, -2); - test(S("abcde"), 0, 1, S("abcde"), 2, 4, -2); - test(S("abcde"), 0, 1, S("abcde"), 4, 0, 1); - test(S("abcde"), 0, 1, S("abcde"), 4, 1, -4); - test(S("abcde"), 0, 1, S("abcde"), 4, 2, -4); - test(S("abcde"), 0, 1, S("abcde"), 5, 0, 1); - test(S("abcde"), 0, 1, S("abcde"), 5, 1, 1); - test(S("abcde"), 0, 1, S("abcde"), 6, 0, 0); - test(S("abcde"), 0, 1, S("abcdefghij"), 0, 0, 1); - test(S("abcde"), 0, 1, S("abcdefghij"), 0, 1, 0); - test(S("abcde"), 0, 1, S("abcdefghij"), 0, 5, -4); - test(S("abcde"), 0, 1, S("abcdefghij"), 0, 9, -8); - test(S("abcde"), 0, 1, S("abcdefghij"), 0, 10, -9); - test(S("abcde"), 0, 1, S("abcdefghij"), 0, 11, -9); - test(S("abcde"), 0, 1, S("abcdefghij"), 1, 0, 1); - test(S("abcde"), 0, 1, S("abcdefghij"), 1, 1, -1); - test(S("abcde"), 0, 1, S("abcdefghij"), 1, 4, -1); - test(S("abcde"), 0, 1, S("abcdefghij"), 1, 8, -1); - test(S("abcde"), 0, 1, S("abcdefghij"), 1, 9, -1); - test(S("abcde"), 0, 1, S("abcdefghij"), 1, 10, -1); - test(S("abcde"), 0, 1, S("abcdefghij"), 5, 0, 1); - test(S("abcde"), 0, 1, S("abcdefghij"), 5, 1, -5); - test(S("abcde"), 0, 1, S("abcdefghij"), 5, 2, -5); - test(S("abcde"), 0, 1, S("abcdefghij"), 5, 4, -5); - test(S("abcde"), 0, 1, S("abcdefghij"), 5, 5, -5); - test(S("abcde"), 0, 1, S("abcdefghij"), 5, 6, -5); - test(S("abcde"), 0, 1, S("abcdefghij"), 9, 0, 1); - test(S("abcde"), 0, 1, S("abcdefghij"), 9, 1, -9); - test(S("abcde"), 0, 1, S("abcdefghij"), 9, 2, -9); - test(S("abcde"), 0, 1, S("abcdefghij"), 10, 0, 1); - test(S("abcde"), 0, 1, S("abcdefghij"), 10, 1, 1); - test(S("abcde"), 0, 1, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 0, 1, 0); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 0, 10, -9); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 0, 19, -18); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 0, 20, -19); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 0, 21, -19); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 0, 2, S(""), 0, 0, 2); - test(S("abcde"), 0, 2, S(""), 0, 1, 2); - test(S("abcde"), 0, 2, S(""), 1, 0, 0); - test(S("abcde"), 0, 2, S("abcde"), 0, 0, 2); - test(S("abcde"), 0, 2, S("abcde"), 0, 1, 1); - test(S("abcde"), 0, 2, S("abcde"), 0, 2, 0); - test(S("abcde"), 0, 2, S("abcde"), 0, 4, -2); - test(S("abcde"), 0, 2, S("abcde"), 0, 5, -3); - test(S("abcde"), 0, 2, S("abcde"), 0, 6, -3); - test(S("abcde"), 0, 2, S("abcde"), 1, 0, 2); - test(S("abcde"), 0, 2, S("abcde"), 1, 1, -1); - test(S("abcde"), 0, 2, S("abcde"), 1, 2, -1); - test(S("abcde"), 0, 2, S("abcde"), 1, 3, -1); - test(S("abcde"), 0, 2, S("abcde"), 1, 4, -1); - test(S("abcde"), 0, 2, S("abcde"), 1, 5, -1); - test(S("abcde"), 0, 2, S("abcde"), 2, 0, 2); - test(S("abcde"), 0, 2, S("abcde"), 2, 1, -2); - test(S("abcde"), 0, 2, S("abcde"), 2, 2, -2); - test(S("abcde"), 0, 2, S("abcde"), 2, 3, -2); - test(S("abcde"), 0, 2, S("abcde"), 2, 4, -2); - test(S("abcde"), 0, 2, S("abcde"), 4, 0, 2); - test(S("abcde"), 0, 2, S("abcde"), 4, 1, -4); - test(S("abcde"), 0, 2, S("abcde"), 4, 2, -4); - test(S("abcde"), 0, 2, S("abcde"), 5, 0, 2); - test(S("abcde"), 0, 2, S("abcde"), 5, 1, 2); - test(S("abcde"), 0, 2, S("abcde"), 6, 0, 0); - test(S("abcde"), 0, 2, S("abcdefghij"), 0, 0, 2); - test(S("abcde"), 0, 2, S("abcdefghij"), 0, 1, 1); - test(S("abcde"), 0, 2, S("abcdefghij"), 0, 5, -3); - test(S("abcde"), 0, 2, S("abcdefghij"), 0, 9, -7); -} - -template <class S> -void test4() -{ - test(S("abcde"), 0, 2, S("abcdefghij"), 0, 10, -8); - test(S("abcde"), 0, 2, S("abcdefghij"), 0, 11, -8); - test(S("abcde"), 0, 2, S("abcdefghij"), 1, 0, 2); - test(S("abcde"), 0, 2, S("abcdefghij"), 1, 1, -1); - test(S("abcde"), 0, 2, S("abcdefghij"), 1, 4, -1); - test(S("abcde"), 0, 2, S("abcdefghij"), 1, 8, -1); - test(S("abcde"), 0, 2, S("abcdefghij"), 1, 9, -1); - test(S("abcde"), 0, 2, S("abcdefghij"), 1, 10, -1); - test(S("abcde"), 0, 2, S("abcdefghij"), 5, 0, 2); - test(S("abcde"), 0, 2, S("abcdefghij"), 5, 1, -5); - test(S("abcde"), 0, 2, S("abcdefghij"), 5, 2, -5); - test(S("abcde"), 0, 2, S("abcdefghij"), 5, 4, -5); - test(S("abcde"), 0, 2, S("abcdefghij"), 5, 5, -5); - test(S("abcde"), 0, 2, S("abcdefghij"), 5, 6, -5); - test(S("abcde"), 0, 2, S("abcdefghij"), 9, 0, 2); - test(S("abcde"), 0, 2, S("abcdefghij"), 9, 1, -9); - test(S("abcde"), 0, 2, S("abcdefghij"), 9, 2, -9); - test(S("abcde"), 0, 2, S("abcdefghij"), 10, 0, 2); - test(S("abcde"), 0, 2, S("abcdefghij"), 10, 1, 2); - test(S("abcde"), 0, 2, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 0, 0, 2); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 0, 10, -8); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 0, 19, -17); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 0, 20, -18); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 0, 21, -18); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 1, 0, 2); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 10, 0, 2); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 19, 0, 2); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 20, 0, 2); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 20, 1, 2); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 0, 4, S(""), 0, 0, 4); - test(S("abcde"), 0, 4, S(""), 0, 1, 4); - test(S("abcde"), 0, 4, S(""), 1, 0, 0); - test(S("abcde"), 0, 4, S("abcde"), 0, 0, 4); - test(S("abcde"), 0, 4, S("abcde"), 0, 1, 3); - test(S("abcde"), 0, 4, S("abcde"), 0, 2, 2); - test(S("abcde"), 0, 4, S("abcde"), 0, 4, 0); - test(S("abcde"), 0, 4, S("abcde"), 0, 5, -1); - test(S("abcde"), 0, 4, S("abcde"), 0, 6, -1); - test(S("abcde"), 0, 4, S("abcde"), 1, 0, 4); - test(S("abcde"), 0, 4, S("abcde"), 1, 1, -1); - test(S("abcde"), 0, 4, S("abcde"), 1, 2, -1); - test(S("abcde"), 0, 4, S("abcde"), 1, 3, -1); - test(S("abcde"), 0, 4, S("abcde"), 1, 4, -1); - test(S("abcde"), 0, 4, S("abcde"), 1, 5, -1); - test(S("abcde"), 0, 4, S("abcde"), 2, 0, 4); - test(S("abcde"), 0, 4, S("abcde"), 2, 1, -2); - test(S("abcde"), 0, 4, S("abcde"), 2, 2, -2); - test(S("abcde"), 0, 4, S("abcde"), 2, 3, -2); - test(S("abcde"), 0, 4, S("abcde"), 2, 4, -2); - test(S("abcde"), 0, 4, S("abcde"), 4, 0, 4); - test(S("abcde"), 0, 4, S("abcde"), 4, 1, -4); - test(S("abcde"), 0, 4, S("abcde"), 4, 2, -4); - test(S("abcde"), 0, 4, S("abcde"), 5, 0, 4); - test(S("abcde"), 0, 4, S("abcde"), 5, 1, 4); - test(S("abcde"), 0, 4, S("abcde"), 6, 0, 0); - test(S("abcde"), 0, 4, S("abcdefghij"), 0, 0, 4); - test(S("abcde"), 0, 4, S("abcdefghij"), 0, 1, 3); - test(S("abcde"), 0, 4, S("abcdefghij"), 0, 5, -1); - test(S("abcde"), 0, 4, S("abcdefghij"), 0, 9, -5); - test(S("abcde"), 0, 4, S("abcdefghij"), 0, 10, -6); - test(S("abcde"), 0, 4, S("abcdefghij"), 0, 11, -6); - test(S("abcde"), 0, 4, S("abcdefghij"), 1, 0, 4); - test(S("abcde"), 0, 4, S("abcdefghij"), 1, 1, -1); - test(S("abcde"), 0, 4, S("abcdefghij"), 1, 4, -1); - test(S("abcde"), 0, 4, S("abcdefghij"), 1, 8, -1); - test(S("abcde"), 0, 4, S("abcdefghij"), 1, 9, -1); - test(S("abcde"), 0, 4, S("abcdefghij"), 1, 10, -1); - test(S("abcde"), 0, 4, S("abcdefghij"), 5, 0, 4); - test(S("abcde"), 0, 4, S("abcdefghij"), 5, 1, -5); - test(S("abcde"), 0, 4, S("abcdefghij"), 5, 2, -5); - test(S("abcde"), 0, 4, S("abcdefghij"), 5, 4, -5); - test(S("abcde"), 0, 4, S("abcdefghij"), 5, 5, -5); - test(S("abcde"), 0, 4, S("abcdefghij"), 5, 6, -5); - test(S("abcde"), 0, 4, S("abcdefghij"), 9, 0, 4); - test(S("abcde"), 0, 4, S("abcdefghij"), 9, 1, -9); - test(S("abcde"), 0, 4, S("abcdefghij"), 9, 2, -9); - test(S("abcde"), 0, 4, S("abcdefghij"), 10, 0, 4); - test(S("abcde"), 0, 4, S("abcdefghij"), 10, 1, 4); - test(S("abcde"), 0, 4, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 0, 0, 4); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 0, 1, 3); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 0, 10, -6); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 0, 19, -15); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 0, 20, -16); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 0, 21, -16); -} - -template <class S> -void test5() -{ - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 1, 0, 4); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 10, 0, 4); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 19, 0, 4); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 20, 0, 4); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 20, 1, 4); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 0, 5, S(""), 0, 0, 5); - test(S("abcde"), 0, 5, S(""), 0, 1, 5); - test(S("abcde"), 0, 5, S(""), 1, 0, 0); - test(S("abcde"), 0, 5, S("abcde"), 0, 0, 5); - test(S("abcde"), 0, 5, S("abcde"), 0, 1, 4); - test(S("abcde"), 0, 5, S("abcde"), 0, 2, 3); - test(S("abcde"), 0, 5, S("abcde"), 0, 4, 1); - test(S("abcde"), 0, 5, S("abcde"), 0, 5, 0); - test(S("abcde"), 0, 5, S("abcde"), 0, 6, 0); - test(S("abcde"), 0, 5, S("abcde"), 1, 0, 5); - test(S("abcde"), 0, 5, S("abcde"), 1, 1, -1); - test(S("abcde"), 0, 5, S("abcde"), 1, 2, -1); - test(S("abcde"), 0, 5, S("abcde"), 1, 3, -1); - test(S("abcde"), 0, 5, S("abcde"), 1, 4, -1); - test(S("abcde"), 0, 5, S("abcde"), 1, 5, -1); - test(S("abcde"), 0, 5, S("abcde"), 2, 0, 5); - test(S("abcde"), 0, 5, S("abcde"), 2, 1, -2); - test(S("abcde"), 0, 5, S("abcde"), 2, 2, -2); - test(S("abcde"), 0, 5, S("abcde"), 2, 3, -2); - test(S("abcde"), 0, 5, S("abcde"), 2, 4, -2); - test(S("abcde"), 0, 5, S("abcde"), 4, 0, 5); - test(S("abcde"), 0, 5, S("abcde"), 4, 1, -4); - test(S("abcde"), 0, 5, S("abcde"), 4, 2, -4); - test(S("abcde"), 0, 5, S("abcde"), 5, 0, 5); - test(S("abcde"), 0, 5, S("abcde"), 5, 1, 5); - test(S("abcde"), 0, 5, S("abcde"), 6, 0, 0); - test(S("abcde"), 0, 5, S("abcdefghij"), 0, 0, 5); - test(S("abcde"), 0, 5, S("abcdefghij"), 0, 1, 4); - test(S("abcde"), 0, 5, S("abcdefghij"), 0, 5, 0); - test(S("abcde"), 0, 5, S("abcdefghij"), 0, 9, -4); - test(S("abcde"), 0, 5, S("abcdefghij"), 0, 10, -5); - test(S("abcde"), 0, 5, S("abcdefghij"), 0, 11, -5); - test(S("abcde"), 0, 5, S("abcdefghij"), 1, 0, 5); - test(S("abcde"), 0, 5, S("abcdefghij"), 1, 1, -1); - test(S("abcde"), 0, 5, S("abcdefghij"), 1, 4, -1); - test(S("abcde"), 0, 5, S("abcdefghij"), 1, 8, -1); - test(S("abcde"), 0, 5, S("abcdefghij"), 1, 9, -1); - test(S("abcde"), 0, 5, S("abcdefghij"), 1, 10, -1); - test(S("abcde"), 0, 5, S("abcdefghij"), 5, 0, 5); - test(S("abcde"), 0, 5, S("abcdefghij"), 5, 1, -5); - test(S("abcde"), 0, 5, S("abcdefghij"), 5, 2, -5); - test(S("abcde"), 0, 5, S("abcdefghij"), 5, 4, -5); - test(S("abcde"), 0, 5, S("abcdefghij"), 5, 5, -5); - test(S("abcde"), 0, 5, S("abcdefghij"), 5, 6, -5); - test(S("abcde"), 0, 5, S("abcdefghij"), 9, 0, 5); - test(S("abcde"), 0, 5, S("abcdefghij"), 9, 1, -9); - test(S("abcde"), 0, 5, S("abcdefghij"), 9, 2, -9); - test(S("abcde"), 0, 5, S("abcdefghij"), 10, 0, 5); - test(S("abcde"), 0, 5, S("abcdefghij"), 10, 1, 5); - test(S("abcde"), 0, 5, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 0, 0, 5); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 0, 1, 4); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 0, 10, -5); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 0, 19, -14); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 0, 20, -15); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 0, 21, -15); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 1, 0, 5); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 10, 0, 5); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 19, 0, 5); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 20, 0, 5); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 20, 1, 5); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 0, 6, S(""), 0, 0, 5); - test(S("abcde"), 0, 6, S(""), 0, 1, 5); - test(S("abcde"), 0, 6, S(""), 1, 0, 0); - test(S("abcde"), 0, 6, S("abcde"), 0, 0, 5); - test(S("abcde"), 0, 6, S("abcde"), 0, 1, 4); - test(S("abcde"), 0, 6, S("abcde"), 0, 2, 3); - test(S("abcde"), 0, 6, S("abcde"), 0, 4, 1); - test(S("abcde"), 0, 6, S("abcde"), 0, 5, 0); -} - -template <class S> -void test6() -{ - test(S("abcde"), 0, 6, S("abcde"), 0, 6, 0); - test(S("abcde"), 0, 6, S("abcde"), 1, 0, 5); - test(S("abcde"), 0, 6, S("abcde"), 1, 1, -1); - test(S("abcde"), 0, 6, S("abcde"), 1, 2, -1); - test(S("abcde"), 0, 6, S("abcde"), 1, 3, -1); - test(S("abcde"), 0, 6, S("abcde"), 1, 4, -1); - test(S("abcde"), 0, 6, S("abcde"), 1, 5, -1); - test(S("abcde"), 0, 6, S("abcde"), 2, 0, 5); - test(S("abcde"), 0, 6, S("abcde"), 2, 1, -2); - test(S("abcde"), 0, 6, S("abcde"), 2, 2, -2); - test(S("abcde"), 0, 6, S("abcde"), 2, 3, -2); - test(S("abcde"), 0, 6, S("abcde"), 2, 4, -2); - test(S("abcde"), 0, 6, S("abcde"), 4, 0, 5); - test(S("abcde"), 0, 6, S("abcde"), 4, 1, -4); - test(S("abcde"), 0, 6, S("abcde"), 4, 2, -4); - test(S("abcde"), 0, 6, S("abcde"), 5, 0, 5); - test(S("abcde"), 0, 6, S("abcde"), 5, 1, 5); - test(S("abcde"), 0, 6, S("abcde"), 6, 0, 0); - test(S("abcde"), 0, 6, S("abcdefghij"), 0, 0, 5); - test(S("abcde"), 0, 6, S("abcdefghij"), 0, 1, 4); - test(S("abcde"), 0, 6, S("abcdefghij"), 0, 5, 0); - test(S("abcde"), 0, 6, S("abcdefghij"), 0, 9, -4); - test(S("abcde"), 0, 6, S("abcdefghij"), 0, 10, -5); - test(S("abcde"), 0, 6, S("abcdefghij"), 0, 11, -5); - test(S("abcde"), 0, 6, S("abcdefghij"), 1, 0, 5); - test(S("abcde"), 0, 6, S("abcdefghij"), 1, 1, -1); - test(S("abcde"), 0, 6, S("abcdefghij"), 1, 4, -1); - test(S("abcde"), 0, 6, S("abcdefghij"), 1, 8, -1); - test(S("abcde"), 0, 6, S("abcdefghij"), 1, 9, -1); - test(S("abcde"), 0, 6, S("abcdefghij"), 1, 10, -1); - test(S("abcde"), 0, 6, S("abcdefghij"), 5, 0, 5); - test(S("abcde"), 0, 6, S("abcdefghij"), 5, 1, -5); - test(S("abcde"), 0, 6, S("abcdefghij"), 5, 2, -5); - test(S("abcde"), 0, 6, S("abcdefghij"), 5, 4, -5); - test(S("abcde"), 0, 6, S("abcdefghij"), 5, 5, -5); - test(S("abcde"), 0, 6, S("abcdefghij"), 5, 6, -5); - test(S("abcde"), 0, 6, S("abcdefghij"), 9, 0, 5); - test(S("abcde"), 0, 6, S("abcdefghij"), 9, 1, -9); - test(S("abcde"), 0, 6, S("abcdefghij"), 9, 2, -9); - test(S("abcde"), 0, 6, S("abcdefghij"), 10, 0, 5); - test(S("abcde"), 0, 6, S("abcdefghij"), 10, 1, 5); - test(S("abcde"), 0, 6, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 0, 0, 5); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 0, 1, 4); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 0, 10, -5); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 0, 19, -14); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 0, 20, -15); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 0, 21, -15); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 1, 0, 5); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 10, 0, 5); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 19, 0, 5); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 20, 0, 5); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 20, 1, 5); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 1, 0, S(""), 0, 0, 0); - test(S("abcde"), 1, 0, S(""), 0, 1, 0); - test(S("abcde"), 1, 0, S(""), 1, 0, 0); - test(S("abcde"), 1, 0, S("abcde"), 0, 0, 0); - test(S("abcde"), 1, 0, S("abcde"), 0, 1, -1); - test(S("abcde"), 1, 0, S("abcde"), 0, 2, -2); - test(S("abcde"), 1, 0, S("abcde"), 0, 4, -4); - test(S("abcde"), 1, 0, S("abcde"), 0, 5, -5); - test(S("abcde"), 1, 0, S("abcde"), 0, 6, -5); - test(S("abcde"), 1, 0, S("abcde"), 1, 0, 0); - test(S("abcde"), 1, 0, S("abcde"), 1, 1, -1); - test(S("abcde"), 1, 0, S("abcde"), 1, 2, -2); - test(S("abcde"), 1, 0, S("abcde"), 1, 3, -3); - test(S("abcde"), 1, 0, S("abcde"), 1, 4, -4); - test(S("abcde"), 1, 0, S("abcde"), 1, 5, -4); - test(S("abcde"), 1, 0, S("abcde"), 2, 0, 0); - test(S("abcde"), 1, 0, S("abcde"), 2, 1, -1); - test(S("abcde"), 1, 0, S("abcde"), 2, 2, -2); - test(S("abcde"), 1, 0, S("abcde"), 2, 3, -3); - test(S("abcde"), 1, 0, S("abcde"), 2, 4, -3); - test(S("abcde"), 1, 0, S("abcde"), 4, 0, 0); - test(S("abcde"), 1, 0, S("abcde"), 4, 1, -1); - test(S("abcde"), 1, 0, S("abcde"), 4, 2, -1); - test(S("abcde"), 1, 0, S("abcde"), 5, 0, 0); - test(S("abcde"), 1, 0, S("abcde"), 5, 1, 0); - test(S("abcde"), 1, 0, S("abcde"), 6, 0, 0); - test(S("abcde"), 1, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcde"), 1, 0, S("abcdefghij"), 0, 1, -1); - test(S("abcde"), 1, 0, S("abcdefghij"), 0, 5, -5); - test(S("abcde"), 1, 0, S("abcdefghij"), 0, 9, -9); - test(S("abcde"), 1, 0, S("abcdefghij"), 0, 10, -10); - test(S("abcde"), 1, 0, S("abcdefghij"), 0, 11, -10); - test(S("abcde"), 1, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcde"), 1, 0, S("abcdefghij"), 1, 1, -1); -} - -template <class S> -void test7() -{ - test(S("abcde"), 1, 0, S("abcdefghij"), 1, 4, -4); - test(S("abcde"), 1, 0, S("abcdefghij"), 1, 8, -8); - test(S("abcde"), 1, 0, S("abcdefghij"), 1, 9, -9); - test(S("abcde"), 1, 0, S("abcdefghij"), 1, 10, -9); - test(S("abcde"), 1, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcde"), 1, 0, S("abcdefghij"), 5, 1, -1); - test(S("abcde"), 1, 0, S("abcdefghij"), 5, 2, -2); - test(S("abcde"), 1, 0, S("abcdefghij"), 5, 4, -4); - test(S("abcde"), 1, 0, S("abcdefghij"), 5, 5, -5); - test(S("abcde"), 1, 0, S("abcdefghij"), 5, 6, -5); - test(S("abcde"), 1, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcde"), 1, 0, S("abcdefghij"), 9, 1, -1); - test(S("abcde"), 1, 0, S("abcdefghij"), 9, 2, -1); - test(S("abcde"), 1, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcde"), 1, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcde"), 1, 0, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 1, 1, S(""), 0, 0, 1); - test(S("abcde"), 1, 1, S(""), 0, 1, 1); - test(S("abcde"), 1, 1, S(""), 1, 0, 0); - test(S("abcde"), 1, 1, S("abcde"), 0, 0, 1); - test(S("abcde"), 1, 1, S("abcde"), 0, 1, 1); - test(S("abcde"), 1, 1, S("abcde"), 0, 2, 1); - test(S("abcde"), 1, 1, S("abcde"), 0, 4, 1); - test(S("abcde"), 1, 1, S("abcde"), 0, 5, 1); - test(S("abcde"), 1, 1, S("abcde"), 0, 6, 1); - test(S("abcde"), 1, 1, S("abcde"), 1, 0, 1); - test(S("abcde"), 1, 1, S("abcde"), 1, 1, 0); - test(S("abcde"), 1, 1, S("abcde"), 1, 2, -1); - test(S("abcde"), 1, 1, S("abcde"), 1, 3, -2); - test(S("abcde"), 1, 1, S("abcde"), 1, 4, -3); - test(S("abcde"), 1, 1, S("abcde"), 1, 5, -3); - test(S("abcde"), 1, 1, S("abcde"), 2, 0, 1); - test(S("abcde"), 1, 1, S("abcde"), 2, 1, -1); - test(S("abcde"), 1, 1, S("abcde"), 2, 2, -1); - test(S("abcde"), 1, 1, S("abcde"), 2, 3, -1); - test(S("abcde"), 1, 1, S("abcde"), 2, 4, -1); - test(S("abcde"), 1, 1, S("abcde"), 4, 0, 1); - test(S("abcde"), 1, 1, S("abcde"), 4, 1, -3); - test(S("abcde"), 1, 1, S("abcde"), 4, 2, -3); - test(S("abcde"), 1, 1, S("abcde"), 5, 0, 1); - test(S("abcde"), 1, 1, S("abcde"), 5, 1, 1); - test(S("abcde"), 1, 1, S("abcde"), 6, 0, 0); - test(S("abcde"), 1, 1, S("abcdefghij"), 0, 0, 1); - test(S("abcde"), 1, 1, S("abcdefghij"), 0, 1, 1); - test(S("abcde"), 1, 1, S("abcdefghij"), 0, 5, 1); - test(S("abcde"), 1, 1, S("abcdefghij"), 0, 9, 1); - test(S("abcde"), 1, 1, S("abcdefghij"), 0, 10, 1); - test(S("abcde"), 1, 1, S("abcdefghij"), 0, 11, 1); - test(S("abcde"), 1, 1, S("abcdefghij"), 1, 0, 1); - test(S("abcde"), 1, 1, S("abcdefghij"), 1, 1, 0); - test(S("abcde"), 1, 1, S("abcdefghij"), 1, 4, -3); - test(S("abcde"), 1, 1, S("abcdefghij"), 1, 8, -7); - test(S("abcde"), 1, 1, S("abcdefghij"), 1, 9, -8); - test(S("abcde"), 1, 1, S("abcdefghij"), 1, 10, -8); - test(S("abcde"), 1, 1, S("abcdefghij"), 5, 0, 1); - test(S("abcde"), 1, 1, S("abcdefghij"), 5, 1, -4); - test(S("abcde"), 1, 1, S("abcdefghij"), 5, 2, -4); - test(S("abcde"), 1, 1, S("abcdefghij"), 5, 4, -4); - test(S("abcde"), 1, 1, S("abcdefghij"), 5, 5, -4); - test(S("abcde"), 1, 1, S("abcdefghij"), 5, 6, -4); - test(S("abcde"), 1, 1, S("abcdefghij"), 9, 0, 1); - test(S("abcde"), 1, 1, S("abcdefghij"), 9, 1, -8); - test(S("abcde"), 1, 1, S("abcdefghij"), 9, 2, -8); - test(S("abcde"), 1, 1, S("abcdefghij"), 10, 0, 1); - test(S("abcde"), 1, 1, S("abcdefghij"), 10, 1, 1); - test(S("abcde"), 1, 1, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 1, 1, 0); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 1, 9, -8); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 1, 18, -17); -} - -template <class S> -void test8() -{ - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 1, 19, -18); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 1, 20, -18); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 1, 2, S(""), 0, 0, 2); - test(S("abcde"), 1, 2, S(""), 0, 1, 2); - test(S("abcde"), 1, 2, S(""), 1, 0, 0); - test(S("abcde"), 1, 2, S("abcde"), 0, 0, 2); - test(S("abcde"), 1, 2, S("abcde"), 0, 1, 1); - test(S("abcde"), 1, 2, S("abcde"), 0, 2, 1); - test(S("abcde"), 1, 2, S("abcde"), 0, 4, 1); - test(S("abcde"), 1, 2, S("abcde"), 0, 5, 1); - test(S("abcde"), 1, 2, S("abcde"), 0, 6, 1); - test(S("abcde"), 1, 2, S("abcde"), 1, 0, 2); - test(S("abcde"), 1, 2, S("abcde"), 1, 1, 1); - test(S("abcde"), 1, 2, S("abcde"), 1, 2, 0); - test(S("abcde"), 1, 2, S("abcde"), 1, 3, -1); - test(S("abcde"), 1, 2, S("abcde"), 1, 4, -2); - test(S("abcde"), 1, 2, S("abcde"), 1, 5, -2); - test(S("abcde"), 1, 2, S("abcde"), 2, 0, 2); - test(S("abcde"), 1, 2, S("abcde"), 2, 1, -1); - test(S("abcde"), 1, 2, S("abcde"), 2, 2, -1); - test(S("abcde"), 1, 2, S("abcde"), 2, 3, -1); - test(S("abcde"), 1, 2, S("abcde"), 2, 4, -1); - test(S("abcde"), 1, 2, S("abcde"), 4, 0, 2); - test(S("abcde"), 1, 2, S("abcde"), 4, 1, -3); - test(S("abcde"), 1, 2, S("abcde"), 4, 2, -3); - test(S("abcde"), 1, 2, S("abcde"), 5, 0, 2); - test(S("abcde"), 1, 2, S("abcde"), 5, 1, 2); - test(S("abcde"), 1, 2, S("abcde"), 6, 0, 0); - test(S("abcde"), 1, 2, S("abcdefghij"), 0, 0, 2); - test(S("abcde"), 1, 2, S("abcdefghij"), 0, 1, 1); - test(S("abcde"), 1, 2, S("abcdefghij"), 0, 5, 1); - test(S("abcde"), 1, 2, S("abcdefghij"), 0, 9, 1); - test(S("abcde"), 1, 2, S("abcdefghij"), 0, 10, 1); - test(S("abcde"), 1, 2, S("abcdefghij"), 0, 11, 1); - test(S("abcde"), 1, 2, S("abcdefghij"), 1, 0, 2); - test(S("abcde"), 1, 2, S("abcdefghij"), 1, 1, 1); - test(S("abcde"), 1, 2, S("abcdefghij"), 1, 4, -2); - test(S("abcde"), 1, 2, S("abcdefghij"), 1, 8, -6); - test(S("abcde"), 1, 2, S("abcdefghij"), 1, 9, -7); - test(S("abcde"), 1, 2, S("abcdefghij"), 1, 10, -7); - test(S("abcde"), 1, 2, S("abcdefghij"), 5, 0, 2); - test(S("abcde"), 1, 2, S("abcdefghij"), 5, 1, -4); - test(S("abcde"), 1, 2, S("abcdefghij"), 5, 2, -4); - test(S("abcde"), 1, 2, S("abcdefghij"), 5, 4, -4); - test(S("abcde"), 1, 2, S("abcdefghij"), 5, 5, -4); - test(S("abcde"), 1, 2, S("abcdefghij"), 5, 6, -4); - test(S("abcde"), 1, 2, S("abcdefghij"), 9, 0, 2); - test(S("abcde"), 1, 2, S("abcdefghij"), 9, 1, -8); - test(S("abcde"), 1, 2, S("abcdefghij"), 9, 2, -8); - test(S("abcde"), 1, 2, S("abcdefghij"), 10, 0, 2); - test(S("abcde"), 1, 2, S("abcdefghij"), 10, 1, 2); - test(S("abcde"), 1, 2, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 0, 0, 2); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 1, 0, 2); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 1, 1, 1); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 1, 9, -7); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 1, 18, -16); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 1, 19, -17); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 1, 20, -17); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 10, 0, 2); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 19, 0, 2); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 20, 0, 2); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 20, 1, 2); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 1, 3, S(""), 0, 0, 3); - test(S("abcde"), 1, 3, S(""), 0, 1, 3); - test(S("abcde"), 1, 3, S(""), 1, 0, 0); - test(S("abcde"), 1, 3, S("abcde"), 0, 0, 3); - test(S("abcde"), 1, 3, S("abcde"), 0, 1, 1); - test(S("abcde"), 1, 3, S("abcde"), 0, 2, 1); - test(S("abcde"), 1, 3, S("abcde"), 0, 4, 1); - test(S("abcde"), 1, 3, S("abcde"), 0, 5, 1); - test(S("abcde"), 1, 3, S("abcde"), 0, 6, 1); - test(S("abcde"), 1, 3, S("abcde"), 1, 0, 3); - test(S("abcde"), 1, 3, S("abcde"), 1, 1, 2); - test(S("abcde"), 1, 3, S("abcde"), 1, 2, 1); -} - -template <class S> -void test9() -{ - test(S("abcde"), 1, 3, S("abcde"), 1, 3, 0); - test(S("abcde"), 1, 3, S("abcde"), 1, 4, -1); - test(S("abcde"), 1, 3, S("abcde"), 1, 5, -1); - test(S("abcde"), 1, 3, S("abcde"), 2, 0, 3); - test(S("abcde"), 1, 3, S("abcde"), 2, 1, -1); - test(S("abcde"), 1, 3, S("abcde"), 2, 2, -1); - test(S("abcde"), 1, 3, S("abcde"), 2, 3, -1); - test(S("abcde"), 1, 3, S("abcde"), 2, 4, -1); - test(S("abcde"), 1, 3, S("abcde"), 4, 0, 3); - test(S("abcde"), 1, 3, S("abcde"), 4, 1, -3); - test(S("abcde"), 1, 3, S("abcde"), 4, 2, -3); - test(S("abcde"), 1, 3, S("abcde"), 5, 0, 3); - test(S("abcde"), 1, 3, S("abcde"), 5, 1, 3); - test(S("abcde"), 1, 3, S("abcde"), 6, 0, 0); - test(S("abcde"), 1, 3, S("abcdefghij"), 0, 0, 3); - test(S("abcde"), 1, 3, S("abcdefghij"), 0, 1, 1); - test(S("abcde"), 1, 3, S("abcdefghij"), 0, 5, 1); - test(S("abcde"), 1, 3, S("abcdefghij"), 0, 9, 1); - test(S("abcde"), 1, 3, S("abcdefghij"), 0, 10, 1); - test(S("abcde"), 1, 3, S("abcdefghij"), 0, 11, 1); - test(S("abcde"), 1, 3, S("abcdefghij"), 1, 0, 3); - test(S("abcde"), 1, 3, S("abcdefghij"), 1, 1, 2); - test(S("abcde"), 1, 3, S("abcdefghij"), 1, 4, -1); - test(S("abcde"), 1, 3, S("abcdefghij"), 1, 8, -5); - test(S("abcde"), 1, 3, S("abcdefghij"), 1, 9, -6); - test(S("abcde"), 1, 3, S("abcdefghij"), 1, 10, -6); - test(S("abcde"), 1, 3, S("abcdefghij"), 5, 0, 3); - test(S("abcde"), 1, 3, S("abcdefghij"), 5, 1, -4); - test(S("abcde"), 1, 3, S("abcdefghij"), 5, 2, -4); - test(S("abcde"), 1, 3, S("abcdefghij"), 5, 4, -4); - test(S("abcde"), 1, 3, S("abcdefghij"), 5, 5, -4); - test(S("abcde"), 1, 3, S("abcdefghij"), 5, 6, -4); - test(S("abcde"), 1, 3, S("abcdefghij"), 9, 0, 3); - test(S("abcde"), 1, 3, S("abcdefghij"), 9, 1, -8); - test(S("abcde"), 1, 3, S("abcdefghij"), 9, 2, -8); - test(S("abcde"), 1, 3, S("abcdefghij"), 10, 0, 3); - test(S("abcde"), 1, 3, S("abcdefghij"), 10, 1, 3); - test(S("abcde"), 1, 3, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 0, 0, 3); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 1, 0, 3); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 1, 1, 2); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 1, 9, -6); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 1, 18, -15); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 1, 19, -16); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 1, 20, -16); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 10, 0, 3); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 19, 0, 3); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 20, 0, 3); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 20, 1, 3); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 1, 4, S(""), 0, 0, 4); - test(S("abcde"), 1, 4, S(""), 0, 1, 4); - test(S("abcde"), 1, 4, S(""), 1, 0, 0); - test(S("abcde"), 1, 4, S("abcde"), 0, 0, 4); - test(S("abcde"), 1, 4, S("abcde"), 0, 1, 1); - test(S("abcde"), 1, 4, S("abcde"), 0, 2, 1); - test(S("abcde"), 1, 4, S("abcde"), 0, 4, 1); - test(S("abcde"), 1, 4, S("abcde"), 0, 5, 1); - test(S("abcde"), 1, 4, S("abcde"), 0, 6, 1); - test(S("abcde"), 1, 4, S("abcde"), 1, 0, 4); - test(S("abcde"), 1, 4, S("abcde"), 1, 1, 3); - test(S("abcde"), 1, 4, S("abcde"), 1, 2, 2); - test(S("abcde"), 1, 4, S("abcde"), 1, 3, 1); - test(S("abcde"), 1, 4, S("abcde"), 1, 4, 0); - test(S("abcde"), 1, 4, S("abcde"), 1, 5, 0); - test(S("abcde"), 1, 4, S("abcde"), 2, 0, 4); - test(S("abcde"), 1, 4, S("abcde"), 2, 1, -1); - test(S("abcde"), 1, 4, S("abcde"), 2, 2, -1); - test(S("abcde"), 1, 4, S("abcde"), 2, 3, -1); - test(S("abcde"), 1, 4, S("abcde"), 2, 4, -1); - test(S("abcde"), 1, 4, S("abcde"), 4, 0, 4); - test(S("abcde"), 1, 4, S("abcde"), 4, 1, -3); - test(S("abcde"), 1, 4, S("abcde"), 4, 2, -3); - test(S("abcde"), 1, 4, S("abcde"), 5, 0, 4); - test(S("abcde"), 1, 4, S("abcde"), 5, 1, 4); - test(S("abcde"), 1, 4, S("abcde"), 6, 0, 0); - test(S("abcde"), 1, 4, S("abcdefghij"), 0, 0, 4); - test(S("abcde"), 1, 4, S("abcdefghij"), 0, 1, 1); - test(S("abcde"), 1, 4, S("abcdefghij"), 0, 5, 1); - test(S("abcde"), 1, 4, S("abcdefghij"), 0, 9, 1); - test(S("abcde"), 1, 4, S("abcdefghij"), 0, 10, 1); - test(S("abcde"), 1, 4, S("abcdefghij"), 0, 11, 1); - test(S("abcde"), 1, 4, S("abcdefghij"), 1, 0, 4); - test(S("abcde"), 1, 4, S("abcdefghij"), 1, 1, 3); - test(S("abcde"), 1, 4, S("abcdefghij"), 1, 4, 0); - test(S("abcde"), 1, 4, S("abcdefghij"), 1, 8, -4); - test(S("abcde"), 1, 4, S("abcdefghij"), 1, 9, -5); - test(S("abcde"), 1, 4, S("abcdefghij"), 1, 10, -5); -} - -template <class S> -void test10() -{ - test(S("abcde"), 1, 4, S("abcdefghij"), 5, 0, 4); - test(S("abcde"), 1, 4, S("abcdefghij"), 5, 1, -4); - test(S("abcde"), 1, 4, S("abcdefghij"), 5, 2, -4); - test(S("abcde"), 1, 4, S("abcdefghij"), 5, 4, -4); - test(S("abcde"), 1, 4, S("abcdefghij"), 5, 5, -4); - test(S("abcde"), 1, 4, S("abcdefghij"), 5, 6, -4); - test(S("abcde"), 1, 4, S("abcdefghij"), 9, 0, 4); - test(S("abcde"), 1, 4, S("abcdefghij"), 9, 1, -8); - test(S("abcde"), 1, 4, S("abcdefghij"), 9, 2, -8); - test(S("abcde"), 1, 4, S("abcdefghij"), 10, 0, 4); - test(S("abcde"), 1, 4, S("abcdefghij"), 10, 1, 4); - test(S("abcde"), 1, 4, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 0, 0, 4); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 1, 0, 4); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 1, 1, 3); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 1, 9, -5); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 1, 18, -14); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 1, 19, -15); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 1, 20, -15); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 10, 0, 4); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 19, 0, 4); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 20, 0, 4); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 20, 1, 4); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 1, 5, S(""), 0, 0, 4); - test(S("abcde"), 1, 5, S(""), 0, 1, 4); - test(S("abcde"), 1, 5, S(""), 1, 0, 0); - test(S("abcde"), 1, 5, S("abcde"), 0, 0, 4); - test(S("abcde"), 1, 5, S("abcde"), 0, 1, 1); - test(S("abcde"), 1, 5, S("abcde"), 0, 2, 1); - test(S("abcde"), 1, 5, S("abcde"), 0, 4, 1); - test(S("abcde"), 1, 5, S("abcde"), 0, 5, 1); - test(S("abcde"), 1, 5, S("abcde"), 0, 6, 1); - test(S("abcde"), 1, 5, S("abcde"), 1, 0, 4); - test(S("abcde"), 1, 5, S("abcde"), 1, 1, 3); - test(S("abcde"), 1, 5, S("abcde"), 1, 2, 2); - test(S("abcde"), 1, 5, S("abcde"), 1, 3, 1); - test(S("abcde"), 1, 5, S("abcde"), 1, 4, 0); - test(S("abcde"), 1, 5, S("abcde"), 1, 5, 0); - test(S("abcde"), 1, 5, S("abcde"), 2, 0, 4); - test(S("abcde"), 1, 5, S("abcde"), 2, 1, -1); - test(S("abcde"), 1, 5, S("abcde"), 2, 2, -1); - test(S("abcde"), 1, 5, S("abcde"), 2, 3, -1); - test(S("abcde"), 1, 5, S("abcde"), 2, 4, -1); - test(S("abcde"), 1, 5, S("abcde"), 4, 0, 4); - test(S("abcde"), 1, 5, S("abcde"), 4, 1, -3); - test(S("abcde"), 1, 5, S("abcde"), 4, 2, -3); - test(S("abcde"), 1, 5, S("abcde"), 5, 0, 4); - test(S("abcde"), 1, 5, S("abcde"), 5, 1, 4); - test(S("abcde"), 1, 5, S("abcde"), 6, 0, 0); - test(S("abcde"), 1, 5, S("abcdefghij"), 0, 0, 4); - test(S("abcde"), 1, 5, S("abcdefghij"), 0, 1, 1); - test(S("abcde"), 1, 5, S("abcdefghij"), 0, 5, 1); - test(S("abcde"), 1, 5, S("abcdefghij"), 0, 9, 1); - test(S("abcde"), 1, 5, S("abcdefghij"), 0, 10, 1); - test(S("abcde"), 1, 5, S("abcdefghij"), 0, 11, 1); - test(S("abcde"), 1, 5, S("abcdefghij"), 1, 0, 4); - test(S("abcde"), 1, 5, S("abcdefghij"), 1, 1, 3); - test(S("abcde"), 1, 5, S("abcdefghij"), 1, 4, 0); - test(S("abcde"), 1, 5, S("abcdefghij"), 1, 8, -4); - test(S("abcde"), 1, 5, S("abcdefghij"), 1, 9, -5); - test(S("abcde"), 1, 5, S("abcdefghij"), 1, 10, -5); - test(S("abcde"), 1, 5, S("abcdefghij"), 5, 0, 4); - test(S("abcde"), 1, 5, S("abcdefghij"), 5, 1, -4); - test(S("abcde"), 1, 5, S("abcdefghij"), 5, 2, -4); - test(S("abcde"), 1, 5, S("abcdefghij"), 5, 4, -4); - test(S("abcde"), 1, 5, S("abcdefghij"), 5, 5, -4); - test(S("abcde"), 1, 5, S("abcdefghij"), 5, 6, -4); - test(S("abcde"), 1, 5, S("abcdefghij"), 9, 0, 4); - test(S("abcde"), 1, 5, S("abcdefghij"), 9, 1, -8); - test(S("abcde"), 1, 5, S("abcdefghij"), 9, 2, -8); - test(S("abcde"), 1, 5, S("abcdefghij"), 10, 0, 4); - test(S("abcde"), 1, 5, S("abcdefghij"), 10, 1, 4); - test(S("abcde"), 1, 5, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 0, 0, 4); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 1, 0, 4); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 1, 1, 3); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 1, 9, -5); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 1, 18, -14); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 1, 19, -15); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 1, 20, -15); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 10, 0, 4); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 10, 1, -9); -} - -template <class S> -void test11() -{ - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 19, 0, 4); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 20, 0, 4); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 20, 1, 4); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 2, 0, S(""), 0, 0, 0); - test(S("abcde"), 2, 0, S(""), 0, 1, 0); - test(S("abcde"), 2, 0, S(""), 1, 0, 0); - test(S("abcde"), 2, 0, S("abcde"), 0, 0, 0); - test(S("abcde"), 2, 0, S("abcde"), 0, 1, -1); - test(S("abcde"), 2, 0, S("abcde"), 0, 2, -2); - test(S("abcde"), 2, 0, S("abcde"), 0, 4, -4); - test(S("abcde"), 2, 0, S("abcde"), 0, 5, -5); - test(S("abcde"), 2, 0, S("abcde"), 0, 6, -5); - test(S("abcde"), 2, 0, S("abcde"), 1, 0, 0); - test(S("abcde"), 2, 0, S("abcde"), 1, 1, -1); - test(S("abcde"), 2, 0, S("abcde"), 1, 2, -2); - test(S("abcde"), 2, 0, S("abcde"), 1, 3, -3); - test(S("abcde"), 2, 0, S("abcde"), 1, 4, -4); - test(S("abcde"), 2, 0, S("abcde"), 1, 5, -4); - test(S("abcde"), 2, 0, S("abcde"), 2, 0, 0); - test(S("abcde"), 2, 0, S("abcde"), 2, 1, -1); - test(S("abcde"), 2, 0, S("abcde"), 2, 2, -2); - test(S("abcde"), 2, 0, S("abcde"), 2, 3, -3); - test(S("abcde"), 2, 0, S("abcde"), 2, 4, -3); - test(S("abcde"), 2, 0, S("abcde"), 4, 0, 0); - test(S("abcde"), 2, 0, S("abcde"), 4, 1, -1); - test(S("abcde"), 2, 0, S("abcde"), 4, 2, -1); - test(S("abcde"), 2, 0, S("abcde"), 5, 0, 0); - test(S("abcde"), 2, 0, S("abcde"), 5, 1, 0); - test(S("abcde"), 2, 0, S("abcde"), 6, 0, 0); - test(S("abcde"), 2, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcde"), 2, 0, S("abcdefghij"), 0, 1, -1); - test(S("abcde"), 2, 0, S("abcdefghij"), 0, 5, -5); - test(S("abcde"), 2, 0, S("abcdefghij"), 0, 9, -9); - test(S("abcde"), 2, 0, S("abcdefghij"), 0, 10, -10); - test(S("abcde"), 2, 0, S("abcdefghij"), 0, 11, -10); - test(S("abcde"), 2, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcde"), 2, 0, S("abcdefghij"), 1, 1, -1); - test(S("abcde"), 2, 0, S("abcdefghij"), 1, 4, -4); - test(S("abcde"), 2, 0, S("abcdefghij"), 1, 8, -8); - test(S("abcde"), 2, 0, S("abcdefghij"), 1, 9, -9); - test(S("abcde"), 2, 0, S("abcdefghij"), 1, 10, -9); - test(S("abcde"), 2, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcde"), 2, 0, S("abcdefghij"), 5, 1, -1); - test(S("abcde"), 2, 0, S("abcdefghij"), 5, 2, -2); - test(S("abcde"), 2, 0, S("abcdefghij"), 5, 4, -4); - test(S("abcde"), 2, 0, S("abcdefghij"), 5, 5, -5); - test(S("abcde"), 2, 0, S("abcdefghij"), 5, 6, -5); - test(S("abcde"), 2, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcde"), 2, 0, S("abcdefghij"), 9, 1, -1); - test(S("abcde"), 2, 0, S("abcdefghij"), 9, 2, -1); - test(S("abcde"), 2, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcde"), 2, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcde"), 2, 0, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 2, 1, S(""), 0, 0, 1); - test(S("abcde"), 2, 1, S(""), 0, 1, 1); - test(S("abcde"), 2, 1, S(""), 1, 0, 0); - test(S("abcde"), 2, 1, S("abcde"), 0, 0, 1); - test(S("abcde"), 2, 1, S("abcde"), 0, 1, 2); - test(S("abcde"), 2, 1, S("abcde"), 0, 2, 2); - test(S("abcde"), 2, 1, S("abcde"), 0, 4, 2); - test(S("abcde"), 2, 1, S("abcde"), 0, 5, 2); - test(S("abcde"), 2, 1, S("abcde"), 0, 6, 2); - test(S("abcde"), 2, 1, S("abcde"), 1, 0, 1); - test(S("abcde"), 2, 1, S("abcde"), 1, 1, 1); - test(S("abcde"), 2, 1, S("abcde"), 1, 2, 1); - test(S("abcde"), 2, 1, S("abcde"), 1, 3, 1); - test(S("abcde"), 2, 1, S("abcde"), 1, 4, 1); - test(S("abcde"), 2, 1, S("abcde"), 1, 5, 1); - test(S("abcde"), 2, 1, S("abcde"), 2, 0, 1); -} - -template <class S> -void test12() -{ - test(S("abcde"), 2, 1, S("abcde"), 2, 1, 0); - test(S("abcde"), 2, 1, S("abcde"), 2, 2, -1); - test(S("abcde"), 2, 1, S("abcde"), 2, 3, -2); - test(S("abcde"), 2, 1, S("abcde"), 2, 4, -2); - test(S("abcde"), 2, 1, S("abcde"), 4, 0, 1); - test(S("abcde"), 2, 1, S("abcde"), 4, 1, -2); - test(S("abcde"), 2, 1, S("abcde"), 4, 2, -2); - test(S("abcde"), 2, 1, S("abcde"), 5, 0, 1); - test(S("abcde"), 2, 1, S("abcde"), 5, 1, 1); - test(S("abcde"), 2, 1, S("abcde"), 6, 0, 0); - test(S("abcde"), 2, 1, S("abcdefghij"), 0, 0, 1); - test(S("abcde"), 2, 1, S("abcdefghij"), 0, 1, 2); - test(S("abcde"), 2, 1, S("abcdefghij"), 0, 5, 2); - test(S("abcde"), 2, 1, S("abcdefghij"), 0, 9, 2); - test(S("abcde"), 2, 1, S("abcdefghij"), 0, 10, 2); - test(S("abcde"), 2, 1, S("abcdefghij"), 0, 11, 2); - test(S("abcde"), 2, 1, S("abcdefghij"), 1, 0, 1); - test(S("abcde"), 2, 1, S("abcdefghij"), 1, 1, 1); - test(S("abcde"), 2, 1, S("abcdefghij"), 1, 4, 1); - test(S("abcde"), 2, 1, S("abcdefghij"), 1, 8, 1); - test(S("abcde"), 2, 1, S("abcdefghij"), 1, 9, 1); - test(S("abcde"), 2, 1, S("abcdefghij"), 1, 10, 1); - test(S("abcde"), 2, 1, S("abcdefghij"), 5, 0, 1); - test(S("abcde"), 2, 1, S("abcdefghij"), 5, 1, -3); - test(S("abcde"), 2, 1, S("abcdefghij"), 5, 2, -3); - test(S("abcde"), 2, 1, S("abcdefghij"), 5, 4, -3); - test(S("abcde"), 2, 1, S("abcdefghij"), 5, 5, -3); - test(S("abcde"), 2, 1, S("abcdefghij"), 5, 6, -3); - test(S("abcde"), 2, 1, S("abcdefghij"), 9, 0, 1); - test(S("abcde"), 2, 1, S("abcdefghij"), 9, 1, -7); - test(S("abcde"), 2, 1, S("abcdefghij"), 9, 2, -7); - test(S("abcde"), 2, 1, S("abcdefghij"), 10, 0, 1); - test(S("abcde"), 2, 1, S("abcdefghij"), 10, 1, 1); - test(S("abcde"), 2, 1, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 0, 1, 2); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 0, 10, 2); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 0, 19, 2); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 0, 20, 2); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 0, 21, 2); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 1, 1, 1); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 1, 9, 1); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 1, 18, 1); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 1, 19, 1); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 1, 20, 1); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 10, 1, -8); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 10, 5, -8); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 10, 9, -8); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 10, 10, -8); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 10, 11, -8); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 19, 1, -17); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 19, 2, -17); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 2, 2, S(""), 0, 0, 2); - test(S("abcde"), 2, 2, S(""), 0, 1, 2); - test(S("abcde"), 2, 2, S(""), 1, 0, 0); - test(S("abcde"), 2, 2, S("abcde"), 0, 0, 2); - test(S("abcde"), 2, 2, S("abcde"), 0, 1, 2); - test(S("abcde"), 2, 2, S("abcde"), 0, 2, 2); - test(S("abcde"), 2, 2, S("abcde"), 0, 4, 2); - test(S("abcde"), 2, 2, S("abcde"), 0, 5, 2); - test(S("abcde"), 2, 2, S("abcde"), 0, 6, 2); - test(S("abcde"), 2, 2, S("abcde"), 1, 0, 2); - test(S("abcde"), 2, 2, S("abcde"), 1, 1, 1); - test(S("abcde"), 2, 2, S("abcde"), 1, 2, 1); - test(S("abcde"), 2, 2, S("abcde"), 1, 3, 1); - test(S("abcde"), 2, 2, S("abcde"), 1, 4, 1); - test(S("abcde"), 2, 2, S("abcde"), 1, 5, 1); - test(S("abcde"), 2, 2, S("abcde"), 2, 0, 2); - test(S("abcde"), 2, 2, S("abcde"), 2, 1, 1); - test(S("abcde"), 2, 2, S("abcde"), 2, 2, 0); - test(S("abcde"), 2, 2, S("abcde"), 2, 3, -1); - test(S("abcde"), 2, 2, S("abcde"), 2, 4, -1); - test(S("abcde"), 2, 2, S("abcde"), 4, 0, 2); - test(S("abcde"), 2, 2, S("abcde"), 4, 1, -2); - test(S("abcde"), 2, 2, S("abcde"), 4, 2, -2); - test(S("abcde"), 2, 2, S("abcde"), 5, 0, 2); - test(S("abcde"), 2, 2, S("abcde"), 5, 1, 2); - test(S("abcde"), 2, 2, S("abcde"), 6, 0, 0); - test(S("abcde"), 2, 2, S("abcdefghij"), 0, 0, 2); - test(S("abcde"), 2, 2, S("abcdefghij"), 0, 1, 2); - test(S("abcde"), 2, 2, S("abcdefghij"), 0, 5, 2); - test(S("abcde"), 2, 2, S("abcdefghij"), 0, 9, 2); - test(S("abcde"), 2, 2, S("abcdefghij"), 0, 10, 2); - test(S("abcde"), 2, 2, S("abcdefghij"), 0, 11, 2); - test(S("abcde"), 2, 2, S("abcdefghij"), 1, 0, 2); - test(S("abcde"), 2, 2, S("abcdefghij"), 1, 1, 1); - test(S("abcde"), 2, 2, S("abcdefghij"), 1, 4, 1); - test(S("abcde"), 2, 2, S("abcdefghij"), 1, 8, 1); - test(S("abcde"), 2, 2, S("abcdefghij"), 1, 9, 1); - test(S("abcde"), 2, 2, S("abcdefghij"), 1, 10, 1); - test(S("abcde"), 2, 2, S("abcdefghij"), 5, 0, 2); - test(S("abcde"), 2, 2, S("abcdefghij"), 5, 1, -3); - test(S("abcde"), 2, 2, S("abcdefghij"), 5, 2, -3); - test(S("abcde"), 2, 2, S("abcdefghij"), 5, 4, -3); -} - -template <class S> -void test13() -{ - test(S("abcde"), 2, 2, S("abcdefghij"), 5, 5, -3); - test(S("abcde"), 2, 2, S("abcdefghij"), 5, 6, -3); - test(S("abcde"), 2, 2, S("abcdefghij"), 9, 0, 2); - test(S("abcde"), 2, 2, S("abcdefghij"), 9, 1, -7); - test(S("abcde"), 2, 2, S("abcdefghij"), 9, 2, -7); - test(S("abcde"), 2, 2, S("abcdefghij"), 10, 0, 2); - test(S("abcde"), 2, 2, S("abcdefghij"), 10, 1, 2); - test(S("abcde"), 2, 2, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 0, 0, 2); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 0, 1, 2); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 0, 10, 2); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 0, 19, 2); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 0, 20, 2); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 0, 21, 2); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 1, 0, 2); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 1, 1, 1); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 1, 9, 1); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 1, 18, 1); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 1, 19, 1); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 1, 20, 1); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 10, 0, 2); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 10, 1, -8); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 10, 5, -8); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 10, 9, -8); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 10, 10, -8); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 10, 11, -8); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 19, 0, 2); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 19, 1, -17); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 19, 2, -17); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 20, 0, 2); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 20, 1, 2); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 2, 3, S(""), 0, 0, 3); - test(S("abcde"), 2, 3, S(""), 0, 1, 3); - test(S("abcde"), 2, 3, S(""), 1, 0, 0); - test(S("abcde"), 2, 3, S("abcde"), 0, 0, 3); - test(S("abcde"), 2, 3, S("abcde"), 0, 1, 2); - test(S("abcde"), 2, 3, S("abcde"), 0, 2, 2); - test(S("abcde"), 2, 3, S("abcde"), 0, 4, 2); - test(S("abcde"), 2, 3, S("abcde"), 0, 5, 2); - test(S("abcde"), 2, 3, S("abcde"), 0, 6, 2); - test(S("abcde"), 2, 3, S("abcde"), 1, 0, 3); - test(S("abcde"), 2, 3, S("abcde"), 1, 1, 1); - test(S("abcde"), 2, 3, S("abcde"), 1, 2, 1); - test(S("abcde"), 2, 3, S("abcde"), 1, 3, 1); - test(S("abcde"), 2, 3, S("abcde"), 1, 4, 1); - test(S("abcde"), 2, 3, S("abcde"), 1, 5, 1); - test(S("abcde"), 2, 3, S("abcde"), 2, 0, 3); - test(S("abcde"), 2, 3, S("abcde"), 2, 1, 2); - test(S("abcde"), 2, 3, S("abcde"), 2, 2, 1); - test(S("abcde"), 2, 3, S("abcde"), 2, 3, 0); - test(S("abcde"), 2, 3, S("abcde"), 2, 4, 0); - test(S("abcde"), 2, 3, S("abcde"), 4, 0, 3); - test(S("abcde"), 2, 3, S("abcde"), 4, 1, -2); - test(S("abcde"), 2, 3, S("abcde"), 4, 2, -2); - test(S("abcde"), 2, 3, S("abcde"), 5, 0, 3); - test(S("abcde"), 2, 3, S("abcde"), 5, 1, 3); - test(S("abcde"), 2, 3, S("abcde"), 6, 0, 0); - test(S("abcde"), 2, 3, S("abcdefghij"), 0, 0, 3); - test(S("abcde"), 2, 3, S("abcdefghij"), 0, 1, 2); - test(S("abcde"), 2, 3, S("abcdefghij"), 0, 5, 2); - test(S("abcde"), 2, 3, S("abcdefghij"), 0, 9, 2); - test(S("abcde"), 2, 3, S("abcdefghij"), 0, 10, 2); - test(S("abcde"), 2, 3, S("abcdefghij"), 0, 11, 2); - test(S("abcde"), 2, 3, S("abcdefghij"), 1, 0, 3); - test(S("abcde"), 2, 3, S("abcdefghij"), 1, 1, 1); - test(S("abcde"), 2, 3, S("abcdefghij"), 1, 4, 1); - test(S("abcde"), 2, 3, S("abcdefghij"), 1, 8, 1); - test(S("abcde"), 2, 3, S("abcdefghij"), 1, 9, 1); - test(S("abcde"), 2, 3, S("abcdefghij"), 1, 10, 1); - test(S("abcde"), 2, 3, S("abcdefghij"), 5, 0, 3); - test(S("abcde"), 2, 3, S("abcdefghij"), 5, 1, -3); - test(S("abcde"), 2, 3, S("abcdefghij"), 5, 2, -3); - test(S("abcde"), 2, 3, S("abcdefghij"), 5, 4, -3); - test(S("abcde"), 2, 3, S("abcdefghij"), 5, 5, -3); - test(S("abcde"), 2, 3, S("abcdefghij"), 5, 6, -3); - test(S("abcde"), 2, 3, S("abcdefghij"), 9, 0, 3); - test(S("abcde"), 2, 3, S("abcdefghij"), 9, 1, -7); - test(S("abcde"), 2, 3, S("abcdefghij"), 9, 2, -7); - test(S("abcde"), 2, 3, S("abcdefghij"), 10, 0, 3); - test(S("abcde"), 2, 3, S("abcdefghij"), 10, 1, 3); - test(S("abcde"), 2, 3, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 0, 0, 3); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 0, 1, 2); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 0, 10, 2); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 0, 19, 2); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 0, 20, 2); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 0, 21, 2); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 1, 0, 3); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 1, 1, 1); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 1, 9, 1); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 1, 18, 1); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 1, 19, 1); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 1, 20, 1); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 10, 0, 3); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 10, 1, -8); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 10, 5, -8); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 10, 9, -8); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 10, 10, -8); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 10, 11, -8); -} - -template <class S> -void test14() -{ - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 19, 0, 3); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 19, 1, -17); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 19, 2, -17); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 20, 0, 3); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 20, 1, 3); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 2, 4, S(""), 0, 0, 3); - test(S("abcde"), 2, 4, S(""), 0, 1, 3); - test(S("abcde"), 2, 4, S(""), 1, 0, 0); - test(S("abcde"), 2, 4, S("abcde"), 0, 0, 3); - test(S("abcde"), 2, 4, S("abcde"), 0, 1, 2); - test(S("abcde"), 2, 4, S("abcde"), 0, 2, 2); - test(S("abcde"), 2, 4, S("abcde"), 0, 4, 2); - test(S("abcde"), 2, 4, S("abcde"), 0, 5, 2); - test(S("abcde"), 2, 4, S("abcde"), 0, 6, 2); - test(S("abcde"), 2, 4, S("abcde"), 1, 0, 3); - test(S("abcde"), 2, 4, S("abcde"), 1, 1, 1); - test(S("abcde"), 2, 4, S("abcde"), 1, 2, 1); - test(S("abcde"), 2, 4, S("abcde"), 1, 3, 1); - test(S("abcde"), 2, 4, S("abcde"), 1, 4, 1); - test(S("abcde"), 2, 4, S("abcde"), 1, 5, 1); - test(S("abcde"), 2, 4, S("abcde"), 2, 0, 3); - test(S("abcde"), 2, 4, S("abcde"), 2, 1, 2); - test(S("abcde"), 2, 4, S("abcde"), 2, 2, 1); - test(S("abcde"), 2, 4, S("abcde"), 2, 3, 0); - test(S("abcde"), 2, 4, S("abcde"), 2, 4, 0); - test(S("abcde"), 2, 4, S("abcde"), 4, 0, 3); - test(S("abcde"), 2, 4, S("abcde"), 4, 1, -2); - test(S("abcde"), 2, 4, S("abcde"), 4, 2, -2); - test(S("abcde"), 2, 4, S("abcde"), 5, 0, 3); - test(S("abcde"), 2, 4, S("abcde"), 5, 1, 3); - test(S("abcde"), 2, 4, S("abcde"), 6, 0, 0); - test(S("abcde"), 2, 4, S("abcdefghij"), 0, 0, 3); - test(S("abcde"), 2, 4, S("abcdefghij"), 0, 1, 2); - test(S("abcde"), 2, 4, S("abcdefghij"), 0, 5, 2); - test(S("abcde"), 2, 4, S("abcdefghij"), 0, 9, 2); - test(S("abcde"), 2, 4, S("abcdefghij"), 0, 10, 2); - test(S("abcde"), 2, 4, S("abcdefghij"), 0, 11, 2); - test(S("abcde"), 2, 4, S("abcdefghij"), 1, 0, 3); - test(S("abcde"), 2, 4, S("abcdefghij"), 1, 1, 1); - test(S("abcde"), 2, 4, S("abcdefghij"), 1, 4, 1); - test(S("abcde"), 2, 4, S("abcdefghij"), 1, 8, 1); - test(S("abcde"), 2, 4, S("abcdefghij"), 1, 9, 1); - test(S("abcde"), 2, 4, S("abcdefghij"), 1, 10, 1); - test(S("abcde"), 2, 4, S("abcdefghij"), 5, 0, 3); - test(S("abcde"), 2, 4, S("abcdefghij"), 5, 1, -3); - test(S("abcde"), 2, 4, S("abcdefghij"), 5, 2, -3); - test(S("abcde"), 2, 4, S("abcdefghij"), 5, 4, -3); - test(S("abcde"), 2, 4, S("abcdefghij"), 5, 5, -3); - test(S("abcde"), 2, 4, S("abcdefghij"), 5, 6, -3); - test(S("abcde"), 2, 4, S("abcdefghij"), 9, 0, 3); - test(S("abcde"), 2, 4, S("abcdefghij"), 9, 1, -7); - test(S("abcde"), 2, 4, S("abcdefghij"), 9, 2, -7); - test(S("abcde"), 2, 4, S("abcdefghij"), 10, 0, 3); - test(S("abcde"), 2, 4, S("abcdefghij"), 10, 1, 3); - test(S("abcde"), 2, 4, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 0, 0, 3); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 0, 1, 2); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 0, 10, 2); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 0, 19, 2); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 0, 20, 2); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 0, 21, 2); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 1, 0, 3); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 1, 1, 1); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 1, 9, 1); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 1, 18, 1); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 1, 19, 1); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 1, 20, 1); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 10, 0, 3); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 10, 1, -8); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 10, 5, -8); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 10, 9, -8); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 10, 10, -8); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 10, 11, -8); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 19, 0, 3); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 19, 1, -17); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 19, 2, -17); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 20, 0, 3); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 20, 1, 3); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 4, 0, S(""), 0, 0, 0); - test(S("abcde"), 4, 0, S(""), 0, 1, 0); - test(S("abcde"), 4, 0, S(""), 1, 0, 0); - test(S("abcde"), 4, 0, S("abcde"), 0, 0, 0); - test(S("abcde"), 4, 0, S("abcde"), 0, 1, -1); - test(S("abcde"), 4, 0, S("abcde"), 0, 2, -2); - test(S("abcde"), 4, 0, S("abcde"), 0, 4, -4); - test(S("abcde"), 4, 0, S("abcde"), 0, 5, -5); - test(S("abcde"), 4, 0, S("abcde"), 0, 6, -5); - test(S("abcde"), 4, 0, S("abcde"), 1, 0, 0); - test(S("abcde"), 4, 0, S("abcde"), 1, 1, -1); - test(S("abcde"), 4, 0, S("abcde"), 1, 2, -2); - test(S("abcde"), 4, 0, S("abcde"), 1, 3, -3); - test(S("abcde"), 4, 0, S("abcde"), 1, 4, -4); - test(S("abcde"), 4, 0, S("abcde"), 1, 5, -4); - test(S("abcde"), 4, 0, S("abcde"), 2, 0, 0); - test(S("abcde"), 4, 0, S("abcde"), 2, 1, -1); - test(S("abcde"), 4, 0, S("abcde"), 2, 2, -2); - test(S("abcde"), 4, 0, S("abcde"), 2, 3, -3); - test(S("abcde"), 4, 0, S("abcde"), 2, 4, -3); -} - -template <class S> -void test15() -{ - test(S("abcde"), 4, 0, S("abcde"), 4, 0, 0); - test(S("abcde"), 4, 0, S("abcde"), 4, 1, -1); - test(S("abcde"), 4, 0, S("abcde"), 4, 2, -1); - test(S("abcde"), 4, 0, S("abcde"), 5, 0, 0); - test(S("abcde"), 4, 0, S("abcde"), 5, 1, 0); - test(S("abcde"), 4, 0, S("abcde"), 6, 0, 0); - test(S("abcde"), 4, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcde"), 4, 0, S("abcdefghij"), 0, 1, -1); - test(S("abcde"), 4, 0, S("abcdefghij"), 0, 5, -5); - test(S("abcde"), 4, 0, S("abcdefghij"), 0, 9, -9); - test(S("abcde"), 4, 0, S("abcdefghij"), 0, 10, -10); - test(S("abcde"), 4, 0, S("abcdefghij"), 0, 11, -10); - test(S("abcde"), 4, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcde"), 4, 0, S("abcdefghij"), 1, 1, -1); - test(S("abcde"), 4, 0, S("abcdefghij"), 1, 4, -4); - test(S("abcde"), 4, 0, S("abcdefghij"), 1, 8, -8); - test(S("abcde"), 4, 0, S("abcdefghij"), 1, 9, -9); - test(S("abcde"), 4, 0, S("abcdefghij"), 1, 10, -9); - test(S("abcde"), 4, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcde"), 4, 0, S("abcdefghij"), 5, 1, -1); - test(S("abcde"), 4, 0, S("abcdefghij"), 5, 2, -2); - test(S("abcde"), 4, 0, S("abcdefghij"), 5, 4, -4); - test(S("abcde"), 4, 0, S("abcdefghij"), 5, 5, -5); - test(S("abcde"), 4, 0, S("abcdefghij"), 5, 6, -5); - test(S("abcde"), 4, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcde"), 4, 0, S("abcdefghij"), 9, 1, -1); - test(S("abcde"), 4, 0, S("abcdefghij"), 9, 2, -1); - test(S("abcde"), 4, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcde"), 4, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcde"), 4, 0, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 4, 1, S(""), 0, 0, 1); - test(S("abcde"), 4, 1, S(""), 0, 1, 1); - test(S("abcde"), 4, 1, S(""), 1, 0, 0); - test(S("abcde"), 4, 1, S("abcde"), 0, 0, 1); - test(S("abcde"), 4, 1, S("abcde"), 0, 1, 4); - test(S("abcde"), 4, 1, S("abcde"), 0, 2, 4); - test(S("abcde"), 4, 1, S("abcde"), 0, 4, 4); - test(S("abcde"), 4, 1, S("abcde"), 0, 5, 4); - test(S("abcde"), 4, 1, S("abcde"), 0, 6, 4); - test(S("abcde"), 4, 1, S("abcde"), 1, 0, 1); - test(S("abcde"), 4, 1, S("abcde"), 1, 1, 3); - test(S("abcde"), 4, 1, S("abcde"), 1, 2, 3); - test(S("abcde"), 4, 1, S("abcde"), 1, 3, 3); - test(S("abcde"), 4, 1, S("abcde"), 1, 4, 3); - test(S("abcde"), 4, 1, S("abcde"), 1, 5, 3); - test(S("abcde"), 4, 1, S("abcde"), 2, 0, 1); - test(S("abcde"), 4, 1, S("abcde"), 2, 1, 2); - test(S("abcde"), 4, 1, S("abcde"), 2, 2, 2); - test(S("abcde"), 4, 1, S("abcde"), 2, 3, 2); - test(S("abcde"), 4, 1, S("abcde"), 2, 4, 2); - test(S("abcde"), 4, 1, S("abcde"), 4, 0, 1); - test(S("abcde"), 4, 1, S("abcde"), 4, 1, 0); - test(S("abcde"), 4, 1, S("abcde"), 4, 2, 0); - test(S("abcde"), 4, 1, S("abcde"), 5, 0, 1); - test(S("abcde"), 4, 1, S("abcde"), 5, 1, 1); - test(S("abcde"), 4, 1, S("abcde"), 6, 0, 0); - test(S("abcde"), 4, 1, S("abcdefghij"), 0, 0, 1); - test(S("abcde"), 4, 1, S("abcdefghij"), 0, 1, 4); - test(S("abcde"), 4, 1, S("abcdefghij"), 0, 5, 4); - test(S("abcde"), 4, 1, S("abcdefghij"), 0, 9, 4); - test(S("abcde"), 4, 1, S("abcdefghij"), 0, 10, 4); - test(S("abcde"), 4, 1, S("abcdefghij"), 0, 11, 4); - test(S("abcde"), 4, 1, S("abcdefghij"), 1, 0, 1); - test(S("abcde"), 4, 1, S("abcdefghij"), 1, 1, 3); - test(S("abcde"), 4, 1, S("abcdefghij"), 1, 4, 3); - test(S("abcde"), 4, 1, S("abcdefghij"), 1, 8, 3); - test(S("abcde"), 4, 1, S("abcdefghij"), 1, 9, 3); - test(S("abcde"), 4, 1, S("abcdefghij"), 1, 10, 3); - test(S("abcde"), 4, 1, S("abcdefghij"), 5, 0, 1); - test(S("abcde"), 4, 1, S("abcdefghij"), 5, 1, -1); - test(S("abcde"), 4, 1, S("abcdefghij"), 5, 2, -1); - test(S("abcde"), 4, 1, S("abcdefghij"), 5, 4, -1); - test(S("abcde"), 4, 1, S("abcdefghij"), 5, 5, -1); - test(S("abcde"), 4, 1, S("abcdefghij"), 5, 6, -1); - test(S("abcde"), 4, 1, S("abcdefghij"), 9, 0, 1); - test(S("abcde"), 4, 1, S("abcdefghij"), 9, 1, -5); -} - -template <class S> -void test16() -{ - test(S("abcde"), 4, 1, S("abcdefghij"), 9, 2, -5); - test(S("abcde"), 4, 1, S("abcdefghij"), 10, 0, 1); - test(S("abcde"), 4, 1, S("abcdefghij"), 10, 1, 1); - test(S("abcde"), 4, 1, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 0, 1, 4); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 0, 10, 4); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 0, 19, 4); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 0, 20, 4); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 0, 21, 4); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 1, 1, 3); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 1, 9, 3); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 1, 18, 3); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 1, 19, 3); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 1, 20, 3); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 10, 1, -6); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 10, 5, -6); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 10, 9, -6); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 10, 10, -6); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 10, 11, -6); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 19, 1, -15); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 19, 2, -15); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 4, 2, S(""), 0, 0, 1); - test(S("abcde"), 4, 2, S(""), 0, 1, 1); - test(S("abcde"), 4, 2, S(""), 1, 0, 0); - test(S("abcde"), 4, 2, S("abcde"), 0, 0, 1); - test(S("abcde"), 4, 2, S("abcde"), 0, 1, 4); - test(S("abcde"), 4, 2, S("abcde"), 0, 2, 4); - test(S("abcde"), 4, 2, S("abcde"), 0, 4, 4); - test(S("abcde"), 4, 2, S("abcde"), 0, 5, 4); - test(S("abcde"), 4, 2, S("abcde"), 0, 6, 4); - test(S("abcde"), 4, 2, S("abcde"), 1, 0, 1); - test(S("abcde"), 4, 2, S("abcde"), 1, 1, 3); - test(S("abcde"), 4, 2, S("abcde"), 1, 2, 3); - test(S("abcde"), 4, 2, S("abcde"), 1, 3, 3); - test(S("abcde"), 4, 2, S("abcde"), 1, 4, 3); - test(S("abcde"), 4, 2, S("abcde"), 1, 5, 3); - test(S("abcde"), 4, 2, S("abcde"), 2, 0, 1); - test(S("abcde"), 4, 2, S("abcde"), 2, 1, 2); - test(S("abcde"), 4, 2, S("abcde"), 2, 2, 2); - test(S("abcde"), 4, 2, S("abcde"), 2, 3, 2); - test(S("abcde"), 4, 2, S("abcde"), 2, 4, 2); - test(S("abcde"), 4, 2, S("abcde"), 4, 0, 1); - test(S("abcde"), 4, 2, S("abcde"), 4, 1, 0); - test(S("abcde"), 4, 2, S("abcde"), 4, 2, 0); - test(S("abcde"), 4, 2, S("abcde"), 5, 0, 1); - test(S("abcde"), 4, 2, S("abcde"), 5, 1, 1); - test(S("abcde"), 4, 2, S("abcde"), 6, 0, 0); - test(S("abcde"), 4, 2, S("abcdefghij"), 0, 0, 1); - test(S("abcde"), 4, 2, S("abcdefghij"), 0, 1, 4); - test(S("abcde"), 4, 2, S("abcdefghij"), 0, 5, 4); - test(S("abcde"), 4, 2, S("abcdefghij"), 0, 9, 4); - test(S("abcde"), 4, 2, S("abcdefghij"), 0, 10, 4); - test(S("abcde"), 4, 2, S("abcdefghij"), 0, 11, 4); - test(S("abcde"), 4, 2, S("abcdefghij"), 1, 0, 1); - test(S("abcde"), 4, 2, S("abcdefghij"), 1, 1, 3); - test(S("abcde"), 4, 2, S("abcdefghij"), 1, 4, 3); - test(S("abcde"), 4, 2, S("abcdefghij"), 1, 8, 3); - test(S("abcde"), 4, 2, S("abcdefghij"), 1, 9, 3); - test(S("abcde"), 4, 2, S("abcdefghij"), 1, 10, 3); - test(S("abcde"), 4, 2, S("abcdefghij"), 5, 0, 1); - test(S("abcde"), 4, 2, S("abcdefghij"), 5, 1, -1); - test(S("abcde"), 4, 2, S("abcdefghij"), 5, 2, -1); - test(S("abcde"), 4, 2, S("abcdefghij"), 5, 4, -1); - test(S("abcde"), 4, 2, S("abcdefghij"), 5, 5, -1); - test(S("abcde"), 4, 2, S("abcdefghij"), 5, 6, -1); - test(S("abcde"), 4, 2, S("abcdefghij"), 9, 0, 1); - test(S("abcde"), 4, 2, S("abcdefghij"), 9, 1, -5); - test(S("abcde"), 4, 2, S("abcdefghij"), 9, 2, -5); - test(S("abcde"), 4, 2, S("abcdefghij"), 10, 0, 1); - test(S("abcde"), 4, 2, S("abcdefghij"), 10, 1, 1); - test(S("abcde"), 4, 2, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 0, 1, 4); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 0, 10, 4); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 0, 19, 4); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 0, 20, 4); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 0, 21, 4); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 1, 1, 3); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 1, 9, 3); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 1, 18, 3); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 1, 19, 3); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 1, 20, 3); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 10, 1, -6); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 10, 5, -6); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 10, 9, -6); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 10, 10, -6); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 10, 11, -6); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 19, 1, -15); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 19, 2, -15); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 20, 0, 1); -} - -template <class S> -void test17() -{ - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 5, 0, S(""), 0, 0, 0); - test(S("abcde"), 5, 0, S(""), 0, 1, 0); - test(S("abcde"), 5, 0, S(""), 1, 0, 0); - test(S("abcde"), 5, 0, S("abcde"), 0, 0, 0); - test(S("abcde"), 5, 0, S("abcde"), 0, 1, -1); - test(S("abcde"), 5, 0, S("abcde"), 0, 2, -2); - test(S("abcde"), 5, 0, S("abcde"), 0, 4, -4); - test(S("abcde"), 5, 0, S("abcde"), 0, 5, -5); - test(S("abcde"), 5, 0, S("abcde"), 0, 6, -5); - test(S("abcde"), 5, 0, S("abcde"), 1, 0, 0); - test(S("abcde"), 5, 0, S("abcde"), 1, 1, -1); - test(S("abcde"), 5, 0, S("abcde"), 1, 2, -2); - test(S("abcde"), 5, 0, S("abcde"), 1, 3, -3); - test(S("abcde"), 5, 0, S("abcde"), 1, 4, -4); - test(S("abcde"), 5, 0, S("abcde"), 1, 5, -4); - test(S("abcde"), 5, 0, S("abcde"), 2, 0, 0); - test(S("abcde"), 5, 0, S("abcde"), 2, 1, -1); - test(S("abcde"), 5, 0, S("abcde"), 2, 2, -2); - test(S("abcde"), 5, 0, S("abcde"), 2, 3, -3); - test(S("abcde"), 5, 0, S("abcde"), 2, 4, -3); - test(S("abcde"), 5, 0, S("abcde"), 4, 0, 0); - test(S("abcde"), 5, 0, S("abcde"), 4, 1, -1); - test(S("abcde"), 5, 0, S("abcde"), 4, 2, -1); - test(S("abcde"), 5, 0, S("abcde"), 5, 0, 0); - test(S("abcde"), 5, 0, S("abcde"), 5, 1, 0); - test(S("abcde"), 5, 0, S("abcde"), 6, 0, 0); - test(S("abcde"), 5, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcde"), 5, 0, S("abcdefghij"), 0, 1, -1); - test(S("abcde"), 5, 0, S("abcdefghij"), 0, 5, -5); - test(S("abcde"), 5, 0, S("abcdefghij"), 0, 9, -9); - test(S("abcde"), 5, 0, S("abcdefghij"), 0, 10, -10); - test(S("abcde"), 5, 0, S("abcdefghij"), 0, 11, -10); - test(S("abcde"), 5, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcde"), 5, 0, S("abcdefghij"), 1, 1, -1); - test(S("abcde"), 5, 0, S("abcdefghij"), 1, 4, -4); - test(S("abcde"), 5, 0, S("abcdefghij"), 1, 8, -8); - test(S("abcde"), 5, 0, S("abcdefghij"), 1, 9, -9); - test(S("abcde"), 5, 0, S("abcdefghij"), 1, 10, -9); - test(S("abcde"), 5, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcde"), 5, 0, S("abcdefghij"), 5, 1, -1); - test(S("abcde"), 5, 0, S("abcdefghij"), 5, 2, -2); - test(S("abcde"), 5, 0, S("abcdefghij"), 5, 4, -4); - test(S("abcde"), 5, 0, S("abcdefghij"), 5, 5, -5); - test(S("abcde"), 5, 0, S("abcdefghij"), 5, 6, -5); - test(S("abcde"), 5, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcde"), 5, 0, S("abcdefghij"), 9, 1, -1); - test(S("abcde"), 5, 0, S("abcdefghij"), 9, 2, -1); - test(S("abcde"), 5, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcde"), 5, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcde"), 5, 0, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 5, 1, S(""), 0, 0, 0); - test(S("abcde"), 5, 1, S(""), 0, 1, 0); - test(S("abcde"), 5, 1, S(""), 1, 0, 0); - test(S("abcde"), 5, 1, S("abcde"), 0, 0, 0); - test(S("abcde"), 5, 1, S("abcde"), 0, 1, -1); - test(S("abcde"), 5, 1, S("abcde"), 0, 2, -2); - test(S("abcde"), 5, 1, S("abcde"), 0, 4, -4); - test(S("abcde"), 5, 1, S("abcde"), 0, 5, -5); - test(S("abcde"), 5, 1, S("abcde"), 0, 6, -5); - test(S("abcde"), 5, 1, S("abcde"), 1, 0, 0); - test(S("abcde"), 5, 1, S("abcde"), 1, 1, -1); - test(S("abcde"), 5, 1, S("abcde"), 1, 2, -2); - test(S("abcde"), 5, 1, S("abcde"), 1, 3, -3); - test(S("abcde"), 5, 1, S("abcde"), 1, 4, -4); - test(S("abcde"), 5, 1, S("abcde"), 1, 5, -4); - test(S("abcde"), 5, 1, S("abcde"), 2, 0, 0); - test(S("abcde"), 5, 1, S("abcde"), 2, 1, -1); - test(S("abcde"), 5, 1, S("abcde"), 2, 2, -2); - test(S("abcde"), 5, 1, S("abcde"), 2, 3, -3); - test(S("abcde"), 5, 1, S("abcde"), 2, 4, -3); - test(S("abcde"), 5, 1, S("abcde"), 4, 0, 0); - test(S("abcde"), 5, 1, S("abcde"), 4, 1, -1); - test(S("abcde"), 5, 1, S("abcde"), 4, 2, -1); - test(S("abcde"), 5, 1, S("abcde"), 5, 0, 0); -} - -template <class S> -void test18() -{ - test(S("abcde"), 5, 1, S("abcde"), 5, 1, 0); - test(S("abcde"), 5, 1, S("abcde"), 6, 0, 0); - test(S("abcde"), 5, 1, S("abcdefghij"), 0, 0, 0); - test(S("abcde"), 5, 1, S("abcdefghij"), 0, 1, -1); - test(S("abcde"), 5, 1, S("abcdefghij"), 0, 5, -5); - test(S("abcde"), 5, 1, S("abcdefghij"), 0, 9, -9); - test(S("abcde"), 5, 1, S("abcdefghij"), 0, 10, -10); - test(S("abcde"), 5, 1, S("abcdefghij"), 0, 11, -10); - test(S("abcde"), 5, 1, S("abcdefghij"), 1, 0, 0); - test(S("abcde"), 5, 1, S("abcdefghij"), 1, 1, -1); - test(S("abcde"), 5, 1, S("abcdefghij"), 1, 4, -4); - test(S("abcde"), 5, 1, S("abcdefghij"), 1, 8, -8); - test(S("abcde"), 5, 1, S("abcdefghij"), 1, 9, -9); - test(S("abcde"), 5, 1, S("abcdefghij"), 1, 10, -9); - test(S("abcde"), 5, 1, S("abcdefghij"), 5, 0, 0); - test(S("abcde"), 5, 1, S("abcdefghij"), 5, 1, -1); - test(S("abcde"), 5, 1, S("abcdefghij"), 5, 2, -2); - test(S("abcde"), 5, 1, S("abcdefghij"), 5, 4, -4); - test(S("abcde"), 5, 1, S("abcdefghij"), 5, 5, -5); - test(S("abcde"), 5, 1, S("abcdefghij"), 5, 6, -5); - test(S("abcde"), 5, 1, S("abcdefghij"), 9, 0, 0); - test(S("abcde"), 5, 1, S("abcdefghij"), 9, 1, -1); - test(S("abcde"), 5, 1, S("abcdefghij"), 9, 2, -1); - test(S("abcde"), 5, 1, S("abcdefghij"), 10, 0, 0); - test(S("abcde"), 5, 1, S("abcdefghij"), 10, 1, 0); - test(S("abcde"), 5, 1, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 6, 0, S(""), 0, 0, 0); - test(S("abcde"), 6, 0, S(""), 0, 1, 0); - test(S("abcde"), 6, 0, S(""), 1, 0, 0); - test(S("abcde"), 6, 0, S("abcde"), 0, 0, 0); - test(S("abcde"), 6, 0, S("abcde"), 0, 1, 0); - test(S("abcde"), 6, 0, S("abcde"), 0, 2, 0); - test(S("abcde"), 6, 0, S("abcde"), 0, 4, 0); - test(S("abcde"), 6, 0, S("abcde"), 0, 5, 0); - test(S("abcde"), 6, 0, S("abcde"), 0, 6, 0); - test(S("abcde"), 6, 0, S("abcde"), 1, 0, 0); - test(S("abcde"), 6, 0, S("abcde"), 1, 1, 0); - test(S("abcde"), 6, 0, S("abcde"), 1, 2, 0); - test(S("abcde"), 6, 0, S("abcde"), 1, 3, 0); - test(S("abcde"), 6, 0, S("abcde"), 1, 4, 0); - test(S("abcde"), 6, 0, S("abcde"), 1, 5, 0); - test(S("abcde"), 6, 0, S("abcde"), 2, 0, 0); - test(S("abcde"), 6, 0, S("abcde"), 2, 1, 0); - test(S("abcde"), 6, 0, S("abcde"), 2, 2, 0); - test(S("abcde"), 6, 0, S("abcde"), 2, 3, 0); - test(S("abcde"), 6, 0, S("abcde"), 2, 4, 0); - test(S("abcde"), 6, 0, S("abcde"), 4, 0, 0); - test(S("abcde"), 6, 0, S("abcde"), 4, 1, 0); - test(S("abcde"), 6, 0, S("abcde"), 4, 2, 0); - test(S("abcde"), 6, 0, S("abcde"), 5, 0, 0); - test(S("abcde"), 6, 0, S("abcde"), 5, 1, 0); - test(S("abcde"), 6, 0, S("abcde"), 6, 0, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 0, 1, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 0, 5, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 0, 9, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 0, 10, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 0, 11, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 1, 1, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 1, 4, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 1, 8, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 1, 9, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 1, 10, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 5, 1, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 5, 2, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 5, 4, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 5, 5, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 5, 6, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 9, 1, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 9, 2, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 11, 0, 0); -} - -template <class S> -void test19() -{ - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 0, 1, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 0, 10, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 0, 19, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 0, 20, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 0, 21, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 1, 1, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 1, 9, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 1, 18, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 1, 19, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 1, 20, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 10, 1, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 10, 5, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 10, 9, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 10, 10, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 10, 11, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 19, 1, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 19, 2, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 0, 0, S(""), 0, 0, 0); - test(S("abcdefghij"), 0, 0, S(""), 0, 1, 0); - test(S("abcdefghij"), 0, 0, S(""), 1, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcde"), 0, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcde"), 0, 1, -1); - test(S("abcdefghij"), 0, 0, S("abcde"), 0, 2, -2); - test(S("abcdefghij"), 0, 0, S("abcde"), 0, 4, -4); - test(S("abcdefghij"), 0, 0, S("abcde"), 0, 5, -5); - test(S("abcdefghij"), 0, 0, S("abcde"), 0, 6, -5); - test(S("abcdefghij"), 0, 0, S("abcde"), 1, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcde"), 1, 1, -1); - test(S("abcdefghij"), 0, 0, S("abcde"), 1, 2, -2); - test(S("abcdefghij"), 0, 0, S("abcde"), 1, 3, -3); - test(S("abcdefghij"), 0, 0, S("abcde"), 1, 4, -4); - test(S("abcdefghij"), 0, 0, S("abcde"), 1, 5, -4); - test(S("abcdefghij"), 0, 0, S("abcde"), 2, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcde"), 2, 1, -1); - test(S("abcdefghij"), 0, 0, S("abcde"), 2, 2, -2); - test(S("abcdefghij"), 0, 0, S("abcde"), 2, 3, -3); - test(S("abcdefghij"), 0, 0, S("abcde"), 2, 4, -3); - test(S("abcdefghij"), 0, 0, S("abcde"), 4, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcde"), 4, 1, -1); - test(S("abcdefghij"), 0, 0, S("abcde"), 4, 2, -1); - test(S("abcdefghij"), 0, 0, S("abcde"), 5, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcde"), 5, 1, 0); - test(S("abcdefghij"), 0, 0, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 0, 1, -1); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 0, 5, -5); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 0, 9, -9); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 0, 10, -10); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 0, 11, -10); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 1, 4, -4); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 1, 8, -8); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 1, 9, -9); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 1, 10, -9); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 5, 1, -1); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 5, 2, -2); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 9, 1, -1); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 9, 2, -1); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 0, 1, S(""), 0, 0, 1); - test(S("abcdefghij"), 0, 1, S(""), 0, 1, 1); -} - -template <class S> -void test20() -{ - test(S("abcdefghij"), 0, 1, S(""), 1, 0, 0); - test(S("abcdefghij"), 0, 1, S("abcde"), 0, 0, 1); - test(S("abcdefghij"), 0, 1, S("abcde"), 0, 1, 0); - test(S("abcdefghij"), 0, 1, S("abcde"), 0, 2, -1); - test(S("abcdefghij"), 0, 1, S("abcde"), 0, 4, -3); - test(S("abcdefghij"), 0, 1, S("abcde"), 0, 5, -4); - test(S("abcdefghij"), 0, 1, S("abcde"), 0, 6, -4); - test(S("abcdefghij"), 0, 1, S("abcde"), 1, 0, 1); - test(S("abcdefghij"), 0, 1, S("abcde"), 1, 1, -1); - test(S("abcdefghij"), 0, 1, S("abcde"), 1, 2, -1); - test(S("abcdefghij"), 0, 1, S("abcde"), 1, 3, -1); - test(S("abcdefghij"), 0, 1, S("abcde"), 1, 4, -1); - test(S("abcdefghij"), 0, 1, S("abcde"), 1, 5, -1); - test(S("abcdefghij"), 0, 1, S("abcde"), 2, 0, 1); - test(S("abcdefghij"), 0, 1, S("abcde"), 2, 1, -2); - test(S("abcdefghij"), 0, 1, S("abcde"), 2, 2, -2); - test(S("abcdefghij"), 0, 1, S("abcde"), 2, 3, -2); - test(S("abcdefghij"), 0, 1, S("abcde"), 2, 4, -2); - test(S("abcdefghij"), 0, 1, S("abcde"), 4, 0, 1); - test(S("abcdefghij"), 0, 1, S("abcde"), 4, 1, -4); - test(S("abcdefghij"), 0, 1, S("abcde"), 4, 2, -4); - test(S("abcdefghij"), 0, 1, S("abcde"), 5, 0, 1); - test(S("abcdefghij"), 0, 1, S("abcde"), 5, 1, 1); - test(S("abcdefghij"), 0, 1, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 0, 0, 1); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 0, 1, 0); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 0, 5, -4); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 0, 9, -8); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 0, 10, -9); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 0, 11, -9); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 1, 0, 1); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 1, 4, -1); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 1, 8, -1); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 1, 9, -1); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 1, 10, -1); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 5, 0, 1); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 5, 1, -5); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 5, 2, -5); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 5, 4, -5); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 9, 0, 1); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 9, 1, -9); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 9, 2, -9); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 10, 0, 1); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 10, 1, 1); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 0, 1, 0); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 0, 10, -9); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 0, 19, -18); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 0, 20, -19); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 0, 21, -19); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 0, 5, S(""), 0, 0, 5); - test(S("abcdefghij"), 0, 5, S(""), 0, 1, 5); - test(S("abcdefghij"), 0, 5, S(""), 1, 0, 0); - test(S("abcdefghij"), 0, 5, S("abcde"), 0, 0, 5); - test(S("abcdefghij"), 0, 5, S("abcde"), 0, 1, 4); - test(S("abcdefghij"), 0, 5, S("abcde"), 0, 2, 3); - test(S("abcdefghij"), 0, 5, S("abcde"), 0, 4, 1); - test(S("abcdefghij"), 0, 5, S("abcde"), 0, 5, 0); - test(S("abcdefghij"), 0, 5, S("abcde"), 0, 6, 0); - test(S("abcdefghij"), 0, 5, S("abcde"), 1, 0, 5); - test(S("abcdefghij"), 0, 5, S("abcde"), 1, 1, -1); - test(S("abcdefghij"), 0, 5, S("abcde"), 1, 2, -1); - test(S("abcdefghij"), 0, 5, S("abcde"), 1, 3, -1); - test(S("abcdefghij"), 0, 5, S("abcde"), 1, 4, -1); - test(S("abcdefghij"), 0, 5, S("abcde"), 1, 5, -1); - test(S("abcdefghij"), 0, 5, S("abcde"), 2, 0, 5); - test(S("abcdefghij"), 0, 5, S("abcde"), 2, 1, -2); - test(S("abcdefghij"), 0, 5, S("abcde"), 2, 2, -2); - test(S("abcdefghij"), 0, 5, S("abcde"), 2, 3, -2); - test(S("abcdefghij"), 0, 5, S("abcde"), 2, 4, -2); - test(S("abcdefghij"), 0, 5, S("abcde"), 4, 0, 5); - test(S("abcdefghij"), 0, 5, S("abcde"), 4, 1, -4); - test(S("abcdefghij"), 0, 5, S("abcde"), 4, 2, -4); - test(S("abcdefghij"), 0, 5, S("abcde"), 5, 0, 5); - test(S("abcdefghij"), 0, 5, S("abcde"), 5, 1, 5); - test(S("abcdefghij"), 0, 5, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 0, 0, 5); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 0, 1, 4); -} - -template <class S> -void test21() -{ - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 0, 5, 0); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 0, 9, -4); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 0, 10, -5); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 0, 11, -5); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 1, 0, 5); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 1, 4, -1); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 1, 8, -1); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 1, 9, -1); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 1, 10, -1); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 5, 0, 5); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 5, 1, -5); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 5, 2, -5); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 5, 4, -5); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 9, 0, 5); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 9, 1, -9); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 9, 2, -9); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 10, 0, 5); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 10, 1, 5); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 0, 0, 5); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 0, 1, 4); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 0, 10, -5); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 0, 19, -14); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 0, 20, -15); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 0, 21, -15); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 1, 0, 5); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 10, 0, 5); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 19, 0, 5); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 20, 0, 5); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 20, 1, 5); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 0, 9, S(""), 0, 0, 9); - test(S("abcdefghij"), 0, 9, S(""), 0, 1, 9); - test(S("abcdefghij"), 0, 9, S(""), 1, 0, 0); - test(S("abcdefghij"), 0, 9, S("abcde"), 0, 0, 9); - test(S("abcdefghij"), 0, 9, S("abcde"), 0, 1, 8); - test(S("abcdefghij"), 0, 9, S("abcde"), 0, 2, 7); - test(S("abcdefghij"), 0, 9, S("abcde"), 0, 4, 5); - test(S("abcdefghij"), 0, 9, S("abcde"), 0, 5, 4); - test(S("abcdefghij"), 0, 9, S("abcde"), 0, 6, 4); - test(S("abcdefghij"), 0, 9, S("abcde"), 1, 0, 9); - test(S("abcdefghij"), 0, 9, S("abcde"), 1, 1, -1); - test(S("abcdefghij"), 0, 9, S("abcde"), 1, 2, -1); - test(S("abcdefghij"), 0, 9, S("abcde"), 1, 3, -1); - test(S("abcdefghij"), 0, 9, S("abcde"), 1, 4, -1); - test(S("abcdefghij"), 0, 9, S("abcde"), 1, 5, -1); - test(S("abcdefghij"), 0, 9, S("abcde"), 2, 0, 9); - test(S("abcdefghij"), 0, 9, S("abcde"), 2, 1, -2); - test(S("abcdefghij"), 0, 9, S("abcde"), 2, 2, -2); - test(S("abcdefghij"), 0, 9, S("abcde"), 2, 3, -2); - test(S("abcdefghij"), 0, 9, S("abcde"), 2, 4, -2); - test(S("abcdefghij"), 0, 9, S("abcde"), 4, 0, 9); - test(S("abcdefghij"), 0, 9, S("abcde"), 4, 1, -4); - test(S("abcdefghij"), 0, 9, S("abcde"), 4, 2, -4); - test(S("abcdefghij"), 0, 9, S("abcde"), 5, 0, 9); - test(S("abcdefghij"), 0, 9, S("abcde"), 5, 1, 9); - test(S("abcdefghij"), 0, 9, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 0, 0, 9); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 0, 1, 8); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 0, 5, 4); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 0, 9, 0); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 0, 10, -1); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 0, 11, -1); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 1, 0, 9); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 1, 4, -1); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 1, 8, -1); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 1, 9, -1); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 1, 10, -1); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 5, 0, 9); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 5, 1, -5); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 5, 2, -5); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 5, 4, -5); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 9, 0, 9); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 9, 1, -9); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 9, 2, -9); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 10, 0, 9); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 10, 1, 9); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 0, 0, 9); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 0, 1, 8); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 0, 10, -1); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 0, 19, -10); -} - -template <class S> -void test22() -{ - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 0, 20, -11); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 0, 21, -11); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 1, 0, 9); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 10, 0, 9); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 19, 0, 9); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 20, 0, 9); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 20, 1, 9); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 0, 10, S(""), 0, 0, 10); - test(S("abcdefghij"), 0, 10, S(""), 0, 1, 10); - test(S("abcdefghij"), 0, 10, S(""), 1, 0, 0); - test(S("abcdefghij"), 0, 10, S("abcde"), 0, 0, 10); - test(S("abcdefghij"), 0, 10, S("abcde"), 0, 1, 9); - test(S("abcdefghij"), 0, 10, S("abcde"), 0, 2, 8); - test(S("abcdefghij"), 0, 10, S("abcde"), 0, 4, 6); - test(S("abcdefghij"), 0, 10, S("abcde"), 0, 5, 5); - test(S("abcdefghij"), 0, 10, S("abcde"), 0, 6, 5); - test(S("abcdefghij"), 0, 10, S("abcde"), 1, 0, 10); - test(S("abcdefghij"), 0, 10, S("abcde"), 1, 1, -1); - test(S("abcdefghij"), 0, 10, S("abcde"), 1, 2, -1); - test(S("abcdefghij"), 0, 10, S("abcde"), 1, 3, -1); - test(S("abcdefghij"), 0, 10, S("abcde"), 1, 4, -1); - test(S("abcdefghij"), 0, 10, S("abcde"), 1, 5, -1); - test(S("abcdefghij"), 0, 10, S("abcde"), 2, 0, 10); - test(S("abcdefghij"), 0, 10, S("abcde"), 2, 1, -2); - test(S("abcdefghij"), 0, 10, S("abcde"), 2, 2, -2); - test(S("abcdefghij"), 0, 10, S("abcde"), 2, 3, -2); - test(S("abcdefghij"), 0, 10, S("abcde"), 2, 4, -2); - test(S("abcdefghij"), 0, 10, S("abcde"), 4, 0, 10); - test(S("abcdefghij"), 0, 10, S("abcde"), 4, 1, -4); - test(S("abcdefghij"), 0, 10, S("abcde"), 4, 2, -4); - test(S("abcdefghij"), 0, 10, S("abcde"), 5, 0, 10); - test(S("abcdefghij"), 0, 10, S("abcde"), 5, 1, 10); - test(S("abcdefghij"), 0, 10, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 0, 0, 10); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 0, 1, 9); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 0, 5, 5); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 0, 9, 1); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 0, 10, 0); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 0, 11, 0); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 1, 0, 10); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 1, 4, -1); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 1, 8, -1); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 1, 9, -1); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 1, 10, -1); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 5, 0, 10); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 5, 1, -5); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 5, 2, -5); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 5, 4, -5); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 9, 0, 10); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 9, 1, -9); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 9, 2, -9); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 10, 0, 10); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 10, 1, 10); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 0, 0, 10); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 0, 1, 9); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 0, 10, 0); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 0, 19, -9); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 0, 20, -10); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 0, 21, -10); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 1, 0, 10); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 10, 0, 10); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 19, 0, 10); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 20, 0, 10); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 20, 1, 10); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 0, 11, S(""), 0, 0, 10); - test(S("abcdefghij"), 0, 11, S(""), 0, 1, 10); - test(S("abcdefghij"), 0, 11, S(""), 1, 0, 0); - test(S("abcdefghij"), 0, 11, S("abcde"), 0, 0, 10); - test(S("abcdefghij"), 0, 11, S("abcde"), 0, 1, 9); - test(S("abcdefghij"), 0, 11, S("abcde"), 0, 2, 8); -} - -template <class S> -void test23() -{ - test(S("abcdefghij"), 0, 11, S("abcde"), 0, 4, 6); - test(S("abcdefghij"), 0, 11, S("abcde"), 0, 5, 5); - test(S("abcdefghij"), 0, 11, S("abcde"), 0, 6, 5); - test(S("abcdefghij"), 0, 11, S("abcde"), 1, 0, 10); - test(S("abcdefghij"), 0, 11, S("abcde"), 1, 1, -1); - test(S("abcdefghij"), 0, 11, S("abcde"), 1, 2, -1); - test(S("abcdefghij"), 0, 11, S("abcde"), 1, 3, -1); - test(S("abcdefghij"), 0, 11, S("abcde"), 1, 4, -1); - test(S("abcdefghij"), 0, 11, S("abcde"), 1, 5, -1); - test(S("abcdefghij"), 0, 11, S("abcde"), 2, 0, 10); - test(S("abcdefghij"), 0, 11, S("abcde"), 2, 1, -2); - test(S("abcdefghij"), 0, 11, S("abcde"), 2, 2, -2); - test(S("abcdefghij"), 0, 11, S("abcde"), 2, 3, -2); - test(S("abcdefghij"), 0, 11, S("abcde"), 2, 4, -2); - test(S("abcdefghij"), 0, 11, S("abcde"), 4, 0, 10); - test(S("abcdefghij"), 0, 11, S("abcde"), 4, 1, -4); - test(S("abcdefghij"), 0, 11, S("abcde"), 4, 2, -4); - test(S("abcdefghij"), 0, 11, S("abcde"), 5, 0, 10); - test(S("abcdefghij"), 0, 11, S("abcde"), 5, 1, 10); - test(S("abcdefghij"), 0, 11, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 0, 0, 10); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 0, 1, 9); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 0, 5, 5); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 0, 9, 1); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 0, 10, 0); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 0, 11, 0); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 1, 0, 10); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 1, 4, -1); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 1, 8, -1); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 1, 9, -1); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 1, 10, -1); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 5, 0, 10); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 5, 1, -5); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 5, 2, -5); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 5, 4, -5); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 9, 0, 10); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 9, 1, -9); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 9, 2, -9); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 10, 0, 10); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 10, 1, 10); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 0, 0, 10); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 0, 1, 9); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 0, 10, 0); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 0, 19, -9); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 0, 20, -10); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 0, 21, -10); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 1, 0, 10); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 10, 0, 10); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 19, 0, 10); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 20, 0, 10); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 20, 1, 10); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 1, 0, S(""), 0, 0, 0); - test(S("abcdefghij"), 1, 0, S(""), 0, 1, 0); - test(S("abcdefghij"), 1, 0, S(""), 1, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcde"), 0, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcde"), 0, 1, -1); - test(S("abcdefghij"), 1, 0, S("abcde"), 0, 2, -2); - test(S("abcdefghij"), 1, 0, S("abcde"), 0, 4, -4); - test(S("abcdefghij"), 1, 0, S("abcde"), 0, 5, -5); - test(S("abcdefghij"), 1, 0, S("abcde"), 0, 6, -5); - test(S("abcdefghij"), 1, 0, S("abcde"), 1, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcde"), 1, 1, -1); - test(S("abcdefghij"), 1, 0, S("abcde"), 1, 2, -2); - test(S("abcdefghij"), 1, 0, S("abcde"), 1, 3, -3); - test(S("abcdefghij"), 1, 0, S("abcde"), 1, 4, -4); - test(S("abcdefghij"), 1, 0, S("abcde"), 1, 5, -4); - test(S("abcdefghij"), 1, 0, S("abcde"), 2, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcde"), 2, 1, -1); - test(S("abcdefghij"), 1, 0, S("abcde"), 2, 2, -2); - test(S("abcdefghij"), 1, 0, S("abcde"), 2, 3, -3); - test(S("abcdefghij"), 1, 0, S("abcde"), 2, 4, -3); - test(S("abcdefghij"), 1, 0, S("abcde"), 4, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcde"), 4, 1, -1); - test(S("abcdefghij"), 1, 0, S("abcde"), 4, 2, -1); - test(S("abcdefghij"), 1, 0, S("abcde"), 5, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcde"), 5, 1, 0); - test(S("abcdefghij"), 1, 0, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 0, 1, -1); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 0, 5, -5); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 0, 9, -9); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 0, 10, -10); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 0, 11, -10); -} - -template <class S> -void test24() -{ - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 1, 4, -4); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 1, 8, -8); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 1, 9, -9); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 1, 10, -9); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 5, 1, -1); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 5, 2, -2); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 9, 1, -1); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 9, 2, -1); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 1, 1, S(""), 0, 0, 1); - test(S("abcdefghij"), 1, 1, S(""), 0, 1, 1); - test(S("abcdefghij"), 1, 1, S(""), 1, 0, 0); - test(S("abcdefghij"), 1, 1, S("abcde"), 0, 0, 1); - test(S("abcdefghij"), 1, 1, S("abcde"), 0, 1, 1); - test(S("abcdefghij"), 1, 1, S("abcde"), 0, 2, 1); - test(S("abcdefghij"), 1, 1, S("abcde"), 0, 4, 1); - test(S("abcdefghij"), 1, 1, S("abcde"), 0, 5, 1); - test(S("abcdefghij"), 1, 1, S("abcde"), 0, 6, 1); - test(S("abcdefghij"), 1, 1, S("abcde"), 1, 0, 1); - test(S("abcdefghij"), 1, 1, S("abcde"), 1, 1, 0); - test(S("abcdefghij"), 1, 1, S("abcde"), 1, 2, -1); - test(S("abcdefghij"), 1, 1, S("abcde"), 1, 3, -2); - test(S("abcdefghij"), 1, 1, S("abcde"), 1, 4, -3); - test(S("abcdefghij"), 1, 1, S("abcde"), 1, 5, -3); - test(S("abcdefghij"), 1, 1, S("abcde"), 2, 0, 1); - test(S("abcdefghij"), 1, 1, S("abcde"), 2, 1, -1); - test(S("abcdefghij"), 1, 1, S("abcde"), 2, 2, -1); - test(S("abcdefghij"), 1, 1, S("abcde"), 2, 3, -1); - test(S("abcdefghij"), 1, 1, S("abcde"), 2, 4, -1); - test(S("abcdefghij"), 1, 1, S("abcde"), 4, 0, 1); - test(S("abcdefghij"), 1, 1, S("abcde"), 4, 1, -3); - test(S("abcdefghij"), 1, 1, S("abcde"), 4, 2, -3); - test(S("abcdefghij"), 1, 1, S("abcde"), 5, 0, 1); - test(S("abcdefghij"), 1, 1, S("abcde"), 5, 1, 1); - test(S("abcdefghij"), 1, 1, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 0, 0, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 0, 1, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 0, 5, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 0, 9, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 0, 10, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 0, 11, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 1, 0, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 1, 1, 0); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 1, 4, -3); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 1, 8, -7); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 1, 9, -8); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 1, 10, -8); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 5, 0, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 5, 1, -4); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 5, 2, -4); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 5, 5, -4); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 5, 6, -4); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 9, 0, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 9, 1, -8); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 9, 2, -8); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 10, 0, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 10, 1, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 1, 1, 0); -} - -template <class S> -void test25() -{ - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 1, 9, -8); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 1, 18, -17); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 1, 19, -18); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 1, 20, -18); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 1, 4, S(""), 0, 0, 4); - test(S("abcdefghij"), 1, 4, S(""), 0, 1, 4); - test(S("abcdefghij"), 1, 4, S(""), 1, 0, 0); - test(S("abcdefghij"), 1, 4, S("abcde"), 0, 0, 4); - test(S("abcdefghij"), 1, 4, S("abcde"), 0, 1, 1); - test(S("abcdefghij"), 1, 4, S("abcde"), 0, 2, 1); - test(S("abcdefghij"), 1, 4, S("abcde"), 0, 4, 1); - test(S("abcdefghij"), 1, 4, S("abcde"), 0, 5, 1); - test(S("abcdefghij"), 1, 4, S("abcde"), 0, 6, 1); - test(S("abcdefghij"), 1, 4, S("abcde"), 1, 0, 4); - test(S("abcdefghij"), 1, 4, S("abcde"), 1, 1, 3); - test(S("abcdefghij"), 1, 4, S("abcde"), 1, 2, 2); - test(S("abcdefghij"), 1, 4, S("abcde"), 1, 3, 1); - test(S("abcdefghij"), 1, 4, S("abcde"), 1, 4, 0); - test(S("abcdefghij"), 1, 4, S("abcde"), 1, 5, 0); - test(S("abcdefghij"), 1, 4, S("abcde"), 2, 0, 4); - test(S("abcdefghij"), 1, 4, S("abcde"), 2, 1, -1); - test(S("abcdefghij"), 1, 4, S("abcde"), 2, 2, -1); - test(S("abcdefghij"), 1, 4, S("abcde"), 2, 3, -1); - test(S("abcdefghij"), 1, 4, S("abcde"), 2, 4, -1); - test(S("abcdefghij"), 1, 4, S("abcde"), 4, 0, 4); - test(S("abcdefghij"), 1, 4, S("abcde"), 4, 1, -3); - test(S("abcdefghij"), 1, 4, S("abcde"), 4, 2, -3); - test(S("abcdefghij"), 1, 4, S("abcde"), 5, 0, 4); - test(S("abcdefghij"), 1, 4, S("abcde"), 5, 1, 4); - test(S("abcdefghij"), 1, 4, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 0, 0, 4); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 0, 1, 1); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 0, 5, 1); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 0, 9, 1); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 0, 10, 1); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 0, 11, 1); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 1, 0, 4); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 1, 1, 3); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 1, 4, 0); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 1, 8, -4); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 1, 9, -5); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 1, 10, -5); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 5, 0, 4); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 5, 1, -4); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 5, 2, -4); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 5, 5, -4); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 5, 6, -4); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 9, 0, 4); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 9, 1, -8); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 9, 2, -8); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 10, 0, 4); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 10, 1, 4); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 0, 0, 4); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 1, 0, 4); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 1, 1, 3); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 1, 9, -5); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 1, 18, -14); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 1, 19, -15); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 1, 20, -15); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 10, 0, 4); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 19, 0, 4); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 20, 0, 4); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 20, 1, 4); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 1, 8, S(""), 0, 0, 8); - test(S("abcdefghij"), 1, 8, S(""), 0, 1, 8); - test(S("abcdefghij"), 1, 8, S(""), 1, 0, 0); - test(S("abcdefghij"), 1, 8, S("abcde"), 0, 0, 8); - test(S("abcdefghij"), 1, 8, S("abcde"), 0, 1, 1); - test(S("abcdefghij"), 1, 8, S("abcde"), 0, 2, 1); - test(S("abcdefghij"), 1, 8, S("abcde"), 0, 4, 1); - test(S("abcdefghij"), 1, 8, S("abcde"), 0, 5, 1); - test(S("abcdefghij"), 1, 8, S("abcde"), 0, 6, 1); - test(S("abcdefghij"), 1, 8, S("abcde"), 1, 0, 8); -} - -template <class S> -void test26() -{ - test(S("abcdefghij"), 1, 8, S("abcde"), 1, 1, 7); - test(S("abcdefghij"), 1, 8, S("abcde"), 1, 2, 6); - test(S("abcdefghij"), 1, 8, S("abcde"), 1, 3, 5); - test(S("abcdefghij"), 1, 8, S("abcde"), 1, 4, 4); - test(S("abcdefghij"), 1, 8, S("abcde"), 1, 5, 4); - test(S("abcdefghij"), 1, 8, S("abcde"), 2, 0, 8); - test(S("abcdefghij"), 1, 8, S("abcde"), 2, 1, -1); - test(S("abcdefghij"), 1, 8, S("abcde"), 2, 2, -1); - test(S("abcdefghij"), 1, 8, S("abcde"), 2, 3, -1); - test(S("abcdefghij"), 1, 8, S("abcde"), 2, 4, -1); - test(S("abcdefghij"), 1, 8, S("abcde"), 4, 0, 8); - test(S("abcdefghij"), 1, 8, S("abcde"), 4, 1, -3); - test(S("abcdefghij"), 1, 8, S("abcde"), 4, 2, -3); - test(S("abcdefghij"), 1, 8, S("abcde"), 5, 0, 8); - test(S("abcdefghij"), 1, 8, S("abcde"), 5, 1, 8); - test(S("abcdefghij"), 1, 8, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 0, 0, 8); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 0, 1, 1); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 0, 5, 1); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 0, 9, 1); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 0, 10, 1); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 0, 11, 1); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 1, 0, 8); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 1, 1, 7); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 1, 4, 4); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 1, 8, 0); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 1, 9, -1); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 1, 10, -1); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 5, 0, 8); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 5, 1, -4); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 5, 2, -4); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 5, 5, -4); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 5, 6, -4); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 9, 0, 8); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 9, 1, -8); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 9, 2, -8); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 10, 0, 8); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 10, 1, 8); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 0, 0, 8); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 1, 0, 8); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 1, 1, 7); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 1, 18, -10); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 1, 19, -11); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 1, 20, -11); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 10, 0, 8); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 19, 0, 8); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 20, 0, 8); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 20, 1, 8); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 1, 9, S(""), 0, 0, 9); - test(S("abcdefghij"), 1, 9, S(""), 0, 1, 9); - test(S("abcdefghij"), 1, 9, S(""), 1, 0, 0); - test(S("abcdefghij"), 1, 9, S("abcde"), 0, 0, 9); - test(S("abcdefghij"), 1, 9, S("abcde"), 0, 1, 1); - test(S("abcdefghij"), 1, 9, S("abcde"), 0, 2, 1); - test(S("abcdefghij"), 1, 9, S("abcde"), 0, 4, 1); - test(S("abcdefghij"), 1, 9, S("abcde"), 0, 5, 1); - test(S("abcdefghij"), 1, 9, S("abcde"), 0, 6, 1); - test(S("abcdefghij"), 1, 9, S("abcde"), 1, 0, 9); - test(S("abcdefghij"), 1, 9, S("abcde"), 1, 1, 8); - test(S("abcdefghij"), 1, 9, S("abcde"), 1, 2, 7); - test(S("abcdefghij"), 1, 9, S("abcde"), 1, 3, 6); - test(S("abcdefghij"), 1, 9, S("abcde"), 1, 4, 5); - test(S("abcdefghij"), 1, 9, S("abcde"), 1, 5, 5); - test(S("abcdefghij"), 1, 9, S("abcde"), 2, 0, 9); - test(S("abcdefghij"), 1, 9, S("abcde"), 2, 1, -1); - test(S("abcdefghij"), 1, 9, S("abcde"), 2, 2, -1); - test(S("abcdefghij"), 1, 9, S("abcde"), 2, 3, -1); - test(S("abcdefghij"), 1, 9, S("abcde"), 2, 4, -1); - test(S("abcdefghij"), 1, 9, S("abcde"), 4, 0, 9); - test(S("abcdefghij"), 1, 9, S("abcde"), 4, 1, -3); - test(S("abcdefghij"), 1, 9, S("abcde"), 4, 2, -3); - test(S("abcdefghij"), 1, 9, S("abcde"), 5, 0, 9); - test(S("abcdefghij"), 1, 9, S("abcde"), 5, 1, 9); - test(S("abcdefghij"), 1, 9, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 0, 0, 9); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 0, 1, 1); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 0, 5, 1); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 0, 9, 1); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 0, 10, 1); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 0, 11, 1); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 1, 0, 9); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 1, 1, 8); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 1, 4, 5); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 1, 8, 1); -} - -template <class S> -void test27() -{ - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 1, 9, 0); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 1, 10, 0); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 5, 0, 9); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 5, 1, -4); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 5, 2, -4); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 5, 5, -4); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 5, 6, -4); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 9, 0, 9); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 9, 1, -8); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 9, 2, -8); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 10, 0, 9); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 10, 1, 9); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 0, 0, 9); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 1, 0, 9); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 1, 1, 8); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 1, 9, 0); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 1, 18, -9); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 1, 19, -10); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 1, 20, -10); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 10, 0, 9); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 19, 0, 9); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 20, 0, 9); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 20, 1, 9); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 1, 10, S(""), 0, 0, 9); - test(S("abcdefghij"), 1, 10, S(""), 0, 1, 9); - test(S("abcdefghij"), 1, 10, S(""), 1, 0, 0); - test(S("abcdefghij"), 1, 10, S("abcde"), 0, 0, 9); - test(S("abcdefghij"), 1, 10, S("abcde"), 0, 1, 1); - test(S("abcdefghij"), 1, 10, S("abcde"), 0, 2, 1); - test(S("abcdefghij"), 1, 10, S("abcde"), 0, 4, 1); - test(S("abcdefghij"), 1, 10, S("abcde"), 0, 5, 1); - test(S("abcdefghij"), 1, 10, S("abcde"), 0, 6, 1); - test(S("abcdefghij"), 1, 10, S("abcde"), 1, 0, 9); - test(S("abcdefghij"), 1, 10, S("abcde"), 1, 1, 8); - test(S("abcdefghij"), 1, 10, S("abcde"), 1, 2, 7); - test(S("abcdefghij"), 1, 10, S("abcde"), 1, 3, 6); - test(S("abcdefghij"), 1, 10, S("abcde"), 1, 4, 5); - test(S("abcdefghij"), 1, 10, S("abcde"), 1, 5, 5); - test(S("abcdefghij"), 1, 10, S("abcde"), 2, 0, 9); - test(S("abcdefghij"), 1, 10, S("abcde"), 2, 1, -1); - test(S("abcdefghij"), 1, 10, S("abcde"), 2, 2, -1); - test(S("abcdefghij"), 1, 10, S("abcde"), 2, 3, -1); - test(S("abcdefghij"), 1, 10, S("abcde"), 2, 4, -1); - test(S("abcdefghij"), 1, 10, S("abcde"), 4, 0, 9); - test(S("abcdefghij"), 1, 10, S("abcde"), 4, 1, -3); - test(S("abcdefghij"), 1, 10, S("abcde"), 4, 2, -3); - test(S("abcdefghij"), 1, 10, S("abcde"), 5, 0, 9); - test(S("abcdefghij"), 1, 10, S("abcde"), 5, 1, 9); - test(S("abcdefghij"), 1, 10, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 0, 0, 9); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 0, 1, 1); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 0, 5, 1); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 0, 9, 1); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 0, 10, 1); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 0, 11, 1); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 1, 0, 9); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 1, 1, 8); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 1, 4, 5); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 1, 8, 1); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 1, 9, 0); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 1, 10, 0); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 5, 0, 9); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 5, 1, -4); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 5, 2, -4); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 5, 5, -4); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 5, 6, -4); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 9, 0, 9); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 9, 1, -8); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 9, 2, -8); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 10, 0, 9); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 10, 1, 9); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 0, 0, 9); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 1, 0, 9); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 1, 1, 8); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 1, 9, 0); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 1, 18, -9); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 1, 19, -10); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 1, 20, -10); -} - -template <class S> -void test28() -{ - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 10, 0, 9); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 19, 0, 9); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 20, 0, 9); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 20, 1, 9); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 5, 0, S(""), 0, 0, 0); - test(S("abcdefghij"), 5, 0, S(""), 0, 1, 0); - test(S("abcdefghij"), 5, 0, S(""), 1, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcde"), 0, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcde"), 0, 1, -1); - test(S("abcdefghij"), 5, 0, S("abcde"), 0, 2, -2); - test(S("abcdefghij"), 5, 0, S("abcde"), 0, 4, -4); - test(S("abcdefghij"), 5, 0, S("abcde"), 0, 5, -5); - test(S("abcdefghij"), 5, 0, S("abcde"), 0, 6, -5); - test(S("abcdefghij"), 5, 0, S("abcde"), 1, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcde"), 1, 1, -1); - test(S("abcdefghij"), 5, 0, S("abcde"), 1, 2, -2); - test(S("abcdefghij"), 5, 0, S("abcde"), 1, 3, -3); - test(S("abcdefghij"), 5, 0, S("abcde"), 1, 4, -4); - test(S("abcdefghij"), 5, 0, S("abcde"), 1, 5, -4); - test(S("abcdefghij"), 5, 0, S("abcde"), 2, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcde"), 2, 1, -1); - test(S("abcdefghij"), 5, 0, S("abcde"), 2, 2, -2); - test(S("abcdefghij"), 5, 0, S("abcde"), 2, 3, -3); - test(S("abcdefghij"), 5, 0, S("abcde"), 2, 4, -3); - test(S("abcdefghij"), 5, 0, S("abcde"), 4, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcde"), 4, 1, -1); - test(S("abcdefghij"), 5, 0, S("abcde"), 4, 2, -1); - test(S("abcdefghij"), 5, 0, S("abcde"), 5, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcde"), 5, 1, 0); - test(S("abcdefghij"), 5, 0, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 0, 1, -1); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 0, 5, -5); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 0, 9, -9); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 0, 10, -10); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 0, 11, -10); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 1, 4, -4); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 1, 8, -8); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 1, 9, -9); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 1, 10, -9); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 5, 1, -1); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 5, 2, -2); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 9, 1, -1); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 9, 2, -1); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 5, 1, S(""), 0, 0, 1); - test(S("abcdefghij"), 5, 1, S(""), 0, 1, 1); - test(S("abcdefghij"), 5, 1, S(""), 1, 0, 0); - test(S("abcdefghij"), 5, 1, S("abcde"), 0, 0, 1); - test(S("abcdefghij"), 5, 1, S("abcde"), 0, 1, 5); - test(S("abcdefghij"), 5, 1, S("abcde"), 0, 2, 5); - test(S("abcdefghij"), 5, 1, S("abcde"), 0, 4, 5); - test(S("abcdefghij"), 5, 1, S("abcde"), 0, 5, 5); - test(S("abcdefghij"), 5, 1, S("abcde"), 0, 6, 5); - test(S("abcdefghij"), 5, 1, S("abcde"), 1, 0, 1); - test(S("abcdefghij"), 5, 1, S("abcde"), 1, 1, 4); - test(S("abcdefghij"), 5, 1, S("abcde"), 1, 2, 4); - test(S("abcdefghij"), 5, 1, S("abcde"), 1, 3, 4); - test(S("abcdefghij"), 5, 1, S("abcde"), 1, 4, 4); -} - -template <class S> -void test29() -{ - test(S("abcdefghij"), 5, 1, S("abcde"), 1, 5, 4); - test(S("abcdefghij"), 5, 1, S("abcde"), 2, 0, 1); - test(S("abcdefghij"), 5, 1, S("abcde"), 2, 1, 3); - test(S("abcdefghij"), 5, 1, S("abcde"), 2, 2, 3); - test(S("abcdefghij"), 5, 1, S("abcde"), 2, 3, 3); - test(S("abcdefghij"), 5, 1, S("abcde"), 2, 4, 3); - test(S("abcdefghij"), 5, 1, S("abcde"), 4, 0, 1); - test(S("abcdefghij"), 5, 1, S("abcde"), 4, 1, 1); - test(S("abcdefghij"), 5, 1, S("abcde"), 4, 2, 1); - test(S("abcdefghij"), 5, 1, S("abcde"), 5, 0, 1); - test(S("abcdefghij"), 5, 1, S("abcde"), 5, 1, 1); - test(S("abcdefghij"), 5, 1, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 0, 0, 1); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 0, 1, 5); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 0, 5, 5); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 0, 9, 5); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 0, 10, 5); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 0, 11, 5); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 1, 0, 1); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 1, 1, 4); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 1, 4, 4); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 1, 8, 4); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 1, 9, 4); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 1, 10, 4); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 5, 0, 1); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 5, 1, 0); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 5, 2, -1); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 5, 4, -3); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 5, 5, -4); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 5, 6, -4); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 9, 0, 1); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 9, 1, -4); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 9, 2, -4); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 10, 0, 1); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 10, 1, 1); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 0, 1, 5); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 0, 10, 5); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 0, 19, 5); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 0, 20, 5); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 0, 21, 5); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 1, 1, 4); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 1, 9, 4); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 1, 18, 4); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 1, 19, 4); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 1, 20, 4); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 10, 1, -5); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 10, 9, -5); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 10, 10, -5); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 10, 11, -5); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 19, 1, -14); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 19, 2, -14); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 5, 2, S(""), 0, 0, 2); - test(S("abcdefghij"), 5, 2, S(""), 0, 1, 2); - test(S("abcdefghij"), 5, 2, S(""), 1, 0, 0); - test(S("abcdefghij"), 5, 2, S("abcde"), 0, 0, 2); - test(S("abcdefghij"), 5, 2, S("abcde"), 0, 1, 5); - test(S("abcdefghij"), 5, 2, S("abcde"), 0, 2, 5); - test(S("abcdefghij"), 5, 2, S("abcde"), 0, 4, 5); - test(S("abcdefghij"), 5, 2, S("abcde"), 0, 5, 5); - test(S("abcdefghij"), 5, 2, S("abcde"), 0, 6, 5); - test(S("abcdefghij"), 5, 2, S("abcde"), 1, 0, 2); - test(S("abcdefghij"), 5, 2, S("abcde"), 1, 1, 4); - test(S("abcdefghij"), 5, 2, S("abcde"), 1, 2, 4); - test(S("abcdefghij"), 5, 2, S("abcde"), 1, 3, 4); - test(S("abcdefghij"), 5, 2, S("abcde"), 1, 4, 4); - test(S("abcdefghij"), 5, 2, S("abcde"), 1, 5, 4); - test(S("abcdefghij"), 5, 2, S("abcde"), 2, 0, 2); - test(S("abcdefghij"), 5, 2, S("abcde"), 2, 1, 3); - test(S("abcdefghij"), 5, 2, S("abcde"), 2, 2, 3); - test(S("abcdefghij"), 5, 2, S("abcde"), 2, 3, 3); - test(S("abcdefghij"), 5, 2, S("abcde"), 2, 4, 3); - test(S("abcdefghij"), 5, 2, S("abcde"), 4, 0, 2); - test(S("abcdefghij"), 5, 2, S("abcde"), 4, 1, 1); - test(S("abcdefghij"), 5, 2, S("abcde"), 4, 2, 1); - test(S("abcdefghij"), 5, 2, S("abcde"), 5, 0, 2); - test(S("abcdefghij"), 5, 2, S("abcde"), 5, 1, 2); - test(S("abcdefghij"), 5, 2, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 0, 0, 2); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 0, 1, 5); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 0, 5, 5); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 0, 9, 5); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 0, 10, 5); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 0, 11, 5); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 1, 0, 2); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 1, 1, 4); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 1, 4, 4); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 1, 8, 4); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 1, 9, 4); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 1, 10, 4); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 5, 0, 2); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 5, 1, 1); -} - -template <class S> -void test30() -{ - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 5, 2, 0); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 5, 4, -2); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 5, 5, -3); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 5, 6, -3); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 9, 0, 2); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 9, 1, -4); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 9, 2, -4); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 10, 0, 2); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 10, 1, 2); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 0, 0, 2); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 0, 1, 5); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 0, 10, 5); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 0, 19, 5); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 0, 20, 5); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 0, 21, 5); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 1, 0, 2); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 1, 1, 4); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 1, 9, 4); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 1, 18, 4); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 1, 19, 4); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 1, 20, 4); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 10, 0, 2); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 10, 1, -5); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 10, 9, -5); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 10, 10, -5); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 10, 11, -5); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 19, 0, 2); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 19, 1, -14); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 19, 2, -14); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 20, 0, 2); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 20, 1, 2); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 5, 4, S(""), 0, 0, 4); - test(S("abcdefghij"), 5, 4, S(""), 0, 1, 4); - test(S("abcdefghij"), 5, 4, S(""), 1, 0, 0); - test(S("abcdefghij"), 5, 4, S("abcde"), 0, 0, 4); - test(S("abcdefghij"), 5, 4, S("abcde"), 0, 1, 5); - test(S("abcdefghij"), 5, 4, S("abcde"), 0, 2, 5); - test(S("abcdefghij"), 5, 4, S("abcde"), 0, 4, 5); - test(S("abcdefghij"), 5, 4, S("abcde"), 0, 5, 5); - test(S("abcdefghij"), 5, 4, S("abcde"), 0, 6, 5); - test(S("abcdefghij"), 5, 4, S("abcde"), 1, 0, 4); - test(S("abcdefghij"), 5, 4, S("abcde"), 1, 1, 4); - test(S("abcdefghij"), 5, 4, S("abcde"), 1, 2, 4); - test(S("abcdefghij"), 5, 4, S("abcde"), 1, 3, 4); - test(S("abcdefghij"), 5, 4, S("abcde"), 1, 4, 4); - test(S("abcdefghij"), 5, 4, S("abcde"), 1, 5, 4); - test(S("abcdefghij"), 5, 4, S("abcde"), 2, 0, 4); - test(S("abcdefghij"), 5, 4, S("abcde"), 2, 1, 3); - test(S("abcdefghij"), 5, 4, S("abcde"), 2, 2, 3); - test(S("abcdefghij"), 5, 4, S("abcde"), 2, 3, 3); - test(S("abcdefghij"), 5, 4, S("abcde"), 2, 4, 3); - test(S("abcdefghij"), 5, 4, S("abcde"), 4, 0, 4); - test(S("abcdefghij"), 5, 4, S("abcde"), 4, 1, 1); - test(S("abcdefghij"), 5, 4, S("abcde"), 4, 2, 1); - test(S("abcdefghij"), 5, 4, S("abcde"), 5, 0, 4); - test(S("abcdefghij"), 5, 4, S("abcde"), 5, 1, 4); - test(S("abcdefghij"), 5, 4, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 0, 0, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 0, 1, 5); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 0, 5, 5); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 0, 9, 5); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 0, 10, 5); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 0, 11, 5); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 1, 0, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 1, 1, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 1, 4, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 1, 8, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 1, 9, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 1, 10, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 5, 0, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 5, 1, 3); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 5, 2, 2); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 5, 4, 0); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 5, 5, -1); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 5, 6, -1); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 9, 0, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 9, 1, -4); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 9, 2, -4); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 10, 0, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 10, 1, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 0, 0, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 0, 1, 5); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 0, 10, 5); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 0, 19, 5); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 0, 20, 5); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 0, 21, 5); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 1, 0, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 1, 1, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 1, 9, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 1, 18, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 1, 19, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 1, 20, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 10, 0, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 10, 1, -5); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 10, 9, -5); -} - -template <class S> -void test31() -{ - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 10, 10, -5); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 10, 11, -5); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 19, 0, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 19, 1, -14); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 19, 2, -14); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 20, 0, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 20, 1, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 5, 5, S(""), 0, 0, 5); - test(S("abcdefghij"), 5, 5, S(""), 0, 1, 5); - test(S("abcdefghij"), 5, 5, S(""), 1, 0, 0); - test(S("abcdefghij"), 5, 5, S("abcde"), 0, 0, 5); - test(S("abcdefghij"), 5, 5, S("abcde"), 0, 1, 5); - test(S("abcdefghij"), 5, 5, S("abcde"), 0, 2, 5); - test(S("abcdefghij"), 5, 5, S("abcde"), 0, 4, 5); - test(S("abcdefghij"), 5, 5, S("abcde"), 0, 5, 5); - test(S("abcdefghij"), 5, 5, S("abcde"), 0, 6, 5); - test(S("abcdefghij"), 5, 5, S("abcde"), 1, 0, 5); - test(S("abcdefghij"), 5, 5, S("abcde"), 1, 1, 4); - test(S("abcdefghij"), 5, 5, S("abcde"), 1, 2, 4); - test(S("abcdefghij"), 5, 5, S("abcde"), 1, 3, 4); - test(S("abcdefghij"), 5, 5, S("abcde"), 1, 4, 4); - test(S("abcdefghij"), 5, 5, S("abcde"), 1, 5, 4); - test(S("abcdefghij"), 5, 5, S("abcde"), 2, 0, 5); - test(S("abcdefghij"), 5, 5, S("abcde"), 2, 1, 3); - test(S("abcdefghij"), 5, 5, S("abcde"), 2, 2, 3); - test(S("abcdefghij"), 5, 5, S("abcde"), 2, 3, 3); - test(S("abcdefghij"), 5, 5, S("abcde"), 2, 4, 3); - test(S("abcdefghij"), 5, 5, S("abcde"), 4, 0, 5); - test(S("abcdefghij"), 5, 5, S("abcde"), 4, 1, 1); - test(S("abcdefghij"), 5, 5, S("abcde"), 4, 2, 1); - test(S("abcdefghij"), 5, 5, S("abcde"), 5, 0, 5); - test(S("abcdefghij"), 5, 5, S("abcde"), 5, 1, 5); - test(S("abcdefghij"), 5, 5, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 0, 0, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 0, 1, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 0, 5, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 0, 9, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 0, 10, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 0, 11, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 1, 0, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 1, 1, 4); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 1, 4, 4); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 1, 8, 4); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 1, 9, 4); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 1, 10, 4); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 5, 0, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 5, 1, 4); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 5, 2, 3); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 5, 4, 1); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 5, 5, 0); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 5, 6, 0); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 9, 0, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 9, 1, -4); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 9, 2, -4); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 10, 0, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 10, 1, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 0, 0, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 0, 1, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 0, 10, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 0, 19, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 0, 20, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 0, 21, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 1, 0, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 1, 1, 4); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 1, 9, 4); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 1, 18, 4); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 1, 19, 4); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 1, 20, 4); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 10, 0, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 10, 1, -5); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 10, 9, -5); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 10, 10, -5); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 10, 11, -5); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 19, 0, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 19, 1, -14); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 19, 2, -14); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 20, 0, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 20, 1, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 5, 6, S(""), 0, 0, 5); - test(S("abcdefghij"), 5, 6, S(""), 0, 1, 5); - test(S("abcdefghij"), 5, 6, S(""), 1, 0, 0); - test(S("abcdefghij"), 5, 6, S("abcde"), 0, 0, 5); - test(S("abcdefghij"), 5, 6, S("abcde"), 0, 1, 5); - test(S("abcdefghij"), 5, 6, S("abcde"), 0, 2, 5); - test(S("abcdefghij"), 5, 6, S("abcde"), 0, 4, 5); - test(S("abcdefghij"), 5, 6, S("abcde"), 0, 5, 5); - test(S("abcdefghij"), 5, 6, S("abcde"), 0, 6, 5); - test(S("abcdefghij"), 5, 6, S("abcde"), 1, 0, 5); - test(S("abcdefghij"), 5, 6, S("abcde"), 1, 1, 4); - test(S("abcdefghij"), 5, 6, S("abcde"), 1, 2, 4); - test(S("abcdefghij"), 5, 6, S("abcde"), 1, 3, 4); - test(S("abcdefghij"), 5, 6, S("abcde"), 1, 4, 4); - test(S("abcdefghij"), 5, 6, S("abcde"), 1, 5, 4); - test(S("abcdefghij"), 5, 6, S("abcde"), 2, 0, 5); - test(S("abcdefghij"), 5, 6, S("abcde"), 2, 1, 3); - test(S("abcdefghij"), 5, 6, S("abcde"), 2, 2, 3); -} - -template <class S> -void test32() -{ - test(S("abcdefghij"), 5, 6, S("abcde"), 2, 3, 3); - test(S("abcdefghij"), 5, 6, S("abcde"), 2, 4, 3); - test(S("abcdefghij"), 5, 6, S("abcde"), 4, 0, 5); - test(S("abcdefghij"), 5, 6, S("abcde"), 4, 1, 1); - test(S("abcdefghij"), 5, 6, S("abcde"), 4, 2, 1); - test(S("abcdefghij"), 5, 6, S("abcde"), 5, 0, 5); - test(S("abcdefghij"), 5, 6, S("abcde"), 5, 1, 5); - test(S("abcdefghij"), 5, 6, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 0, 0, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 0, 1, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 0, 5, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 0, 9, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 0, 10, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 0, 11, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 1, 0, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 1, 1, 4); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 1, 4, 4); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 1, 8, 4); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 1, 9, 4); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 1, 10, 4); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 5, 0, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 5, 1, 4); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 5, 2, 3); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 5, 4, 1); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 5, 5, 0); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 5, 6, 0); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 9, 0, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 9, 1, -4); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 9, 2, -4); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 10, 0, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 10, 1, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 0, 0, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 0, 1, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 0, 10, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 0, 19, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 0, 20, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 0, 21, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 1, 0, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 1, 1, 4); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 1, 9, 4); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 1, 18, 4); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 1, 19, 4); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 1, 20, 4); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 10, 0, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 10, 1, -5); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 10, 9, -5); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 10, 10, -5); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 10, 11, -5); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 19, 0, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 19, 1, -14); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 19, 2, -14); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 20, 0, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 20, 1, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 9, 0, S(""), 0, 0, 0); - test(S("abcdefghij"), 9, 0, S(""), 0, 1, 0); - test(S("abcdefghij"), 9, 0, S(""), 1, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcde"), 0, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcde"), 0, 1, -1); - test(S("abcdefghij"), 9, 0, S("abcde"), 0, 2, -2); - test(S("abcdefghij"), 9, 0, S("abcde"), 0, 4, -4); - test(S("abcdefghij"), 9, 0, S("abcde"), 0, 5, -5); - test(S("abcdefghij"), 9, 0, S("abcde"), 0, 6, -5); - test(S("abcdefghij"), 9, 0, S("abcde"), 1, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcde"), 1, 1, -1); - test(S("abcdefghij"), 9, 0, S("abcde"), 1, 2, -2); - test(S("abcdefghij"), 9, 0, S("abcde"), 1, 3, -3); - test(S("abcdefghij"), 9, 0, S("abcde"), 1, 4, -4); - test(S("abcdefghij"), 9, 0, S("abcde"), 1, 5, -4); - test(S("abcdefghij"), 9, 0, S("abcde"), 2, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcde"), 2, 1, -1); - test(S("abcdefghij"), 9, 0, S("abcde"), 2, 2, -2); - test(S("abcdefghij"), 9, 0, S("abcde"), 2, 3, -3); - test(S("abcdefghij"), 9, 0, S("abcde"), 2, 4, -3); - test(S("abcdefghij"), 9, 0, S("abcde"), 4, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcde"), 4, 1, -1); - test(S("abcdefghij"), 9, 0, S("abcde"), 4, 2, -1); - test(S("abcdefghij"), 9, 0, S("abcde"), 5, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcde"), 5, 1, 0); - test(S("abcdefghij"), 9, 0, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 0, 1, -1); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 0, 5, -5); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 0, 9, -9); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 0, 10, -10); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 0, 11, -10); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 1, 4, -4); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 1, 8, -8); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 1, 9, -9); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 1, 10, -9); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 5, 1, -1); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 5, 2, -2); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 5, 6, -5); -} - -template <class S> -void test33() -{ - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 9, 1, -1); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 9, 2, -1); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 9, 1, S(""), 0, 0, 1); - test(S("abcdefghij"), 9, 1, S(""), 0, 1, 1); - test(S("abcdefghij"), 9, 1, S(""), 1, 0, 0); - test(S("abcdefghij"), 9, 1, S("abcde"), 0, 0, 1); - test(S("abcdefghij"), 9, 1, S("abcde"), 0, 1, 9); - test(S("abcdefghij"), 9, 1, S("abcde"), 0, 2, 9); - test(S("abcdefghij"), 9, 1, S("abcde"), 0, 4, 9); - test(S("abcdefghij"), 9, 1, S("abcde"), 0, 5, 9); - test(S("abcdefghij"), 9, 1, S("abcde"), 0, 6, 9); - test(S("abcdefghij"), 9, 1, S("abcde"), 1, 0, 1); - test(S("abcdefghij"), 9, 1, S("abcde"), 1, 1, 8); - test(S("abcdefghij"), 9, 1, S("abcde"), 1, 2, 8); - test(S("abcdefghij"), 9, 1, S("abcde"), 1, 3, 8); - test(S("abcdefghij"), 9, 1, S("abcde"), 1, 4, 8); - test(S("abcdefghij"), 9, 1, S("abcde"), 1, 5, 8); - test(S("abcdefghij"), 9, 1, S("abcde"), 2, 0, 1); - test(S("abcdefghij"), 9, 1, S("abcde"), 2, 1, 7); - test(S("abcdefghij"), 9, 1, S("abcde"), 2, 2, 7); - test(S("abcdefghij"), 9, 1, S("abcde"), 2, 3, 7); - test(S("abcdefghij"), 9, 1, S("abcde"), 2, 4, 7); - test(S("abcdefghij"), 9, 1, S("abcde"), 4, 0, 1); - test(S("abcdefghij"), 9, 1, S("abcde"), 4, 1, 5); - test(S("abcdefghij"), 9, 1, S("abcde"), 4, 2, 5); - test(S("abcdefghij"), 9, 1, S("abcde"), 5, 0, 1); - test(S("abcdefghij"), 9, 1, S("abcde"), 5, 1, 1); - test(S("abcdefghij"), 9, 1, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 0, 0, 1); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 0, 1, 9); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 0, 5, 9); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 0, 9, 9); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 0, 10, 9); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 0, 11, 9); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 1, 0, 1); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 1, 1, 8); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 1, 4, 8); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 1, 8, 8); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 1, 9, 8); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 1, 10, 8); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 5, 0, 1); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 5, 1, 4); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 5, 2, 4); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 5, 4, 4); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 5, 5, 4); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 5, 6, 4); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 9, 0, 1); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 9, 1, 0); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 9, 2, 0); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 10, 0, 1); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 10, 1, 1); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 0, 1, 9); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 0, 10, 9); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 0, 19, 9); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 0, 20, 9); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 0, 21, 9); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 1, 1, 8); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 1, 9, 8); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 1, 18, 8); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 1, 19, 8); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 1, 20, 8); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 10, 5, -1); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 10, 9, -1); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 10, 10, -1); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 10, 11, -1); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 19, 1, -10); -} - -template <class S> -void test34() -{ - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 19, 2, -10); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 9, 2, S(""), 0, 0, 1); - test(S("abcdefghij"), 9, 2, S(""), 0, 1, 1); - test(S("abcdefghij"), 9, 2, S(""), 1, 0, 0); - test(S("abcdefghij"), 9, 2, S("abcde"), 0, 0, 1); - test(S("abcdefghij"), 9, 2, S("abcde"), 0, 1, 9); - test(S("abcdefghij"), 9, 2, S("abcde"), 0, 2, 9); - test(S("abcdefghij"), 9, 2, S("abcde"), 0, 4, 9); - test(S("abcdefghij"), 9, 2, S("abcde"), 0, 5, 9); - test(S("abcdefghij"), 9, 2, S("abcde"), 0, 6, 9); - test(S("abcdefghij"), 9, 2, S("abcde"), 1, 0, 1); - test(S("abcdefghij"), 9, 2, S("abcde"), 1, 1, 8); - test(S("abcdefghij"), 9, 2, S("abcde"), 1, 2, 8); - test(S("abcdefghij"), 9, 2, S("abcde"), 1, 3, 8); - test(S("abcdefghij"), 9, 2, S("abcde"), 1, 4, 8); - test(S("abcdefghij"), 9, 2, S("abcde"), 1, 5, 8); - test(S("abcdefghij"), 9, 2, S("abcde"), 2, 0, 1); - test(S("abcdefghij"), 9, 2, S("abcde"), 2, 1, 7); - test(S("abcdefghij"), 9, 2, S("abcde"), 2, 2, 7); - test(S("abcdefghij"), 9, 2, S("abcde"), 2, 3, 7); - test(S("abcdefghij"), 9, 2, S("abcde"), 2, 4, 7); - test(S("abcdefghij"), 9, 2, S("abcde"), 4, 0, 1); - test(S("abcdefghij"), 9, 2, S("abcde"), 4, 1, 5); - test(S("abcdefghij"), 9, 2, S("abcde"), 4, 2, 5); - test(S("abcdefghij"), 9, 2, S("abcde"), 5, 0, 1); - test(S("abcdefghij"), 9, 2, S("abcde"), 5, 1, 1); - test(S("abcdefghij"), 9, 2, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 0, 0, 1); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 0, 1, 9); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 0, 5, 9); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 0, 9, 9); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 0, 10, 9); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 0, 11, 9); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 1, 0, 1); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 1, 1, 8); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 1, 4, 8); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 1, 8, 8); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 1, 9, 8); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 1, 10, 8); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 5, 0, 1); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 5, 1, 4); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 5, 2, 4); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 5, 4, 4); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 5, 5, 4); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 5, 6, 4); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 9, 0, 1); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 9, 1, 0); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 9, 2, 0); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 10, 0, 1); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 10, 1, 1); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 0, 1, 9); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 0, 10, 9); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 0, 19, 9); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 0, 20, 9); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 0, 21, 9); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 1, 1, 8); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 1, 9, 8); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 1, 18, 8); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 1, 19, 8); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 1, 20, 8); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 10, 5, -1); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 10, 9, -1); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 10, 10, -1); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 10, 11, -1); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 19, 1, -10); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 19, 2, -10); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 10, 0, S(""), 0, 0, 0); - test(S("abcdefghij"), 10, 0, S(""), 0, 1, 0); - test(S("abcdefghij"), 10, 0, S(""), 1, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcde"), 0, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcde"), 0, 1, -1); - test(S("abcdefghij"), 10, 0, S("abcde"), 0, 2, -2); - test(S("abcdefghij"), 10, 0, S("abcde"), 0, 4, -4); - test(S("abcdefghij"), 10, 0, S("abcde"), 0, 5, -5); - test(S("abcdefghij"), 10, 0, S("abcde"), 0, 6, -5); - test(S("abcdefghij"), 10, 0, S("abcde"), 1, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcde"), 1, 1, -1); - test(S("abcdefghij"), 10, 0, S("abcde"), 1, 2, -2); - test(S("abcdefghij"), 10, 0, S("abcde"), 1, 3, -3); - test(S("abcdefghij"), 10, 0, S("abcde"), 1, 4, -4); - test(S("abcdefghij"), 10, 0, S("abcde"), 1, 5, -4); - test(S("abcdefghij"), 10, 0, S("abcde"), 2, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcde"), 2, 1, -1); - test(S("abcdefghij"), 10, 0, S("abcde"), 2, 2, -2); - test(S("abcdefghij"), 10, 0, S("abcde"), 2, 3, -3); - test(S("abcdefghij"), 10, 0, S("abcde"), 2, 4, -3); - test(S("abcdefghij"), 10, 0, S("abcde"), 4, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcde"), 4, 1, -1); -} - -template <class S> -void test35() -{ - test(S("abcdefghij"), 10, 0, S("abcde"), 4, 2, -1); - test(S("abcdefghij"), 10, 0, S("abcde"), 5, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcde"), 5, 1, 0); - test(S("abcdefghij"), 10, 0, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 0, 1, -1); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 0, 5, -5); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 0, 9, -9); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 0, 10, -10); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 0, 11, -10); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 1, 4, -4); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 1, 8, -8); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 1, 9, -9); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 1, 10, -9); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 5, 1, -1); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 5, 2, -2); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 9, 1, -1); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 9, 2, -1); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 10, 1, S(""), 0, 0, 0); - test(S("abcdefghij"), 10, 1, S(""), 0, 1, 0); - test(S("abcdefghij"), 10, 1, S(""), 1, 0, 0); - test(S("abcdefghij"), 10, 1, S("abcde"), 0, 0, 0); - test(S("abcdefghij"), 10, 1, S("abcde"), 0, 1, -1); - test(S("abcdefghij"), 10, 1, S("abcde"), 0, 2, -2); - test(S("abcdefghij"), 10, 1, S("abcde"), 0, 4, -4); - test(S("abcdefghij"), 10, 1, S("abcde"), 0, 5, -5); - test(S("abcdefghij"), 10, 1, S("abcde"), 0, 6, -5); - test(S("abcdefghij"), 10, 1, S("abcde"), 1, 0, 0); - test(S("abcdefghij"), 10, 1, S("abcde"), 1, 1, -1); - test(S("abcdefghij"), 10, 1, S("abcde"), 1, 2, -2); - test(S("abcdefghij"), 10, 1, S("abcde"), 1, 3, -3); - test(S("abcdefghij"), 10, 1, S("abcde"), 1, 4, -4); - test(S("abcdefghij"), 10, 1, S("abcde"), 1, 5, -4); - test(S("abcdefghij"), 10, 1, S("abcde"), 2, 0, 0); - test(S("abcdefghij"), 10, 1, S("abcde"), 2, 1, -1); - test(S("abcdefghij"), 10, 1, S("abcde"), 2, 2, -2); - test(S("abcdefghij"), 10, 1, S("abcde"), 2, 3, -3); - test(S("abcdefghij"), 10, 1, S("abcde"), 2, 4, -3); - test(S("abcdefghij"), 10, 1, S("abcde"), 4, 0, 0); - test(S("abcdefghij"), 10, 1, S("abcde"), 4, 1, -1); - test(S("abcdefghij"), 10, 1, S("abcde"), 4, 2, -1); - test(S("abcdefghij"), 10, 1, S("abcde"), 5, 0, 0); - test(S("abcdefghij"), 10, 1, S("abcde"), 5, 1, 0); - test(S("abcdefghij"), 10, 1, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 0, 0, 0); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 0, 1, -1); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 0, 5, -5); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 0, 9, -9); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 0, 10, -10); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 0, 11, -10); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 1, 0, 0); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 1, 4, -4); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 1, 8, -8); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 1, 9, -9); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 1, 10, -9); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 5, 0, 0); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 5, 1, -1); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 5, 2, -2); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 9, 0, 0); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 9, 1, -1); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 9, 2, -1); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 10, 0, 0); -} - -template <class S> -void test36() -{ - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 10, 1, 0); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 11, 0, S(""), 0, 0, 0); - test(S("abcdefghij"), 11, 0, S(""), 0, 1, 0); - test(S("abcdefghij"), 11, 0, S(""), 1, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 0, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 0, 1, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 0, 2, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 0, 4, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 0, 5, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 0, 6, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 1, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 1, 1, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 1, 2, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 1, 3, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 1, 4, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 1, 5, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 2, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 2, 1, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 2, 2, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 2, 3, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 2, 4, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 4, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 4, 1, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 4, 2, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 5, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 5, 1, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 0, 1, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 0, 5, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 0, 9, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 0, 10, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 0, 11, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 1, 1, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 1, 4, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 1, 8, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 1, 9, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 1, 10, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 5, 1, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 5, 2, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 5, 4, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 5, 5, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 5, 6, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 9, 1, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 9, 2, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 0, 1, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 0, 10, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 0, 19, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 0, 20, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 0, 21, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 1, 1, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 1, 9, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 1, 18, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 1, 19, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 1, 20, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 10, 1, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 10, 5, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 10, 9, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 10, 10, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 10, 11, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 19, 1, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 19, 2, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); -} - -template <class S> -void test37() -{ - test(S("abcdefghijklmnopqrst"), 0, 0, S(""), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S(""), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 0, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 0, 4, -4); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 0, 6, -5); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 1, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 1, 3, -3); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 1, 5, -4); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 2, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 2, 3, -3); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 2, 4, -3); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 4, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 4, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 4, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 5, 1, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 0, 9, -9); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 0, 11, -10); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 1, 8, -8); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 1, 10, -9); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 5, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 5, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 9, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 9, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 1, S(""), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S(""), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 0, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 0, 4, -3); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 0, 5, -4); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 0, 6, -4); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 1, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 1, 3, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 1, 5, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 2, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 2, 1, -2); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 2, 3, -2); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 2, 4, -2); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 4, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 4, 1, -4); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 4, 2, -4); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 5, 1, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 6, 0, 0); -} - -template <class S> -void test38() -{ - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 0, 5, -4); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 0, 9, -8); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 0, 10, -9); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 0, 11, -9); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 1, 8, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 1, 10, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 5, 1, -5); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 5, 2, -5); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 5, 4, -5); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 9, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 9, 1, -9); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 9, 2, -9); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 10, 1, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 0, 10, -9); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 0, 19, -18); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 0, 20, -19); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 0, 21, -19); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 10, S(""), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S(""), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 0, 1, 9); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 0, 2, 8); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 0, 4, 6); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 0, 5, 5); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 0, 6, 5); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 1, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 1, 3, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 1, 5, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 2, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 2, 1, -2); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 2, 3, -2); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 2, 4, -2); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 4, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 4, 1, -4); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 4, 2, -4); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 5, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 5, 1, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 0, 1, 9); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 0, 5, 5); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 0, 9, 1); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 0, 10, 0); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 0, 11, 0); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 1, 8, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 1, 10, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 5, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 5, 1, -5); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 5, 2, -5); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 5, 4, -5); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 9, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 9, 1, -9); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 9, 2, -9); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 10, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 10, 1, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 0, 1, 9); -} - -template <class S> -void test39() -{ - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 0, 10, 0); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 0, 19, -9); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 0, 20, -10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 0, 21, -10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 10, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 19, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 20, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 20, 1, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 19, S(""), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S(""), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 0, 1, 18); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 0, 2, 17); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 0, 4, 15); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 0, 5, 14); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 0, 6, 14); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 1, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 1, 3, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 1, 5, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 2, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 2, 1, -2); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 2, 3, -2); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 2, 4, -2); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 4, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 4, 1, -4); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 4, 2, -4); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 5, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 5, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 0, 1, 18); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 0, 5, 14); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 0, 9, 10); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 0, 10, 9); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 0, 11, 9); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 1, 8, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 1, 10, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 5, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 5, 1, -5); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 5, 2, -5); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 5, 4, -5); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 9, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 9, 1, -9); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 9, 2, -9); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 10, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 10, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 0, 1, 18); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 0, 10, 9); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 0, 19, 0); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 0, 20, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 0, 21, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 10, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 19, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 20, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 20, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 20, S(""), 0, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S(""), 0, 1, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 0, 0, 20); -} - -template <class S> -void test40() -{ - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 0, 2, 18); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 0, 4, 16); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 0, 5, 15); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 0, 6, 15); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 1, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 1, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 1, 3, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 1, 5, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 2, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 2, 1, -2); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 2, 3, -2); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 2, 4, -2); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 4, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 4, 1, -4); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 4, 2, -4); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 5, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 5, 1, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 0, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 0, 5, 15); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 0, 9, 11); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 0, 11, 10); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 1, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 1, 8, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 1, 10, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 5, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 5, 1, -5); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 5, 2, -5); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 5, 4, -5); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 9, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 9, 1, -9); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 9, 2, -9); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 10, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 10, 1, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 0, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 0, 20, 0); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 0, 21, 0); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 1, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 10, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 19, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 20, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 20, 1, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 21, S(""), 0, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S(""), 0, 1, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 0, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 0, 2, 18); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 0, 4, 16); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 0, 5, 15); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 0, 6, 15); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 1, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 1, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 1, 3, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 1, 5, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 2, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 2, 1, -2); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 2, 3, -2); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 2, 4, -2); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 4, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 4, 1, -4); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 4, 2, -4); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 5, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 5, 1, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 0, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 0, 5, 15); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 0, 9, 11); -} - -template <class S> -void test41() -{ - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 0, 11, 10); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 1, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 1, 8, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 1, 10, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 5, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 5, 1, -5); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 5, 2, -5); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 5, 4, -5); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 9, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 9, 1, -9); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 9, 2, -9); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 10, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 10, 1, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 0, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 0, 20, 0); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 0, 21, 0); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 1, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 10, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 19, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 20, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 20, 1, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S(""), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S(""), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 0, 2, -2); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 0, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 0, 6, -5); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 1, 2, -2); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 1, 3, -3); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 1, 5, -4); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 2, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 2, 3, -3); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 2, 4, -3); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 4, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 4, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 4, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 5, 1, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 0, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 0, 11, -10); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 1, 8, -8); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 1, 10, -9); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 5, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 5, 2, -2); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 9, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 9, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); -} - -template <class S> -void test42() -{ - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 1, S(""), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S(""), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 0, 2, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 0, 4, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 0, 6, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 1, 1, 0); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 1, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 1, 3, -2); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 1, 4, -3); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 1, 5, -3); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 2, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 2, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 2, 3, -1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 2, 4, -1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 4, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 4, 1, -3); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 4, 2, -3); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 5, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 0, 9, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 0, 11, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 1, 1, 0); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 1, 4, -3); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 1, 8, -7); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 1, 9, -8); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 1, 10, -8); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 5, 1, -4); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 5, 2, -4); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 5, 5, -4); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 5, 6, -4); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 9, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 9, 1, -8); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 9, 2, -8); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 10, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 1, 1, 0); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 1, 9, -8); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 1, 18, -17); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 1, 19, -18); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 1, 20, -18); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 9, S(""), 0, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S(""), 0, 1, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 0, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 0, 2, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 0, 4, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 0, 5, 1); -} - -template <class S> -void test43() -{ - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 0, 6, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 1, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 1, 1, 8); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 1, 2, 7); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 1, 3, 6); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 1, 4, 5); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 1, 5, 5); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 2, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 2, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 2, 3, -1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 2, 4, -1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 4, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 4, 1, -3); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 4, 2, -3); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 5, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 5, 1, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 0, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 0, 9, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 0, 11, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 1, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 1, 1, 8); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 1, 4, 5); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 1, 8, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 1, 9, 0); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 1, 10, 0); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 5, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 5, 1, -4); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 5, 2, -4); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 5, 5, -4); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 5, 6, -4); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 9, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 9, 1, -8); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 9, 2, -8); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 10, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 10, 1, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 0, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 1, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 1, 1, 8); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 1, 9, 0); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 1, 18, -9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 1, 19, -10); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 1, 20, -10); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 10, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 19, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 20, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 20, 1, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 18, S(""), 0, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S(""), 0, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 0, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 0, 2, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 0, 4, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 0, 6, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 1, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 1, 1, 17); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 1, 2, 16); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 1, 3, 15); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 1, 4, 14); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 1, 5, 14); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 2, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 2, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 2, 3, -1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 2, 4, -1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 4, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 4, 1, -3); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 4, 2, -3); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 5, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 5, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 0, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 0, 9, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 0, 11, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 1, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 1, 1, 17); -} - -template <class S> -void test44() -{ - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 1, 4, 14); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 1, 8, 10); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 1, 10, 9); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 5, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 5, 1, -4); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 5, 2, -4); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 5, 5, -4); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 5, 6, -4); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 9, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 9, 1, -8); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 9, 2, -8); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 10, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 10, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 0, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 1, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 1, 1, 17); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 1, 18, 0); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 10, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 19, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 20, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 20, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 19, S(""), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S(""), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 0, 2, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 0, 4, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 0, 6, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 1, 2, 17); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 1, 3, 16); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 1, 4, 15); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 1, 5, 15); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 2, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 2, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 2, 3, -1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 2, 4, -1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 4, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 4, 1, -3); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 4, 2, -3); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 5, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 5, 1, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 0, 9, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 0, 11, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 1, 4, 15); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 1, 8, 11); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 1, 9, 10); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 1, 10, 10); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 5, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 5, 1, -4); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 5, 2, -4); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 5, 5, -4); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 5, 6, -4); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 9, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 9, 1, -8); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 9, 2, -8); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 10, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 10, 1, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 1, 9, 10); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 1, 18, 1); -} - -template <class S> -void test45() -{ - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 1, 19, 0); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 1, 20, 0); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 10, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 19, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 20, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 20, 1, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 20, S(""), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S(""), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 0, 2, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 0, 4, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 0, 6, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 1, 2, 17); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 1, 3, 16); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 1, 4, 15); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 1, 5, 15); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 2, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 2, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 2, 3, -1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 2, 4, -1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 4, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 4, 1, -3); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 4, 2, -3); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 5, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 5, 1, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 0, 9, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 0, 11, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 1, 4, 15); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 1, 8, 11); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 1, 9, 10); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 1, 10, 10); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 5, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 5, 1, -4); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 5, 2, -4); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 5, 5, -4); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 5, 6, -4); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 9, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 9, 1, -8); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 9, 2, -8); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 10, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 10, 1, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 1, 9, 10); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 1, 18, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 1, 19, 0); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 1, 20, 0); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 10, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 19, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 20, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 20, 1, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S(""), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S(""), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 0, 2, -2); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 0, 4, -4); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 0, 6, -5); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 1, 2, -2); -} - -template <class S> -void test46() -{ - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 1, 3, -3); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 1, 5, -4); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 2, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 2, 3, -3); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 2, 4, -3); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 4, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 4, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 4, 2, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 5, 1, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 0, 9, -9); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 0, 11, -10); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 1, 8, -8); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 1, 10, -9); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 5, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 5, 2, -2); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 9, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 9, 2, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 1, S(""), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S(""), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 0, 2, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 0, 4, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 0, 6, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 1, 2, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 1, 3, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 1, 5, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 2, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 2, 1, 8); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 2, 2, 8); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 2, 3, 8); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 2, 4, 8); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 4, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 4, 1, 6); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 4, 2, 6); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 5, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 0, 9, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 0, 11, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 1, 8, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 1, 10, 9); -} - -template <class S> -void test47() -{ - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 5, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 5, 2, 5); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 5, 4, 5); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 5, 5, 5); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 5, 6, 5); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 9, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 9, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 9, 2, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 10, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 0, 19, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 0, 20, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 0, 21, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 1, 18, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 1, 19, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 1, 20, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 10, 5, -4); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 10, 9, -8); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 19, 1, -9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 19, 2, -9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 5, S(""), 0, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S(""), 0, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 0, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 0, 2, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 0, 4, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 0, 6, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 1, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 1, 2, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 1, 3, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 1, 5, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 2, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 2, 1, 8); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 2, 2, 8); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 2, 3, 8); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 2, 4, 8); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 4, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 4, 1, 6); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 4, 2, 6); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 5, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 5, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 0, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 0, 9, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 0, 11, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 1, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 1, 8, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 1, 10, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 5, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 5, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 5, 2, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 5, 4, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 5, 5, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 5, 6, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 9, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 9, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 9, 2, 1); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 10, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 10, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 0, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 0, 19, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 0, 20, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 0, 21, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 1, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 1, 18, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 1, 19, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 1, 20, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 10, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 10, 1, 4); -} - -template <class S> -void test48() -{ - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 10, 5, 0); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 10, 9, -4); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 10, 10, -5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 10, 11, -5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 19, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 19, 1, -9); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 19, 2, -9); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 20, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 20, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 9, S(""), 0, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S(""), 0, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 0, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 0, 2, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 0, 4, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 0, 6, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 1, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 1, 2, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 1, 3, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 1, 5, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 2, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 2, 1, 8); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 2, 2, 8); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 2, 3, 8); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 2, 4, 8); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 4, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 4, 1, 6); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 4, 2, 6); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 5, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 5, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 0, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 0, 9, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 0, 11, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 1, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 1, 8, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 1, 10, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 5, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 5, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 5, 2, 5); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 5, 4, 5); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 5, 5, 5); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 5, 6, 5); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 9, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 9, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 9, 2, 1); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 10, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 10, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 0, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 0, 19, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 0, 20, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 0, 21, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 1, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 1, 18, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 1, 19, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 1, 20, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 10, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 10, 1, 8); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 10, 5, 4); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 10, 9, 0); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 10, 10, -1); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 10, 11, -1); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 19, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 19, 1, -9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 19, 2, -9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 20, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 20, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 10, S(""), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S(""), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 0, 2, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 0, 4, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 0, 6, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 1, 2, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 1, 3, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 1, 5, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 2, 0, 10); -} - -template <class S> -void test49() -{ - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 2, 1, 8); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 2, 2, 8); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 2, 3, 8); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 2, 4, 8); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 4, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 4, 1, 6); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 4, 2, 6); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 5, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 5, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 0, 9, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 0, 11, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 1, 8, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 1, 10, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 5, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 5, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 5, 2, 5); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 5, 4, 5); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 5, 5, 5); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 5, 6, 5); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 9, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 9, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 9, 2, 1); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 10, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 10, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 0, 19, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 0, 20, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 0, 21, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 1, 18, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 1, 19, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 1, 20, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 10, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 10, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 10, 5, 5); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 10, 9, 1); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 10, 10, 0); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 10, 11, 0); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 19, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 19, 1, -9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 19, 2, -9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 20, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 20, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 11, S(""), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S(""), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 0, 2, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 0, 4, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 0, 6, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 1, 2, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 1, 3, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 1, 5, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 2, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 2, 1, 8); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 2, 2, 8); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 2, 3, 8); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 2, 4, 8); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 4, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 4, 1, 6); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 4, 2, 6); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 5, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 5, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 0, 9, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 0, 11, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 1, 8, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 1, 10, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 5, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 5, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 5, 2, 5); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 5, 4, 5); -} - -template <class S> -void test50() -{ - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 5, 5, 5); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 5, 6, 5); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 9, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 9, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 9, 2, 1); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 10, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 10, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 0, 19, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 0, 20, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 0, 21, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 1, 18, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 1, 19, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 1, 20, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 10, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 10, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 10, 5, 5); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 10, 9, 1); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 10, 10, 0); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 10, 11, 0); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 19, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 19, 1, -9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 19, 2, -9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 20, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 20, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S(""), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S(""), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 0, 2, -2); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 0, 4, -4); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 0, 6, -5); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 1, 2, -2); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 1, 3, -3); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 1, 5, -4); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 2, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 2, 3, -3); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 2, 4, -3); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 4, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 4, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 4, 2, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 5, 1, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 0, 9, -9); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 0, 11, -10); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 1, 8, -8); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 1, 10, -9); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 5, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 5, 2, -2); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 9, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 9, 2, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); -} - -template <class S> -void test51() -{ - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 1, S(""), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S(""), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 0, 2, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 0, 4, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 0, 5, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 0, 6, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 1, 2, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 1, 3, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 1, 4, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 1, 5, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 2, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 2, 1, 17); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 2, 2, 17); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 2, 3, 17); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 2, 4, 17); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 4, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 4, 1, 15); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 4, 2, 15); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 5, 1, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 0, 5, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 0, 9, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 0, 10, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 0, 11, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 1, 4, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 1, 8, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 1, 9, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 1, 10, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 5, 1, 14); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 5, 2, 14); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 5, 4, 14); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 5, 5, 14); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 5, 6, 14); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 9, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 9, 1, 10); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 9, 2, 10); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 10, 1, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 0, 10, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 0, 19, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 0, 20, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 0, 21, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 1, 9, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 1, 18, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 1, 19, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 1, 20, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 10, 1, 9); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 10, 5, 9); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 10, 9, 9); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 10, 10, 9); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 10, 11, 9); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 19, 1, 0); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 19, 2, 0); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 2, S(""), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S(""), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 0, 2, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 0, 4, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 0, 5, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 0, 6, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 1, 2, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 1, 3, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 1, 4, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 1, 5, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 2, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 2, 1, 17); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 2, 2, 17); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 2, 3, 17); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 2, 4, 17); -} - -template <class S> -void test52() -{ - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 4, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 4, 1, 15); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 4, 2, 15); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 5, 1, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 0, 5, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 0, 9, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 0, 10, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 0, 11, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 1, 4, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 1, 8, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 1, 9, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 1, 10, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 5, 1, 14); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 5, 2, 14); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 5, 4, 14); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 5, 5, 14); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 5, 6, 14); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 9, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 9, 1, 10); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 9, 2, 10); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 10, 1, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 0, 10, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 0, 19, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 0, 20, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 0, 21, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 1, 9, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 1, 18, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 1, 19, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 1, 20, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 10, 1, 9); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 10, 5, 9); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 10, 9, 9); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 10, 10, 9); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 10, 11, 9); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 19, 1, 0); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 19, 2, 0); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S(""), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S(""), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 0, 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 0, 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 0, 6, -5); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 1, 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 1, 3, -3); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 1, 5, -4); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 2, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 2, 3, -3); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 2, 4, -3); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 4, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 4, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 4, 2, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 5, 1, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 0, 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 0, 11, -10); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 1, 8, -8); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 1, 10, -9); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 5, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 5, 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 9, 1, -1); -} - -template <class S> -void test53() -{ - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 9, 2, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S(""), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S(""), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 0, 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 0, 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 0, 6, -5); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 1, 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 1, 3, -3); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 1, 5, -4); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 2, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 2, 3, -3); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 2, 4, -3); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 4, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 4, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 4, 2, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 5, 1, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 0, 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 0, 11, -10); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 1, 8, -8); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 1, 10, -9); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 5, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 5, 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 9, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 9, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 9, 2, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 20, 0, 0); -} - -template <class S> -void test54() -{ - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S(""), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S(""), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 0, 2, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 0, 4, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 0, 5, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 0, 6, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 1, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 1, 2, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 1, 3, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 1, 4, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 1, 5, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 2, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 2, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 2, 2, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 2, 3, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 2, 4, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 4, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 4, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 4, 2, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 5, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 0, 5, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 0, 9, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 0, 10, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 0, 11, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 1, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 1, 4, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 1, 8, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 1, 9, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 1, 10, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 5, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 5, 2, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 5, 4, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 5, 5, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 5, 6, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 9, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 9, 2, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 0, 10, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 0, 19, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 0, 20, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 0, 21, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 1, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 1, 9, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 1, 18, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 1, 19, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 1, 20, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 10, 5, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 10, 9, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 10, 10, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 10, 11, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 19, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 19, 2, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); -} - -template<class S> -void test55() -{ - test_npos(S(""), 0, 0, S(""), 0, 0); - test_npos(S(""), 0, 0, S("abcde"), 0, -5); - test_npos(S("abcde"), 0, 0, S("abcdefghij"), 0, -10); - test_npos(S("abcde"), 0, 0, S("abcdefghij"), 1, -9); - test_npos(S("abcde"), 0, 0, S("abcdefghij"), 5, -5); -} - -int main() -{ - { - typedef std::string S; - test0<S>(); - test1<S>(); - test2<S>(); - test3<S>(); - test4<S>(); - test5<S>(); - test6<S>(); - test7<S>(); - test8<S>(); - test9<S>(); - test10<S>(); - test11<S>(); - test12<S>(); - test13<S>(); - test14<S>(); - test15<S>(); - test16<S>(); - test17<S>(); - test18<S>(); - test19<S>(); - test20<S>(); - test21<S>(); - test22<S>(); - test23<S>(); - test24<S>(); - test25<S>(); - test26<S>(); - test27<S>(); - test28<S>(); - test29<S>(); - test30<S>(); - test31<S>(); - test32<S>(); - test33<S>(); - test34<S>(); - test35<S>(); - test36<S>(); - test37<S>(); - test38<S>(); - test39<S>(); - test40<S>(); - test41<S>(); - test42<S>(); - test43<S>(); - test44<S>(); - test45<S>(); - test46<S>(); - test47<S>(); - test48<S>(); - test49<S>(); - test50<S>(); - test51<S>(); - test52<S>(); - test53<S>(); - test54<S>(); - test55<S>(); - } -#if TEST_STD_VER >= 11 - { - typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S; - test0<S>(); - test1<S>(); - test2<S>(); - test3<S>(); - test4<S>(); - test5<S>(); - test6<S>(); - test7<S>(); - test8<S>(); - test9<S>(); - test10<S>(); - test11<S>(); - test12<S>(); - test13<S>(); - test14<S>(); - test15<S>(); - test16<S>(); - test17<S>(); - test18<S>(); - test19<S>(); - test20<S>(); - test21<S>(); - test22<S>(); - test23<S>(); - test24<S>(); - test25<S>(); - test26<S>(); - test27<S>(); - test28<S>(); - test29<S>(); - test30<S>(); - test31<S>(); - test32<S>(); - test33<S>(); - test34<S>(); - test35<S>(); - test36<S>(); - test37<S>(); - test38<S>(); - test39<S>(); - test40<S>(); - test41<S>(); - test42<S>(); - test43<S>(); - test44<S>(); - test45<S>(); - test46<S>(); - test47<S>(); - test48<S>(); - test49<S>(); - test50<S>(); - test51<S>(); - test52<S>(); - test53<S>(); - test54<S>(); - test55<S>(); - } -#endif -} diff --git a/test/std/strings/basic.string/string.ops/string_compare/size_size_string_view.pass.cpp b/test/std/strings/basic.string/string.ops/string_compare/size_size_string_view.pass.cpp deleted file mode 100644 index 53114f37c0e8..000000000000 --- a/test/std/strings/basic.string/string.ops/string_compare/size_size_string_view.pass.cpp +++ /dev/null @@ -1,383 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// <string> - -// int compare(size_type pos1, size_type n1, basic_string_vew sv) const; - -#include <string> -#include <stdexcept> -#include <cassert> - -#include "min_allocator.h" - -#include "test_macros.h" - -int sign(int x) -{ - if (x == 0) - return 0; - if (x < 0) - return -1; - return 1; -} - -template <class S, class SV> -void -test(const S& s, typename S::size_type pos1, typename S::size_type n1, - SV sv, int x) -{ - if (pos1 <= s.size()) - assert(sign(s.compare(pos1, n1, sv)) == sign(x)); -#ifndef TEST_HAS_NO_EXCEPTIONS - else - { - try - { - TEST_IGNORE_NODISCARD s.compare(pos1, n1, sv); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos1 > s.size()); - } - } -#endif -} - -template <class S, class SV> -void test0() -{ - test(S(""), 0, 0, SV(""), 0); - test(S(""), 0, 0, SV("abcde"), -5); - test(S(""), 0, 0, SV("abcdefghij"), -10); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), -20); - test(S(""), 0, 1, SV(""), 0); - test(S(""), 0, 1, SV("abcde"), -5); - test(S(""), 0, 1, SV("abcdefghij"), -10); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), -20); - test(S(""), 1, 0, SV(""), 0); - test(S(""), 1, 0, SV("abcde"), 0); - test(S(""), 1, 0, SV("abcdefghij"), 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 0); - test(S("abcde"), 0, 0, SV(""), 0); - test(S("abcde"), 0, 0, SV("abcde"), -5); - test(S("abcde"), 0, 0, SV("abcdefghij"), -10); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), -20); - test(S("abcde"), 0, 1, SV(""), 1); - test(S("abcde"), 0, 1, SV("abcde"), -4); - test(S("abcde"), 0, 1, SV("abcdefghij"), -9); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), -19); - test(S("abcde"), 0, 2, SV(""), 2); - test(S("abcde"), 0, 2, SV("abcde"), -3); - test(S("abcde"), 0, 2, SV("abcdefghij"), -8); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), -18); - test(S("abcde"), 0, 4, SV(""), 4); - test(S("abcde"), 0, 4, SV("abcde"), -1); - test(S("abcde"), 0, 4, SV("abcdefghij"), -6); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), -16); - test(S("abcde"), 0, 5, SV(""), 5); - test(S("abcde"), 0, 5, SV("abcde"), 0); - test(S("abcde"), 0, 5, SV("abcdefghij"), -5); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), -15); - test(S("abcde"), 0, 6, SV(""), 5); - test(S("abcde"), 0, 6, SV("abcde"), 0); - test(S("abcde"), 0, 6, SV("abcdefghij"), -5); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), -15); - test(S("abcde"), 1, 0, SV(""), 0); - test(S("abcde"), 1, 0, SV("abcde"), -5); - test(S("abcde"), 1, 0, SV("abcdefghij"), -10); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), -20); - test(S("abcde"), 1, 1, SV(""), 1); - test(S("abcde"), 1, 1, SV("abcde"), 1); - test(S("abcde"), 1, 1, SV("abcdefghij"), 1); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 1); - test(S("abcde"), 1, 2, SV(""), 2); - test(S("abcde"), 1, 2, SV("abcde"), 1); - test(S("abcde"), 1, 2, SV("abcdefghij"), 1); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 1); - test(S("abcde"), 1, 3, SV(""), 3); - test(S("abcde"), 1, 3, SV("abcde"), 1); - test(S("abcde"), 1, 3, SV("abcdefghij"), 1); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 1); - test(S("abcde"), 1, 4, SV(""), 4); - test(S("abcde"), 1, 4, SV("abcde"), 1); - test(S("abcde"), 1, 4, SV("abcdefghij"), 1); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 1); - test(S("abcde"), 1, 5, SV(""), 4); - test(S("abcde"), 1, 5, SV("abcde"), 1); - test(S("abcde"), 1, 5, SV("abcdefghij"), 1); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 1); - test(S("abcde"), 2, 0, SV(""), 0); - test(S("abcde"), 2, 0, SV("abcde"), -5); - test(S("abcde"), 2, 0, SV("abcdefghij"), -10); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), -20); - test(S("abcde"), 2, 1, SV(""), 1); - test(S("abcde"), 2, 1, SV("abcde"), 2); - test(S("abcde"), 2, 1, SV("abcdefghij"), 2); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 2); - test(S("abcde"), 2, 2, SV(""), 2); - test(S("abcde"), 2, 2, SV("abcde"), 2); - test(S("abcde"), 2, 2, SV("abcdefghij"), 2); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 2); - test(S("abcde"), 2, 3, SV(""), 3); - test(S("abcde"), 2, 3, SV("abcde"), 2); - test(S("abcde"), 2, 3, SV("abcdefghij"), 2); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 2); - test(S("abcde"), 2, 4, SV(""), 3); - test(S("abcde"), 2, 4, SV("abcde"), 2); - test(S("abcde"), 2, 4, SV("abcdefghij"), 2); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 2); - test(S("abcde"), 4, 0, SV(""), 0); - test(S("abcde"), 4, 0, SV("abcde"), -5); - test(S("abcde"), 4, 0, SV("abcdefghij"), -10); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), -20); - test(S("abcde"), 4, 1, SV(""), 1); - test(S("abcde"), 4, 1, SV("abcde"), 4); - test(S("abcde"), 4, 1, SV("abcdefghij"), 4); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 4); - test(S("abcde"), 4, 2, SV(""), 1); - test(S("abcde"), 4, 2, SV("abcde"), 4); - test(S("abcde"), 4, 2, SV("abcdefghij"), 4); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 4); - test(S("abcde"), 5, 0, SV(""), 0); - test(S("abcde"), 5, 0, SV("abcde"), -5); - test(S("abcde"), 5, 0, SV("abcdefghij"), -10); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), -20); - test(S("abcde"), 5, 1, SV(""), 0); - test(S("abcde"), 5, 1, SV("abcde"), -5); - test(S("abcde"), 5, 1, SV("abcdefghij"), -10); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), -20); -} - -template <class S, class SV> -void test1() -{ - test(S("abcde"), 6, 0, SV(""), 0); - test(S("abcde"), 6, 0, SV("abcde"), 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 0); - test(S("abcdefghij"), 0, 0, SV(""), 0); - test(S("abcdefghij"), 0, 0, SV("abcde"), -5); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), -10); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), -20); - test(S("abcdefghij"), 0, 1, SV(""), 1); - test(S("abcdefghij"), 0, 1, SV("abcde"), -4); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), -9); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), -19); - test(S("abcdefghij"), 0, 5, SV(""), 5); - test(S("abcdefghij"), 0, 5, SV("abcde"), 0); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), -5); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), -15); - test(S("abcdefghij"), 0, 9, SV(""), 9); - test(S("abcdefghij"), 0, 9, SV("abcde"), 4); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), -1); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), -11); - test(S("abcdefghij"), 0, 10, SV(""), 10); - test(S("abcdefghij"), 0, 10, SV("abcde"), 5); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 0); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), -10); - test(S("abcdefghij"), 0, 11, SV(""), 10); - test(S("abcdefghij"), 0, 11, SV("abcde"), 5); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 0); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), -10); - test(S("abcdefghij"), 1, 0, SV(""), 0); - test(S("abcdefghij"), 1, 0, SV("abcde"), -5); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), -10); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), -20); - test(S("abcdefghij"), 1, 1, SV(""), 1); - test(S("abcdefghij"), 1, 1, SV("abcde"), 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 1); - test(S("abcdefghij"), 1, 4, SV(""), 4); - test(S("abcdefghij"), 1, 4, SV("abcde"), 1); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 1); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 1); - test(S("abcdefghij"), 1, 8, SV(""), 8); - test(S("abcdefghij"), 1, 8, SV("abcde"), 1); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 1); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 1); - test(S("abcdefghij"), 1, 9, SV(""), 9); - test(S("abcdefghij"), 1, 9, SV("abcde"), 1); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 1); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 1); - test(S("abcdefghij"), 1, 10, SV(""), 9); - test(S("abcdefghij"), 1, 10, SV("abcde"), 1); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 1); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 1); - test(S("abcdefghij"), 5, 0, SV(""), 0); - test(S("abcdefghij"), 5, 0, SV("abcde"), -5); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), -10); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), -20); - test(S("abcdefghij"), 5, 1, SV(""), 1); - test(S("abcdefghij"), 5, 1, SV("abcde"), 5); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 5); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 5); - test(S("abcdefghij"), 5, 2, SV(""), 2); - test(S("abcdefghij"), 5, 2, SV("abcde"), 5); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 5); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 5); - test(S("abcdefghij"), 5, 4, SV(""), 4); - test(S("abcdefghij"), 5, 4, SV("abcde"), 5); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 5); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 5); - test(S("abcdefghij"), 5, 5, SV(""), 5); - test(S("abcdefghij"), 5, 5, SV("abcde"), 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 5); - test(S("abcdefghij"), 5, 6, SV(""), 5); - test(S("abcdefghij"), 5, 6, SV("abcde"), 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 5); - test(S("abcdefghij"), 9, 0, SV(""), 0); - test(S("abcdefghij"), 9, 0, SV("abcde"), -5); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), -10); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), -20); - test(S("abcdefghij"), 9, 1, SV(""), 1); - test(S("abcdefghij"), 9, 1, SV("abcde"), 9); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 9); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 9); - test(S("abcdefghij"), 9, 2, SV(""), 1); - test(S("abcdefghij"), 9, 2, SV("abcde"), 9); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 9); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 9); - test(S("abcdefghij"), 10, 0, SV(""), 0); - test(S("abcdefghij"), 10, 0, SV("abcde"), -5); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), -10); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), -20); - test(S("abcdefghij"), 10, 1, SV(""), 0); - test(S("abcdefghij"), 10, 1, SV("abcde"), -5); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), -10); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), -20); - test(S("abcdefghij"), 11, 0, SV(""), 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 0); -} - -template <class S, class SV> -void test2() -{ - test(S("abcdefghijklmnopqrst"), 0, 0, SV(""), 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), -5); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), -10); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), -20); - test(S("abcdefghijklmnopqrst"), 0, 1, SV(""), 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), -4); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), -9); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), -19); - test(S("abcdefghijklmnopqrst"), 0, 10, SV(""), 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 5); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 0); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), -10); - test(S("abcdefghijklmnopqrst"), 0, 19, SV(""), 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 14); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 9); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), -1); - test(S("abcdefghijklmnopqrst"), 0, 20, SV(""), 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 15); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 10); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 0); - test(S("abcdefghijklmnopqrst"), 0, 21, SV(""), 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 15); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 10); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV(""), 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), -5); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), -10); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), -20); - test(S("abcdefghijklmnopqrst"), 1, 1, SV(""), 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV(""), 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV(""), 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV(""), 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV(""), 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 1); - test(S("abcdefghijklmnopqrst"), 10, 0, SV(""), 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), -5); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), -10); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), -20); - test(S("abcdefghijklmnopqrst"), 10, 1, SV(""), 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 10); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 10); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV(""), 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV(""), 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV(""), 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV(""), 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 10); - test(S("abcdefghijklmnopqrst"), 19, 0, SV(""), 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), -5); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), -10); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), -20); - test(S("abcdefghijklmnopqrst"), 19, 1, SV(""), 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 19); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 19); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV(""), 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 19); - test(S("abcdefghijklmnopqrst"), 20, 0, SV(""), 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), -5); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), -10); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), -20); - test(S("abcdefghijklmnopqrst"), 20, 1, SV(""), 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), -5); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), -10); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), -20); - test(S("abcdefghijklmnopqrst"), 21, 0, SV(""), 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 0); -} - -int main() -{ - { - typedef std::string S; - typedef std::string_view SV; - test0<S, SV>(); - test1<S, SV>(); - test2<S, SV>(); - } -#if TEST_STD_VER >= 11 - { - typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S; - typedef std::string_view SV; - test0<S, SV>(); - test1<S, SV>(); - test2<S, SV>(); - } -#endif -} diff --git a/test/std/strings/basic.string/string.ops/string_compare/string.pass.cpp b/test/std/strings/basic.string/string.ops/string_compare/string.pass.cpp deleted file mode 100644 index 80d579e300c3..000000000000 --- a/test/std/strings/basic.string/string.ops/string_compare/string.pass.cpp +++ /dev/null @@ -1,85 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// <string> - -// int compare(const basic_string& str) const - -#include <string> -#include <cassert> - -#include "test_macros.h" -#include "min_allocator.h" - -int sign(int x) -{ - if (x == 0) - return 0; - if (x < 0) - return -1; - return 1; -} - -template <class S> -void -test(const S& s, const S& str, int x) -{ - assert(sign(s.compare(str)) == sign(x)); -} - -int main() -{ - { - typedef std::string S; - test(S(""), S(""), 0); - test(S(""), S("abcde"), -5); - test(S(""), S("abcdefghij"), -10); - test(S(""), S("abcdefghijklmnopqrst"), -20); - test(S("abcde"), S(""), 5); - test(S("abcde"), S("abcde"), 0); - test(S("abcde"), S("abcdefghij"), -5); - test(S("abcde"), S("abcdefghijklmnopqrst"), -15); - test(S("abcdefghij"), S(""), 10); - test(S("abcdefghij"), S("abcde"), 5); - test(S("abcdefghij"), S("abcdefghij"), 0); - test(S("abcdefghij"), S("abcdefghijklmnopqrst"), -10); - test(S("abcdefghijklmnopqrst"), S(""), 20); - test(S("abcdefghijklmnopqrst"), S("abcde"), 15); - test(S("abcdefghijklmnopqrst"), S("abcdefghij"), 10); - test(S("abcdefghijklmnopqrst"), S("abcdefghijklmnopqrst"), 0); - } -#if TEST_STD_VER >= 11 - { - typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S; - test(S(""), S(""), 0); - test(S(""), S("abcde"), -5); - test(S(""), S("abcdefghij"), -10); - test(S(""), S("abcdefghijklmnopqrst"), -20); - test(S("abcde"), S(""), 5); - test(S("abcde"), S("abcde"), 0); - test(S("abcde"), S("abcdefghij"), -5); - test(S("abcde"), S("abcdefghijklmnopqrst"), -15); - test(S("abcdefghij"), S(""), 10); - test(S("abcdefghij"), S("abcde"), 5); - test(S("abcdefghij"), S("abcdefghij"), 0); - test(S("abcdefghij"), S("abcdefghijklmnopqrst"), -10); - test(S("abcdefghijklmnopqrst"), S(""), 20); - test(S("abcdefghijklmnopqrst"), S("abcde"), 15); - test(S("abcdefghijklmnopqrst"), S("abcdefghij"), 10); - test(S("abcdefghijklmnopqrst"), S("abcdefghijklmnopqrst"), 0); - } -#endif - -#if TEST_STD_VER > 3 - { // LWG 2946 - std::string s = " !"; - assert(s.compare({"abc", 1}) < 0); - } -#endif -} diff --git a/test/std/strings/basic.string/string.ops/string_compare/string_view.pass.cpp b/test/std/strings/basic.string/string.ops/string_compare/string_view.pass.cpp deleted file mode 100644 index 8f0d48884d74..000000000000 --- a/test/std/strings/basic.string/string.ops/string_compare/string_view.pass.cpp +++ /dev/null @@ -1,79 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// <string> - -// int compare(const basic_string_view sv) const - -#include <string> -#include <cassert> - -#include "min_allocator.h" - -int sign(int x) -{ - if (x == 0) - return 0; - if (x < 0) - return -1; - return 1; -} - -template <class S, class SV> -void -test(const S& s, SV sv, int x) -{ - assert(sign(s.compare(sv)) == sign(x)); -} - -int main() -{ - { - typedef std::string S; - typedef std::string_view SV; - test(S(""), SV(""), 0); - test(S(""), SV("abcde"), -5); - test(S(""), SV("abcdefghij"), -10); - test(S(""), SV("abcdefghijklmnopqrst"), -20); - test(S("abcde"), SV(""), 5); - test(S("abcde"), SV("abcde"), 0); - test(S("abcde"), SV("abcdefghij"), -5); - test(S("abcde"), SV("abcdefghijklmnopqrst"), -15); - test(S("abcdefghij"), SV(""), 10); - test(S("abcdefghij"), SV("abcde"), 5); - test(S("abcdefghij"), SV("abcdefghij"), 0); - test(S("abcdefghij"), SV("abcdefghijklmnopqrst"), -10); - test(S("abcdefghijklmnopqrst"), SV(""), 20); - test(S("abcdefghijklmnopqrst"), SV("abcde"), 15); - test(S("abcdefghijklmnopqrst"), SV("abcdefghij"), 10); - test(S("abcdefghijklmnopqrst"), SV("abcdefghijklmnopqrst"), 0); - } -#if TEST_STD_VER >= 11 - { - typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S; - typedef std::string_view SV; - test(S(""), SV(""), 0); - test(S(""), SV("abcde"), -5); - test(S(""), SV("abcdefghij"), -10); - test(S(""), SV("abcdefghijklmnopqrst"), -20); - test(S("abcde"), SV(""), 5); - test(S("abcde"), SV("abcde"), 0); - test(S("abcde"), SV("abcdefghij"), -5); - test(S("abcde"), SV("abcdefghijklmnopqrst"), -15); - test(S("abcdefghij"), SV(""), 10); - test(S("abcdefghij"), SV("abcde"), 5); - test(S("abcdefghij"), SV("abcdefghij"), 0); - test(S("abcdefghij"), SV("abcdefghijklmnopqrst"), -10); - test(S("abcdefghijklmnopqrst"), SV(""), 20); - test(S("abcdefghijklmnopqrst"), SV("abcde"), 15); - test(S("abcdefghijklmnopqrst"), SV("abcdefghij"), 10); - test(S("abcdefghijklmnopqrst"), SV("abcdefghijklmnopqrst"), 0); - } -#endif -} |
