diff --git a/CMakeLists.txt b/CMakeLists.txt index da12f05..2870873 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ # Distributed under the Boost Software License, Version 1.0. (See accompanying # file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) # -# Official repository: https://github.com/boostorg/fixed_string +# Official repository: https://github.com/boostorg/static_string # cmake_minimum_required (VERSION 3.5.1) @@ -36,11 +36,11 @@ endfunction() #------------------------------------------------------------------------------- # -# FixedString +# StaticString # #------------------------------------------------------------------------------- -project (FixedString VERSION 1) +project (StaticString VERSION 1) set_property (GLOBAL PROPERTY USE_FOLDERS ON) @@ -145,8 +145,8 @@ endif() #include_directories (.) file (GLOB_RECURSE PROJECT_FILES - ${PROJECT_SOURCE_DIR}/include/boost/fixed_string/*.hpp - ${PROJECT_SOURCE_DIR}/include/boost/fixed_string/*.ipp + ${PROJECT_SOURCE_DIR}/include/boost/static_string/*.hpp + ${PROJECT_SOURCE_DIR}/include/boost/static_string/*.ipp ) add_subdirectory (test) diff --git a/Jamfile b/Jamfile index 3dd5830..306f0f6 100644 --- a/Jamfile +++ b/Jamfile @@ -4,7 +4,7 @@ # Distributed under the Boost Software License, Version 1.0. (See accompanying # file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) # -# Official repository: https://github.com/boostorg/fixed_string +# Official repository: https://github.com/boostorg/static_string # build-project test ; diff --git a/README.md b/README.md index aa47c9e..ea8d193 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,8 @@ Branch | Travis | Appveyor | Azure Pipelines | codecov.io | Docs | Matrix | :-------------: | ------ | -------- | --------------- | ---------- | ---- | ------ | -[`master`](https://github.com/18/static_string/tree/master) | [![Build Status](https://travis-ci.org/18/static_string.svg?branch=master)](https://travis-ci.org/18/static_string) | [![Build status](https://ci.appveyor.com/api/projects/status/64es4wg4w7mc5wn2/branch/master?svg=true)](https://ci.appveyor.com/project/1847325/fixed-string/branch/master) | [![Build Status](https://dev.azure.com/vinniefalco/fixed-string/_apis/build/status/pipeline?branchName=master)](https://dev.azure.com/vinniefalco/fixed-string/_build/latest?definitionId=6&branchName=master) | [![codecov](https://codecov.io/gh/18/static_string/branch/master/graph/badge.svg)](https://codecov.io/gh/18/static_string/branch/master) | [![Documentation](https://img.shields.io/badge/docs-master-brightgreen.svg)](https://18.github.io/doc/static_string) | [![Matrix](https://img.shields.io/badge/matrix-master-brightgreen.svg)](http://www.boost.org/development/tests/master/developer/static_string.html) -[`develop`](https://github.com/18/static_string/tree/develop) | [![Build Status](https://travis-ci.org/18/static_string.svg?branch=develop)](https://travis-ci.org/18/static_string) | [![Build status](https://ci.appveyor.com/api/projects/status/64es4wg4w7mc5wn2/branch/develop?svg=true)](https://ci.appveyor.com/project/1847325/fixed-string/branch/develop) | [![Build Status](https://dev.azure.com/vinniefalco/fixed-string/_apis/build/status/pipeline?branchName=develop)](https://dev.azure.com/vinniefalco/fixed-string/_build/latest?definitionId=6&branchName=master) | [![codecov](https://codecov.io/gh/18/static_string/branch/develop/graph/badge.svg)](https://codecov.io/gh/18/static_string/branch/develop) | [![Documentation](https://img.shields.io/badge/docs-develop-brightgreen.svg)](http://www.boost.org/doc/libs/develop/doc/html/static_string.html) | [![Matrix](https://img.shields.io/badge/matrix-develop-brightgreen.svg)](http://www.boost.org/development/tests/develop/developer/static_string.html) +[`master`](https://github.com/18/static_string/tree/master) | [![Build Status](https://travis-ci.org/18/static_string.svg?branch=master)](https://travis-ci.org/18/static_string) | [![Build status](https://ci.appveyor.com/api/projects/status/64es4wg4w7mc5wn2/branch/master?svg=true)](https://ci.appveyor.com/project/1847325/static-string/branch/master) | [![Build Status](https://dev.azure.com/vinniefalco/fixed-string/_apis/build/status/pipeline?branchName=master)](https://dev.azure.com/vinniefalco/fixed-string/_build/latest?definitionId=6&branchName=master) | [![codecov](https://codecov.io/gh/18/static_string/branch/master/graph/badge.svg)](https://codecov.io/gh/18/static_string/branch/master) | [![Documentation](https://img.shields.io/badge/docs-master-brightgreen.svg)](https://18.github.io/doc/static_string) | [![Matrix](https://img.shields.io/badge/matrix-master-brightgreen.svg)](http://www.boost.org/development/tests/master/developer/static_string.html) +[`develop`](https://github.com/18/static_string/tree/develop) | [![Build Status](https://travis-ci.org/18/static_string.svg?branch=develop)](https://travis-ci.org/18/static_string) | [![Build status](https://ci.appveyor.com/api/projects/status/64es4wg4w7mc5wn2/branch/develop?svg=true)](https://ci.appveyor.com/project/1847325/static-string/branch/develop) | [![Build Status](https://dev.azure.com/vinniefalco/fixed-string/_apis/build/status/pipeline?branchName=develop)](https://dev.azure.com/vinniefalco/fixed-string/_build/latest?definitionId=6&branchName=master) | [![codecov](https://codecov.io/gh/18/static_string/branch/develop/graph/badge.svg)](https://codecov.io/gh/18/static_string/branch/develop) | [![Documentation](https://img.shields.io/badge/docs-develop-brightgreen.svg)](http://www.boost.org/doc/libs/develop/doc/html/static_string.html) | [![Matrix](https://img.shields.io/badge/matrix-develop-brightgreen.svg)](http://www.boost.org/development/tests/develop/developer/static_string.html) ## Introduction diff --git a/doc/Jamfile b/doc/Jamfile index ee05789..23c5887 100644 --- a/doc/Jamfile +++ b/doc/Jamfile @@ -5,7 +5,7 @@ # file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) # -project fixed_string/doc ; +project static_string/doc ; import os ; import path ; @@ -23,7 +23,7 @@ import saxonhe ; # docs can be rebuild if any of the header files change. # -local sources = [ path.glob-tree ../include/boost/fixed_string : *.hpp *.ipp : detail impl ] ; +local sources = [ path.glob-tree ../include/boost/static_string : *.hpp *.ipp : detail impl ] ; # Get the configured paths to doxygen and xsltproc @@ -148,12 +148,12 @@ install qbk : reference.qbk ; install images : : - html/fixed_string/images + html/static_string/images ; explicit images ; -xml fixed_string_doc +xml static_string_doc : qbk/main.qbk : @@ -161,7 +161,7 @@ xml fixed_string_doc qbk ; -explicit fixed_string_doc ; +explicit static_string_doc ; #------------------------------------------------------------------------------- # @@ -169,9 +169,9 @@ explicit fixed_string_doc ; # #------------------------------------------------------------------------------- -boostbook fixed_string +boostbook static_string : - fixed_string_doc + static_string_doc : boost.root=../../../.. chapter.autolabel=1 @@ -195,5 +195,5 @@ boostbook fixed_string alias boostdoc ; explicit boostdoc ; -alias boostrelease : fixed_string ; +alias boostrelease : static_string ; explicit boostrelease ; diff --git a/doc/qbk/index.xml b/doc/qbk/index.xml index 6d0602b..a772a3d 100644 --- a/doc/qbk/index.xml +++ b/doc/qbk/index.xml @@ -7,10 +7,10 @@ Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - Official repository: https://github.com/boostorg/fixed_string + Official repository: https://github.com/boostorg/static_string --> -
+
Index
diff --git a/doc/qbk/main.qbk b/doc/qbk/main.qbk index 0fb85bc..1a543b7 100644 --- a/doc/qbk/main.qbk +++ b/doc/qbk/main.qbk @@ -5,11 +5,11 @@ Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - Official repository: https://github.com/boostorg/fixed_string + Official repository: https://github.com/boostorg/static_string ] -[library Boost.FixedString - [id fixed_string] +[library Boost.StaticString + [id static_string] [quickbook 1.6] [copyright 2016 - 2019 Vinnie Falco] [copyright 2019 Krystian Stasiowski] @@ -30,7 +30,6 @@ [template path_link[path name] ''''''[name]''''''] [template include_file[path][^<''''''[path]''''''>]] -[template issue[n] '''#'''[n]''''''] [def __InputIterator__ [@https://en.cppreference.com/w/cpp/named_req/InputIterator ['InputIterator]]] @@ -73,16 +72,16 @@ The over-arching design goal is to resemble the interface and behavior of maximum allowed size of the string, `std::length_error` is thrown. All algorithms which throw exceptions provide the strong exception safety guarantee. This is intended to be a drop in replacement for `std::string`. -All the operations for `fixed_string` work when the source is within the string itself. +All the operations for `static_string` work when the source is within the string itself. -The API of `fixed_string` only diverges from `std::string` in few places, -being `substr` for which this implementation returns a string view instead of `fixed_string`, +The API of `static_string` only diverges from `std::string` in few places, +being `substr` for which this implementation returns a string view instead of `static_string`, and certain functions that will never throw are marked as `noexcept`, which diverges from those of `std::string`. Every function that is in the C++20 specification of `std::string` is present in this implementation, with the only difference being the lack of `constexpr` -for the time being. The avaliable overloads for `fixed_string` are identical to those +for the time being. The avaliable overloads for `static_string` are identical to those of `std::string`, except for `operator+` which is explicitly deleted as no reasonable implementation -would be possible, due to the difficulty in determining the size of the resulting `fixed_string`. +would be possible, due to the difficulty in determining the size of the resulting `static_string`. [endsect] diff --git a/doc/qbk/quickref.xml b/doc/qbk/quickref.xml index 19b18ae..7467a19 100644 --- a/doc/qbk/quickref.xml +++ b/doc/qbk/quickref.xml @@ -7,7 +7,7 @@ Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - Official repository: https://github.com/boostorg/fixed_string + Official repository: https://github.com/boostorg/static_string --> diff --git a/doc/source.dox b/doc/source.dox index 91e475b..17c5cd1 100644 --- a/doc/source.dox +++ b/doc/source.dox @@ -3,7 +3,7 @@ #--------------------------------------------------------------------------- INPUT = \ - $(LIB_DIR)/include/boost/fixed_string + $(LIB_DIR)/include/boost/static_string ALIASES += esafe="@par Exception Safety" @@ -43,7 +43,7 @@ SKIP_FUNCTION_MACROS = YES # Project related configuration options #--------------------------------------------------------------------------- DOXYFILE_ENCODING = UTF-8 -PROJECT_NAME = "FixedString" +PROJECT_NAME = "StaticString" PROJECT_NUMBER = PROJECT_BRIEF = String Library PROJECT_LOGO = diff --git a/doc/xsl/config.xsl b/doc/xsl/config.xsl index c617866..348cbea 100644 --- a/doc/xsl/config.xsl +++ b/doc/xsl/config.xsl @@ -1,6 +1,6 @@ - - + + diff --git a/include/boost/fixed_string/config.hpp b/include/boost/fixed_string/config.hpp deleted file mode 100644 index dd3ed73..0000000 --- a/include/boost/fixed_string/config.hpp +++ /dev/null @@ -1,117 +0,0 @@ -// -// Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com) -// Copyright (c) 2019 Krystian Stasiowski (sdkrystian at gmail dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// -// Official repository: https://github.com/boostorg/fixed_string -// - -#ifndef BOOST_FIXED_STRING_CONFIG_HPP -#define BOOST_FIXED_STRING_CONFIG_HPP - -// Are we dependent on Boost? -// #define BOOST_FIXED_STRING_STANDALONE - -// Can we have deduction guides? -#ifdef __cpp_deduction_guides -#define BOOST_FIXED_STRING_USE_DEDUCT -#endif - -// Can we use [[nodiscard]]? -#ifdef __has_attribute -#if __has_attribute(nodiscard) -#define BOOST_FIXED_STRING_NODISCARD [[nodiscard]] -#else -#define BOOST_FIXED_STRING_NODISCARD -#endif -#else -#define BOOST_FIXED_STRING_NODISCARD -#endif - -//#undef _­_­cplusplus -//#define _­_­cplusplus 201703L - -#if __cplusplus > 201703L -#define BOOST_FIXED_STRING_CPP20_CXPER constexpr -#define BOOST_FIXED_STRING_CPP17_CXPER constexpr -#define BOOST_FIXED_STRING_CPP14_CXPER constexpr -#define BOOST_FIXED_STRING_CPP11_CXPER constexpr -#define BOOST_FIXED_STRING_CPP20_CXPER_USED -#define BOOST_FIXED_STRING_CPP17_CXPER_USED -#define BOOST_FIXED_STRING_CPP14_CXPER_USED -#define BOOST_FIXED_STRING_CPP11_CXPER_USED -#define BOOST_FIXED_STRING_ALLOW_UNINIT_MEM -#elif __cplusplus >= 201703L -#define BOOST_FIXED_STRING_CPP20_CXPER -#define BOOST_FIXED_STRING_CPP17_CXPER constexpr -#define BOOST_FIXED_STRING_CPP14_CXPER constexpr -#define BOOST_FIXED_STRING_CPP11_CXPER constexpr -#define BOOST_FIXED_STRING_CPP17_CXPER_USED -#define BOOST_FIXED_STRING_CPP14_CXPER_USED -#define BOOST_FIXED_STRING_CPP11_CXPER_USED -#elif __cplusplus >= 201402L -#define BOOST_FIXED_STRING_CPP20_CXPER -#define BOOST_FIXED_STRING_CPP17_CXPER -#define BOOST_FIXED_STRING_CPP14_CXPER constexpr -#define BOOST_FIXED_STRING_CPP11_CXPER constexpr -#define BOOST_FIXED_STRING_CPP14_CXPER_USED -#define BOOST_FIXED_STRING_CPP11_CXPER_USED -#else -#define BOOST_FIXED_STRING_CPP20_CXPER -#define BOOST_FIXED_STRING_CPP17_CXPER -#define BOOST_FIXED_STRING_CPP14_CXPER -#define BOOST_FIXED_STRING_CPP11_CXPER constexpr -#define BOOST_FIXED_STRING_CPP11_CXPER_USED -#endif - -#ifndef BOOST_FIXED_STRING_STANDALONE -#include -#include -#include -#include -#include -#else -#include -#include -#endif - -// Boost and non-Boost versions of utilities -#ifndef BOOST_FIXED_STRING_STANDALONE -#ifndef BOOST_FIXED_STRING_THROW -#define BOOST_FIXED_STRING_THROW(ex) BOOST_THROW_EXCEPTION(ex) -#endif -#ifndef BOOST_FIXED_STRING_STATIC_ASSERT -#define BOOST_FIXED_STRING_STATIC_ASSERT(cond, msg) BOOST_STATIC_ASSERT_MSG(cond, msg) -#endif -#ifndef BOOST_FIXED_STRING_ASSERT -#define BOOST_FIXED_STRING_ASSERT(cond) BOOST_ASSERT(cond) -#endif -#else -#ifndef BOOST_FIXED_STRING_THROW -#define BOOST_FIXED_STRING_THROW(ex) throw ex -#endif -#ifndef BOOST_FIXED_STRING_STATIC_ASSERT -#define BOOST_FIXED_STRING_STATIC_ASSERT(cond, msg) static_assert(cond, msg) -#endif -#ifndef BOOST_FIXED_STRING_ASSERT -#define BOOST_FIXED_STRING_ASSERT(cond) assert(cond) -#endif -#endif - -namespace boost { -namespace fixed_string { - -/// The type of `basic_string_view` used by the library -template -using basic_string_view = -#ifndef BOOST_FIXED_STRING_STANDALONE - boost::basic_string_view; -#else - std::basic_string_view; -#endif -} // fixed_string -} // boost - -#endif diff --git a/include/boost/static_string/config.hpp b/include/boost/static_string/config.hpp new file mode 100644 index 0000000..fcdebe6 --- /dev/null +++ b/include/boost/static_string/config.hpp @@ -0,0 +1,117 @@ +// +// Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com) +// Copyright (c) 2019 Krystian Stasiowski (sdkrystian at gmail dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Official repository: https://github.com/boostorg/static_string +// + +#ifndef BOOST_STATIC_STRING_CONFIG_HPP +#define BOOST_STATIC_STRING_CONFIG_HPP + +// Are we dependent on Boost? +// #define BOOST_STATIC_STRING_STANDALONE + +// Can we have deduction guides? +#ifdef __cpp_deduction_guides +#define BOOST_STATIC_STRING_USE_DEDUCT +#endif + +// Can we use [[nodiscard]]? +#ifdef __has_attribute +#if __has_attribute(nodiscard) +#define BOOST_STATIC_STRING_NODISCARD [[nodiscard]] +#else +#define BOOST_STATIC_STRING_NODISCARD +#endif +#else +#define BOOST_STATIC_STRING_NODISCARD +#endif + +//#undef _­_­cplusplus +//#define _­_­cplusplus 201703L + +#if __cplusplus > 201703L +#define BOOST_STATIC_STRING_CPP20_CONSTEXPR constexpr +#define BOOST_STATIC_STRING_CPP17_CONSTEXPR constexpr +#define BOOST_STATIC_STRING_CPP14_CONSTEXPR constexpr +#define BOOST_STATIC_STRING_CPP11_CONSTEXPR constexpr +#define BOOST_STATIC_STRING_CPP20_CONSTEXPR_USED +#define BOOST_STATIC_STRING_CPP17_CONSTEXPR_USED +#define BOOST_STATIC_STRING_CPP14_CONSTEXPR_USED +#define BOOST_STATIC_STRING_CPP11_CONSTEXPR_USED +#define BOOST_STATIC_STRING_ALLOW_UNINIT_MEM +#elif __cplusplus >= 201703L +#define BOOST_STATIC_STRING_CPP20_CONSTEXPR +#define BOOST_STATIC_STRING_CPP17_CONSTEXPR constexpr +#define BOOST_STATIC_STRING_CPP14_CONSTEXPR constexpr +#define BOOST_STATIC_STRING_CPP11_CONSTEXPR constexpr +#define BOOST_STATIC_STRING_CPP17_CONSTEXPR_USED +#define BOOST_STATIC_STRING_CPP14_CONSTEXPR_USED +#define BOOST_STATIC_STRING_CPP11_CONSTEXPR_USED +#elif __cplusplus >= 201402L +#define BOOST_STATIC_STRING_CPP20_CONSTEXPR +#define BOOST_STATIC_STRING_CPP17_CONSTEXPR +#define BOOST_STATIC_STRING_CPP14_CONSTEXPR constexpr +#define BOOST_STATIC_STRING_CPP11_CONSTEXPR constexpr +#define BOOST_STATIC_STRING_CPP14_CONSTEXPR_USED +#define BOOST_STATIC_STRING_CPP11_CONSTEXPR_USED +#else +#define BOOST_STATIC_STRING_CPP20_CONSTEXPR +#define BOOST_STATIC_STRING_CPP17_CONSTEXPR +#define BOOST_STATIC_STRING_CPP14_CONSTEXPR +#define BOOST_STATIC_STRING_CPP11_CONSTEXPR constexpr +#define BOOST_STATIC_STRING_CPP11_CONSTEXPR_USED +#endif + +#ifndef BOOST_STATIC_STRING_STANDALONE +#include +#include +#include +#include +#include +#else +#include +#include +#endif + +// Boost and non-Boost versions of utilities +#ifndef BOOST_STATIC_STRING_STANDALONE +#ifndef BOOST_STATIC_STRING_THROW +#define BOOST_STATIC_STRING_THROW(ex) BOOST_THROW_EXCEPTION(ex) +#endif +#ifndef BOOST_STATIC_STRING_STATIC_ASSERT +#define BOOST_STATIC_STRING_STATIC_ASSERT(cond, msg) BOOST_STATIC_ASSERT_MSG(cond, msg) +#endif +#ifndef BOOST_STATIC_STRING_ASSERT +#define BOOST_STATIC_STRING_ASSERT(cond) BOOST_ASSERT(cond) +#endif +#else +#ifndef BOOST_STATIC_STRING_THROW +#define BOOST_STATIC_STRING_THROW(ex) throw ex +#endif +#ifndef BOOST_STATIC_STRING_STATIC_ASSERT +#define BOOST_STATIC_STRING_STATIC_ASSERT(cond, msg) static_assert(cond, msg) +#endif +#ifndef BOOST_STATIC_STRING_ASSERT +#define BOOST_STATIC_STRING_ASSERT(cond) assert(cond) +#endif +#endif + +namespace boost { +namespace static_string { + +/// The type of `basic_string_view` used by the library +template +using basic_string_view = +#ifndef BOOST_STATIC_STRING_STANDALONE + boost::basic_string_view; +#else + std::basic_string_view; +#endif +} // static_string +} // boost + +#endif diff --git a/include/boost/fixed_string/detail/fixed_string.hpp b/include/boost/static_string/detail/static_string.hpp similarity index 76% rename from include/boost/fixed_string/detail/fixed_string.hpp rename to include/boost/static_string/detail/static_string.hpp index 323086f..8beb0a4 100644 --- a/include/boost/fixed_string/detail/fixed_string.hpp +++ b/include/boost/static_string/detail/static_string.hpp @@ -5,23 +5,23 @@ // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // -// Official repository: https://github.com/boostorg/fixed_string +// Official repository: https://github.com/boostorg/static_string // -#ifndef BOOST_FIXED_STRING_DETAIL_FIXED_STRING_HPP -#define BOOST_FIXED_STRING_DETAIL_FIXED_STRING_HPP +#ifndef BOOST_STATIC_STRING_DETAIL_STATIC_STRING_HPP +#define BOOST_STATIC_STRING_DETAIL_STATIC_STRING_HPP -#include +#include #include #include #include namespace boost { -namespace fixed_string { +namespace static_string { namespace detail { template -class fixed_string; +class basic_static_string; // At minimum an integral type shall not qualify as an iterator (Agustin Berge) template @@ -41,44 +41,44 @@ using smallest_width = // Optimization for using the smallest possible type template -class fixed_string_base_zero +class static_string_base_zero { public: - BOOST_FIXED_STRING_CPP11_CXPER - fixed_string_base_zero() noexcept { }; + BOOST_STATIC_STRING_CPP11_CONSTEXPR + static_string_base_zero() noexcept { }; - BOOST_FIXED_STRING_CPP11_CXPER - fixed_string_base_zero(std::size_t n) noexcept : size_(n) { } + BOOST_STATIC_STRING_CPP11_CONSTEXPR + static_string_base_zero(std::size_t n) noexcept : size_(n) { } - BOOST_FIXED_STRING_CPP14_CXPER + BOOST_STATIC_STRING_CPP14_CONSTEXPR CharT* data_impl() noexcept { return data_; } - BOOST_FIXED_STRING_CPP14_CXPER + BOOST_STATIC_STRING_CPP14_CONSTEXPR CharT const* data_impl() const noexcept { return data_; } - BOOST_FIXED_STRING_CPP11_CXPER + BOOST_STATIC_STRING_CPP11_CONSTEXPR std::size_t size_impl() const noexcept { return size_; } - BOOST_FIXED_STRING_CPP14_CXPER + BOOST_STATIC_STRING_CPP14_CONSTEXPR std::size_t set_size(std::size_t n) noexcept { return size_ = n; } - BOOST_FIXED_STRING_CPP14_CXPER + BOOST_STATIC_STRING_CPP14_CONSTEXPR void term_impl() noexcept { @@ -86,7 +86,7 @@ public: } smallest_width size_{0}; -#ifdef BOOST_FIXED_STRING_ALLOW_UNINIT_MEM +#ifdef BOOST_STATIC_STRING_ALLOW_UNINIT_MEM CharT data_[N + 1]; #else CharT data_[N + 1]{}; @@ -95,14 +95,14 @@ public: // Optimization for when the size is 0 template -class fixed_string_base_zero<0, CharT, Traits> +class static_string_base_zero<0, CharT, Traits> { public: - BOOST_FIXED_STRING_CPP11_CXPER - fixed_string_base_zero() noexcept { } + BOOST_STATIC_STRING_CPP11_CONSTEXPR + static_string_base_zero() noexcept { } - BOOST_FIXED_STRING_CPP11_CXPER - fixed_string_base_zero(std::size_t) noexcept { } + BOOST_STATIC_STRING_CPP11_CONSTEXPR + static_string_base_zero(std::size_t) noexcept { } // not possible to constexpr with the static there CharT* @@ -112,21 +112,21 @@ public: return &null; } - BOOST_FIXED_STRING_CPP11_CXPER + BOOST_STATIC_STRING_CPP11_CONSTEXPR std::size_t size_impl() const noexcept { return 0; } - BOOST_FIXED_STRING_CPP11_CXPER + BOOST_STATIC_STRING_CPP11_CONSTEXPR std::size_t set_size(std::size_t) noexcept { return 0; } - BOOST_FIXED_STRING_CPP14_CXPER + BOOST_STATIC_STRING_CPP14_CONSTEXPR void term_impl() noexcept { @@ -136,58 +136,58 @@ public: // Optimization for storing the size in the last element template -class fixed_string_base_null +class static_string_base_null { public: - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string_base_null() noexcept { set_size(0); } + BOOST_STATIC_STRING_CPP14_CONSTEXPR + static_string_base_null() noexcept { set_size(0); } - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string_base_null(std::size_t n) noexcept { set_size(n); } + BOOST_STATIC_STRING_CPP14_CONSTEXPR + static_string_base_null(std::size_t n) noexcept { set_size(n); } - BOOST_FIXED_STRING_CPP14_CXPER + BOOST_STATIC_STRING_CPP14_CONSTEXPR CharT* data_impl() noexcept { return data_; } - BOOST_FIXED_STRING_CPP14_CXPER + BOOST_STATIC_STRING_CPP14_CONSTEXPR CharT const* data_impl() const noexcept { return data_; } - BOOST_FIXED_STRING_CPP11_CXPER + BOOST_STATIC_STRING_CPP11_CONSTEXPR std::size_t size_impl() const noexcept { return N - data_[N]; } - BOOST_FIXED_STRING_CPP14_CXPER + BOOST_STATIC_STRING_CPP14_CONSTEXPR std::size_t set_size(std::size_t n) noexcept { return data_[N] = (N - n); } - BOOST_FIXED_STRING_CPP14_CXPER + BOOST_STATIC_STRING_CPP14_CONSTEXPR void term_impl() noexcept { Traits::assign(data_[size_impl()], 0); } -#ifdef BOOST_FIXED_STRING_ALLOW_UNINIT_MEM +#ifdef BOOST_STATIC_STRING_ALLOW_UNINIT_MEM CharT data_[N + 1]; #else CharT data_[N + 1]{}; #endif }; -//#define BOOST_FIXED_STRING_NO_NULL_OPTIMIZATION +//#define BOOST_STATIC_STRING_NO_NULL_OPTIMIZATION // Decides which size optimization to use // If the size is zero, the object will have no members @@ -195,12 +195,12 @@ public: // Otherwise, store the size of the string using a member of the smallest type possible template using optimization_base = -#ifndef BOOST_FIXED_STRING_NO_NULL_OPTIMIZATION +#ifndef BOOST_STATIC_STRING_NO_NULL_OPTIMIZATION typename std::conditional<(N <= (std::numeric_limits::max)()) && (N != 0), - fixed_string_base_null, - fixed_string_base_zero>::type; + static_string_base_null, + static_string_base_zero>::type; #else - fixed_string_base_zero; + static_string_base_zero; #endif template @@ -234,7 +234,7 @@ template inline int lexicographical_compare( - const fixed_string& s1, + const basic_static_string& s1, CharT const* s2, std::size_t n2) { return detail::lexicographical_compare< @@ -256,8 +256,8 @@ template inline int lexicographical_compare( - const fixed_string& s1, - const fixed_string& s2) + const basic_static_string& s1, + const basic_static_string& s2) { return detail::lexicographical_compare( s1.data(), s1.size(), s2.data(), s2.size()); @@ -326,7 +326,7 @@ inline CharT* raw_to_string(CharT* last, std::size_t size, Integer i) { - BOOST_FIXED_STRING_ASSERT(size >= max_digits(sizeof(Integer))); + BOOST_STATIC_STRING_ASSERT(size >= max_digits(sizeof(Integer))); return raw_to_string( last, i, std::is_signed{}); } @@ -347,7 +347,7 @@ find_not_of( } } // detail -} // fixed_string +} // static_string } // boost #endif diff --git a/include/boost/fixed_string/impl/fixed_string.hpp b/include/boost/static_string/impl/static_string.hpp similarity index 71% rename from include/boost/fixed_string/impl/fixed_string.hpp rename to include/boost/static_string/impl/static_string.hpp index 8ede83e..c4b1034 100644 --- a/include/boost/fixed_string/impl/fixed_string.hpp +++ b/include/boost/static_string/impl/static_string.hpp @@ -5,17 +5,17 @@ // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // -// Official repository: https://github.com/boostorg/fixed_string +// Official repository: https://github.com/boostorg/static_string // -#ifndef BOOST_FIXED_STRING_IMPL_FIXED_STRING_HPP -#define BOOST_FIXED_STRING_IMPL_FIXED_STRING_HPP +#ifndef BOOST_STATIC_STRING_IMPL_STATIC_STRING_HPP +#define BOOST_STATIC_STRING_IMPL_STATIC_STRING_HPP -#include -#include +#include +#include namespace boost { -namespace fixed_string { +namespace static_string { //------------------------------------------------------------------------------ // @@ -24,28 +24,28 @@ namespace fixed_string { //------------------------------------------------------------------------------ template -BOOST_FIXED_STRING_CPP11_CXPER -fixed_string:: -fixed_string() noexcept +BOOST_STATIC_STRING_CPP11_CONSTEXPR +basic_static_string:: +basic_static_string() noexcept { -#ifdef BOOST_FIXED_STRING_CPP20_CXPER_USED +#ifdef BOOST_STATIC_STRING_CPP20_CONSTEXPR_USED term(); #endif } template -BOOST_FIXED_STRING_CPP14_CXPER -fixed_string:: -fixed_string(size_type count, CharT ch) +BOOST_STATIC_STRING_CPP14_CONSTEXPR +basic_static_string:: +basic_static_string(size_type count, CharT ch) { assign(count, ch); } template template -BOOST_FIXED_STRING_CPP14_CXPER -fixed_string:: -fixed_string(fixed_string const& other, +BOOST_STATIC_STRING_CPP14_CONSTEXPR +basic_static_string:: +basic_static_string(basic_static_string const& other, size_type pos) { assign(other, pos); @@ -53,10 +53,10 @@ fixed_string(fixed_string const& other, template template -BOOST_FIXED_STRING_CPP14_CXPER -fixed_string:: -fixed_string( - fixed_string const& other, +BOOST_STATIC_STRING_CPP14_CONSTEXPR +basic_static_string:: +basic_static_string( + basic_static_string const& other, size_type pos, size_type count) { @@ -64,21 +64,21 @@ fixed_string( } template -BOOST_FIXED_STRING_CPP14_CXPER -fixed_string:: -fixed_string(CharT const* s, size_type count) +BOOST_STATIC_STRING_CPP14_CONSTEXPR +basic_static_string:: +basic_static_string(CharT const* s, size_type count) { assign(s, count); } template -BOOST_FIXED_STRING_CPP14_CXPER -fixed_string:: -fixed_string(CharT const* s) +BOOST_STATIC_STRING_CPP14_CONSTEXPR +basic_static_string:: +basic_static_string(CharT const* s) { auto const count = Traits::length(s); if(count > max_size()) - BOOST_FIXED_STRING_THROW(std::length_error{ + BOOST_STATIC_STRING_THROW(std::length_error{ "count > max_size()"}); this->set_size(count); Traits::copy(data(), s, size() + 1); @@ -86,9 +86,9 @@ fixed_string(CharT const* s) template template -BOOST_FIXED_STRING_CPP14_CXPER -fixed_string:: -fixed_string( +BOOST_STATIC_STRING_CPP14_CONSTEXPR +basic_static_string:: +basic_static_string( InputIterator first, InputIterator last, typename std::enable_if< @@ -99,45 +99,45 @@ fixed_string( } template -BOOST_FIXED_STRING_CPP14_CXPER -fixed_string:: -fixed_string( - fixed_string const& s) noexcept +BOOST_STATIC_STRING_CPP14_CONSTEXPR +basic_static_string:: +basic_static_string( + basic_static_string const& s) noexcept { assign(s); } template template -BOOST_FIXED_STRING_CPP14_CXPER -fixed_string:: -fixed_string( - fixed_string const& s) +BOOST_STATIC_STRING_CPP14_CONSTEXPR +basic_static_string:: +basic_static_string( + basic_static_string const& s) { assign(s); } template -BOOST_FIXED_STRING_CPP14_CXPER -fixed_string:: -fixed_string(std::initializer_list init) +BOOST_STATIC_STRING_CPP14_CONSTEXPR +basic_static_string:: +basic_static_string(std::initializer_list init) { assign(init.begin(), init.end()); } template -BOOST_FIXED_STRING_CPP14_CXPER -fixed_string:: -fixed_string(string_view_type sv) +BOOST_STATIC_STRING_CPP14_CONSTEXPR +basic_static_string:: +basic_static_string(string_view_type sv) { assign(sv); } template template -BOOST_FIXED_STRING_CPP14_CXPER -fixed_string:: -fixed_string(T const& t, size_type pos, size_type n) +BOOST_STATIC_STRING_CPP14_CONSTEXPR +basic_static_string:: +basic_static_string(T const& t, size_type pos, size_type n) { assign(t, pos, n); } @@ -149,16 +149,16 @@ fixed_string(T const& t, size_type pos, size_type n) //------------------------------------------------------------------------------ template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR auto -fixed_string:: +basic_static_string:: assign( size_type count, CharT ch) -> - fixed_string& + basic_static_string& { if(count > max_size()) - BOOST_FIXED_STRING_THROW(std::length_error{ + BOOST_STATIC_STRING_THROW(std::length_error{ "count > max_size()"}); this->set_size(count); Traits::assign(data(), size(), ch); @@ -167,12 +167,12 @@ assign( } template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR auto -fixed_string:: +basic_static_string:: assign( - fixed_string const& s) noexcept -> - fixed_string& + basic_static_string const& s) noexcept -> + basic_static_string& { if(this == &s) return *this; @@ -186,30 +186,30 @@ assign( template template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR auto -fixed_string:: +basic_static_string:: assign( - fixed_string const& s, + basic_static_string const& s, size_type pos, size_type count) -> - fixed_string& + basic_static_string& { auto const ss = s.subview(pos, count); return assign(ss.data(), ss.size()); } template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR auto -fixed_string:: +basic_static_string:: assign( CharT const* s, size_type count) -> - fixed_string& + basic_static_string& { if(count > max_size()) - BOOST_FIXED_STRING_THROW(std::length_error{ + BOOST_STATIC_STRING_THROW(std::length_error{ "count > max_size()"}); this->set_size(count); Traits::move(data(), s, size()); @@ -219,19 +219,19 @@ assign( template template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR auto -fixed_string:: +basic_static_string:: assign( InputIterator first, InputIterator last) -> typename std::enable_if< detail::is_input_iterator::value, - fixed_string&>::type + basic_static_string&>::type { std::size_t const n = std::distance(first, last); if(n > max_size()) - BOOST_FIXED_STRING_THROW(std::length_error{ + BOOST_STATIC_STRING_THROW(std::length_error{ "n > max_size()"}); this->set_size(n); for(auto it = data(); first != last; ++it, ++first) @@ -247,27 +247,27 @@ assign( //------------------------------------------------------------------------------ template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR auto -fixed_string:: +basic_static_string:: at(size_type pos) -> reference { if(pos >= size()) - BOOST_FIXED_STRING_THROW(std::out_of_range{ + BOOST_STATIC_STRING_THROW(std::out_of_range{ "pos >= size()"}); return data()[pos]; } template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR auto -fixed_string:: +basic_static_string:: at(size_type pos) const -> const_reference { if(pos >= size()) - BOOST_FIXED_STRING_THROW(std::out_of_range{ + BOOST_STATIC_STRING_THROW(std::out_of_range{ "pos >= size()"}); return data()[pos]; } @@ -279,13 +279,13 @@ at(size_type pos) const -> //------------------------------------------------------------------------------ template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR void -fixed_string:: +basic_static_string:: reserve(std::size_t n) { if(n > max_size()) - BOOST_FIXED_STRING_THROW(std::length_error{ + BOOST_STATIC_STRING_THROW(std::length_error{ "n > max_size()"}); } @@ -296,9 +296,9 @@ reserve(std::size_t n) //------------------------------------------------------------------------------ template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR void -fixed_string:: +basic_static_string:: clear() noexcept { this->set_size(0); @@ -308,39 +308,39 @@ clear() noexcept //------------------------------------------------------------------------------ template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR auto -fixed_string:: +basic_static_string:: insert( size_type index, size_type count, CharT ch) -> - fixed_string& + basic_static_string& { if(index > size()) - BOOST_FIXED_STRING_THROW(std::out_of_range{ + BOOST_STATIC_STRING_THROW(std::out_of_range{ "index > size()"}); insert(begin() + index, count, ch); return *this; } template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR auto -fixed_string:: +basic_static_string:: insert( size_type index, CharT const* s, size_type count) -> - fixed_string& + basic_static_string& { const auto curr_size = size(); const auto curr_data = data(); if(index > curr_size) - BOOST_FIXED_STRING_THROW(std::out_of_range{ + BOOST_STATIC_STRING_THROW(std::out_of_range{ "index > size()"}); if(count > max_size() - curr_size) - BOOST_FIXED_STRING_THROW(std::length_error{ + BOOST_STATIC_STRING_THROW(std::length_error{ "size() + count > max_size()"}); const bool inside = s <= &curr_data[curr_size] && s >= curr_data; if (!inside || (inside && ((s - curr_data) + count <= index))) @@ -368,9 +368,9 @@ insert( } template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR auto -fixed_string:: +basic_static_string:: insert( const_iterator pos, size_type count, @@ -380,7 +380,7 @@ insert( const auto curr_size = size(); const auto curr_data = data(); if(count > max_size() - curr_size) - BOOST_FIXED_STRING_THROW(std::length_error{ + BOOST_STATIC_STRING_THROW(std::length_error{ "size() + count() > max_size()"}); auto const index = pos - curr_data; Traits::move(&curr_data[index + count], &curr_data[index], curr_size - index); @@ -392,9 +392,9 @@ insert( template template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR auto -fixed_string:: +basic_static_string:: insert( const_iterator pos, InputIterator first, @@ -409,9 +409,9 @@ insert( template template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR auto -fixed_string:: +basic_static_string:: insert( size_type index, T const & t) -> @@ -419,7 +419,7 @@ insert( std::is_convertible< T const&, string_view_type>::value && ! std::is_convertible< - T const&, CharT const*>::value, fixed_string& + T const&, CharT const*>::value, basic_static_string& >::type { return insert(index, t, 0, npos); @@ -427,9 +427,9 @@ insert( template template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR auto -fixed_string:: +basic_static_string:: insert( size_type index, T const & t, @@ -439,7 +439,7 @@ insert( std::is_convertible< T const&, string_view_type>::value && ! std::is_convertible< - T const&, CharT const*>::value, fixed_string& + T const&, CharT const*>::value, basic_static_string& >::type { auto const s = @@ -450,18 +450,18 @@ insert( //------------------------------------------------------------------------------ template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR auto -fixed_string:: +basic_static_string:: erase( size_type index, size_type count) -> - fixed_string& + basic_static_string& { const auto curr_size = size(); const auto curr_data = data(); if(index > curr_size) - BOOST_FIXED_STRING_THROW(std::out_of_range{ + BOOST_STATIC_STRING_THROW(std::out_of_range{ "index > size()"}); auto const n = (std::min)(count, curr_size - index); Traits::move(&curr_data[index], &curr_data[index + n], curr_size - (index + n) + 1); @@ -470,9 +470,9 @@ erase( } template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR auto -fixed_string:: +basic_static_string:: erase( const_iterator pos) -> iterator @@ -482,9 +482,9 @@ erase( } template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR auto -fixed_string:: +basic_static_string:: erase( const_iterator first, const_iterator last) -> @@ -496,15 +496,15 @@ erase( } template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR void -fixed_string:: +basic_static_string:: push_back( CharT ch) { const auto curr_size = size(); if(curr_size >= max_size()) - BOOST_FIXED_STRING_THROW(std::length_error{ + BOOST_STATIC_STRING_THROW(std::length_error{ "size() >= max_size()"}); Traits::assign(data()[curr_size], ch); this->set_size(curr_size + 1); @@ -512,17 +512,17 @@ push_back( } template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR auto -fixed_string:: +basic_static_string:: append( CharT const* s, size_type count) -> - fixed_string& + basic_static_string& { const auto curr_size = size(); if(count > max_size() - curr_size) - BOOST_FIXED_STRING_THROW(std::length_error{ + BOOST_STATIC_STRING_THROW(std::length_error{ "size() + count > max_size()"}); Traits::copy(&data()[curr_size], s, count); this->set_size(curr_size + count); @@ -531,35 +531,35 @@ append( } template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR auto -fixed_string:: +basic_static_string:: substr(size_type pos, size_type count) const -> - fixed_string + basic_static_string { if(pos > size()) - BOOST_FIXED_STRING_THROW(std::out_of_range{ + BOOST_STATIC_STRING_THROW(std::out_of_range{ "pos > size()"}); return {&data()[pos], (std::min)(count, size() - pos)}; } template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR auto -fixed_string:: +basic_static_string:: subview(size_type pos, size_type count) const -> string_view_type { if (pos > size()) - BOOST_FIXED_STRING_THROW(std::out_of_range{ + BOOST_STATIC_STRING_THROW(std::out_of_range{ "pos > size()"}); return {&data()[pos], (std::min)(count, size() - pos)}; } template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR auto -fixed_string:: +basic_static_string:: copy(CharT* dest, size_type count, size_type pos) const noexcept -> size_type { @@ -569,14 +569,14 @@ copy(CharT* dest, size_type count, size_type pos) const noexcept -> } template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR void -fixed_string:: +basic_static_string:: resize(std::size_t n) { const auto curr_size = size(); if(n > max_size()) - BOOST_FIXED_STRING_THROW(std::length_error{ + BOOST_STATIC_STRING_THROW(std::length_error{ "n > max_size()"}); if(n > curr_size) Traits::assign(&data()[curr_size], n - curr_size, CharT{}); @@ -585,14 +585,14 @@ resize(std::size_t n) } template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR void -fixed_string:: +basic_static_string:: resize(std::size_t n, CharT c) { const auto curr_size = size(); if(n > max_size()) - BOOST_FIXED_STRING_THROW(std::length_error{ + BOOST_STATIC_STRING_THROW(std::length_error{ "n > max_size()"}); if(n > curr_size) Traits::assign(&data()[curr_size], n - curr_size, c); @@ -601,13 +601,13 @@ resize(std::size_t n, CharT c) } template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR void -fixed_string:: -swap(fixed_string& s) noexcept +basic_static_string:: +swap(basic_static_string& s) noexcept { const auto curr_size = size(); - fixed_string tmp(s); + basic_static_string tmp(s); s.set_size(curr_size); Traits::copy(&s.data()[0], data(), curr_size + 1); this->set_size(tmp.size()); @@ -616,19 +616,19 @@ swap(fixed_string& s) noexcept template template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR void -fixed_string:: -swap(fixed_string& s) +basic_static_string:: +swap(basic_static_string& s) { const auto curr_size = size(); if(curr_size > s.max_size()) - BOOST_FIXED_STRING_THROW(std::length_error{ + BOOST_STATIC_STRING_THROW(std::length_error{ "size() > s.max_size()"}); if(s.size() > max_size()) - BOOST_FIXED_STRING_THROW(std::length_error{ + BOOST_STATIC_STRING_THROW(std::length_error{ "s.size() > max_size()"}); - fixed_string tmp(s); + basic_static_string tmp(s); s.set_size(curr_size); Traits::copy(&s.data()[0], data(), curr_size + 1); this->set_size(tmp.size()); @@ -636,22 +636,22 @@ swap(fixed_string& s) } template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR auto -fixed_string:: +basic_static_string:: replace( size_type pos, size_type n1, const CharT* s, - size_type n2) -> fixed_string& + size_type n2) -> basic_static_string& { const auto curr_size = size(); const auto curr_data = data(); if (pos > curr_size) - BOOST_FIXED_STRING_THROW(std::out_of_range{ + BOOST_STATIC_STRING_THROW(std::out_of_range{ "pos > size()"}); if (curr_size - (std::min)(n1, curr_size - pos) >= max_size() - n2) - BOOST_FIXED_STRING_THROW(std::length_error{ + BOOST_STATIC_STRING_THROW(std::length_error{ "replaced string exceeds max_size()"}); if (pos + n1 >= curr_size) n1 = curr_size - pos; @@ -693,22 +693,22 @@ replace( } template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR auto -fixed_string:: +basic_static_string:: replace( size_type pos, size_type n1, size_type n2, - CharT c) -> fixed_string & + CharT c) -> basic_static_string & { const auto curr_size = size(); const auto curr_data = data(); if (pos > curr_size) - BOOST_FIXED_STRING_THROW(std::out_of_range{ + BOOST_STATIC_STRING_THROW(std::out_of_range{ "pos > size()"}); if (curr_size - (std::min)(n1, curr_size - pos) >= max_size() - n2) - BOOST_FIXED_STRING_THROW(std::length_error{ + BOOST_STATIC_STRING_THROW(std::length_error{ "replaced string exceeds max_size()"}); if (pos + n1 >= curr_size) n1 = curr_size - pos; @@ -719,9 +719,9 @@ replace( } template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR auto -fixed_string:: +basic_static_string:: find( const CharT* s, size_type pos, @@ -738,9 +738,9 @@ find( } template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR auto -fixed_string:: +basic_static_string:: rfind( const CharT* s, size_type pos, @@ -762,9 +762,9 @@ rfind( } template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR auto -fixed_string:: +basic_static_string:: find_first_of( const CharT* s, size_type pos, @@ -779,9 +779,9 @@ find_first_of( } template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR auto -fixed_string:: +basic_static_string:: find_last_of( const CharT* s, size_type pos, @@ -800,9 +800,9 @@ find_last_of( } template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR auto -fixed_string:: +basic_static_string:: find_first_not_of( const CharT* s, size_type pos, @@ -818,9 +818,9 @@ find_first_not_of( } template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR auto -fixed_string:: +basic_static_string:: find_last_not_of( const CharT* s, size_type pos, @@ -838,11 +838,11 @@ find_last_not_of( } template -BOOST_FIXED_STRING_CPP14_CXPER +BOOST_STATIC_STRING_CPP14_CONSTEXPR auto -fixed_string:: +basic_static_string:: assign_char(CharT ch, std::true_type) noexcept -> - fixed_string& + basic_static_string& { this->set_size(1); Traits::assign(data()[0], ch); @@ -852,27 +852,27 @@ assign_char(CharT ch, std::true_type) noexcept -> template auto -fixed_string:: +basic_static_string:: assign_char(CharT, std::false_type) -> - fixed_string& + basic_static_string& { - BOOST_FIXED_STRING_THROW(std::length_error{ + BOOST_STATIC_STRING_THROW(std::length_error{ "max_size() == 0"}); } template inline -fixed_string -to_fixed_string(Integer x) +basic_static_string +to_static_string(Integer x) { using CharT = char; using Traits = std::char_traits; - BOOST_FIXED_STRING_STATIC_ASSERT(std::is_integral::value, "Integer must be an integral type"); + BOOST_STATIC_STRING_STATIC_ASSERT(std::is_integral::value, "Integer must be an integral type"); char buf[detail::max_digits(sizeof(Integer))]; auto last = buf + sizeof(buf); auto it = detail::raw_to_string< CharT, Integer, Traits>(last, sizeof(buf), x); - fixed_string s; + basic_static_string s; s.resize(static_cast(last - it)); auto p = s.data(); while(it < last) @@ -880,7 +880,7 @@ to_fixed_string(Integer x) return s; } -} // fixed_string +} // static_string } // boost #endif diff --git a/include/boost/fixed_string/fixed_string.hpp b/include/boost/static_string/static_string.hpp similarity index 81% rename from include/boost/fixed_string/fixed_string.hpp rename to include/boost/static_string/static_string.hpp index 2576cca..cbe1166 100644 --- a/include/boost/fixed_string/fixed_string.hpp +++ b/include/boost/static_string/static_string.hpp @@ -1,2809 +1,2828 @@ -// -// Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com) -// Copyright (c) 2019 Krystian Stasiowski (sdkrystian at gmail dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// -// Official repository: https://github.com/boostorg/fixed_string -// - -#ifndef BOOST_FIXED_STRING_FIXED_STRING_HPP -#define BOOST_FIXED_STRING_FIXED_STRING_HPP - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { -namespace fixed_string { - -/** A fixed-capacity string. - - These objects behave like `std::string` except that the storage - is not dynamically allocated but rather fixed in size, and - stored in the object itself. - - These strings offer performance advantages when an algorithm - can execute with a reasonable upper limit on the size of a value. - - @see to_fixed_string -*/ -template< - std::size_t N, - typename CharT = char, - typename Traits = std::char_traits> -class fixed_string -#ifndef GENERATING_DOCUMENTATION - : detail::optimization_base -#endif -{ - template - friend class fixed_string; - - BOOST_FIXED_STRING_CPP14_CXPER - void - term() noexcept - { - this->term_impl(); - } - - using base = detail::optimization_base; - -public: - //-------------------------------------------------------------------------- - // - // Member types - // - //-------------------------------------------------------------------------- - - using traits_type = Traits; - using value_type = typename Traits::char_type; - using size_type = std::size_t; - using difference_type = std::ptrdiff_t; - using pointer = value_type*; - using reference = value_type&; - using const_pointer = value_type const*; - using const_reference = value_type const&; - using iterator = value_type*; - using const_iterator = value_type const*; - - using reverse_iterator = - std::reverse_iterator; - - using const_reverse_iterator = - std::reverse_iterator; - - /// The type of `string_view` returned by the interface - using string_view_type = - string_view; - - //-------------------------------------------------------------------------- - // - // Constants - // - //-------------------------------------------------------------------------- - - /// Maximum size of the string excluding any null terminator - static constexpr size_type static_capacity = N; - - /// A special index - static constexpr size_type npos = size_type(-1); - - //-------------------------------------------------------------------------- - // - // Construction - // - //-------------------------------------------------------------------------- - - /** Construct a `fixed_string`. - - Construct an empty string - */ - BOOST_FIXED_STRING_CPP11_CXPER - fixed_string() noexcept; - - /** Construct a `fixed_string`. - - Construct the string with `count` copies of character `ch`. - - The behavior is undefined if `count >= npos` - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string( - size_type count, - CharT ch); - - /** Construct a `fixed_string`. - - Construct with a substring (pos, other.size()) of `other`. - */ - template - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string( - fixed_string const& other, - size_type pos); - - /** Construct a `fixed_string`. - - Construct with a substring (pos, count) of `other`. - */ - template - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string( - fixed_string const& other, - size_type pos, - size_type count); - - /** Construct a `fixed_string`. - - Construct with the first `count` characters of `s`, including nulls. - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string( - CharT const* s, - size_type count); - - /** Construct a `fixed_string`. - - Construct from a null terminated string. - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string( - CharT const* s); - - /** Construct a `fixed_string`. - - Construct from a range of characters - */ - template - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string( - InputIterator first, - InputIterator last - #ifndef GENERATING_DOCUMENTATION - , typename std::enable_if< - detail::is_input_iterator::value, - iterator>::type* = 0 - #endif - ); - - /** Construct a `fixed_string`. - - Copy constructor. - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string( - fixed_string const& other) noexcept; - - /** Construct a `fixed_string`. - - Copy constructor. - */ - template - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string( - fixed_string const& other); - - /** Construct a `fixed_string`. - - Construct from an initializer list - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string( - std::initializer_list init); - - /** Construct a `fixed_string`. - - Construct from a `string_view` - */ - explicit - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string( - string_view_type sv); - - /** Construct a `fixed_string`. - - Construct from any object convertible to `string_view_type`. - - The range (pos, n) is extracted from the value - obtained by converting `t` to `string_view_type`, - and used to construct the string. - */ - template::value>::type -#endif - > - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string( - T const& t, - size_type pos, - size_type n); - - //-------------------------------------------------------------------------- - // - // Assignment - // - //-------------------------------------------------------------------------- - - /** Assign to the string. - - If `*this` and `s` are the same object, - this function has no effect. - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - operator=( - fixed_string const& s) noexcept - { - return assign(s); - } - - /** Assign to the string. - - Replace the contents with a copy of `s` - - @throw std::length_error if `s.size() > max_size()` - */ - template - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - operator=( - fixed_string const& s) - { - return assign(s); - } - - /** Assign to the string. - - Replace the contents with those of the null-terminated string `s` - - @throw std::length_error if `Traits::length(s) > max_size()` - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - operator=( - CharT const* s) - { - return assign(s); - } - - /** Assign to the string. - - Assign from single character. - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - operator=( - CharT ch) - { - return assign_char(ch, - std::integral_constant0)>{}); - } - - /** Assign to the string. - - Assign from initializer list. - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - operator=( - std::initializer_list ilist) - { - return assign(ilist); - } - - /** Assign to the string. - - Assign from `string_view_type`. - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - operator=( - string_view_type sv) - { - return assign(sv); - } - - /** Replace the contents. - - Replace the contents with `count` copies of character `ch` - - @throw std::length_error if `count > max_size()` - @return `*this` - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - assign( - size_type count, - CharT ch); - - /** Replace the contents. - - Replace the contents with a copy of another `fixed_string` - - @return `*this` - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - assign( - fixed_string const& s) noexcept; - - /** Replace the contents. - - Replace the contents with a copy of another `fixed_string` - - @throw std::length_error if `s.size() > max_size()` - @return `*this` - */ - template - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - assign( - fixed_string const& s) - { - // VFALCO this could come in two flavors, - // N>M and NM - return assign(s.data(), s.size()); - } - - /** Replace the contents. - - Replace the contents with a copy of `count` characters starting at `npos` from `s`. - - @throw std::length_error if `count > max_size()` - @return `*this` - */ - template - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - assign( - fixed_string const& s, - size_type pos, - size_type count = npos); - - /** Replace the contents. - - Replace the contents with the first `count` characters of `s`, including nulls. - - @throw std::length_error if `count > max_size()` - @return `*this` - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - assign( - CharT const* s, - size_type count); - - /** Replace the contents. - - Replace the contents with a copy of a null terminated string `s` - - @throw std::length_error if `Traits::length(s) > max_size()` - @return `*this` - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - assign( - CharT const* s) - { - return assign(s, Traits::length(s)); - } - - /** Replace the contents. - - Replace the contents with a copy of characters from the range `(first, last)` - - @throw std::length_error if `std::distance(first, last) > max_size()` - @return `*this` - */ - template - BOOST_FIXED_STRING_CPP14_CXPER -#ifdef GENERATING_DOCUMENTATION - fixed_string& -#else - typename std::enable_if< - detail::is_input_iterator::value, - fixed_string&>::type -#endif - assign( - InputIterator first, - InputIterator last); - - /** Replace the contents. - - Replace the contents with the characters in an initializer list - - @throw std::length_error if `ilist.size() > max_size()` - @return `*this` - */ - fixed_string& - assign( - std::initializer_list ilist) - { - return assign(ilist.begin(), ilist.end()); - } - - /** Replace the contents. - - Replace the contents with a copy of the characters from `string_view_type{t}` - - @throw std::length_error if `string_view_type{t}.size() > max_size()` - */ - template - BOOST_FIXED_STRING_CPP14_CXPER -#if GENERATING_DOCUMENTATION - fixed_string& -#else - typename std::enable_if< - std::is_convertible::value && - ! std::is_convertible::value, - fixed_string&>::type -#endif - assign(T const& t) - { - string_view_type ss{t}; - return assign(ss.data(), ss.size()); - } - - /** Replace the contents. - - Replace the contents with a copy of the characters from `string_view_type{t}.substr(pos, count)` - - The range `[pos, count)` is extracted from the value - obtained by converting `t` to `string_view_type`, - and used to assign the string. - - @throw std::out_of_range if `pos > string_view_type{t}.size()` - @throw std::length_error if `string_view_type{t}.substr(pos, count).size() > max_size()` - */ - - template - BOOST_FIXED_STRING_CPP14_CXPER -#if GENERATING_DOCUMENTATION - fixed_string& -#else - typename std::enable_if< - std::is_convertible::value && - ! std::is_convertible::value, - fixed_string&>::type -#endif - assign( - T const& t, - size_type pos, - size_type count = npos) - { - return assign(string_view_type{t}.substr(pos, count)); - } - - //-------------------------------------------------------------------------- - // - // Element access - // - //-------------------------------------------------------------------------- - - /** Access specified character with bounds checking. - - @throw std::out_of_range if `pos >= size()` - */ - BOOST_FIXED_STRING_CPP14_CXPER - reference - at(size_type pos); - - /** Access specified character with bounds checking. - - @throw std::out_of_range if `pos >= size()` - */ - BOOST_FIXED_STRING_CPP14_CXPER - const_reference - at(size_type pos) const; - - /** Access specified character - - Undefined behavior if `pos > size()` - */ - BOOST_FIXED_STRING_CPP14_CXPER - reference - operator[](size_type pos) noexcept - { - return data()[pos]; - } - - /** Access specified character. - - Undefined behavior if `pos > size()` - */ - BOOST_FIXED_STRING_CPP14_CXPER - const_reference - operator[](size_type pos) const noexcept - { - return data()[pos]; - } - - /** Accesses the first character. - - Undefined behavior if `empty() == true` - */ - BOOST_FIXED_STRING_CPP14_CXPER - CharT& - front() noexcept - { - return data()[0]; - } - - /** Accesses the first character. - - Undefined behavior if `empty() == true` - */ - BOOST_FIXED_STRING_CPP14_CXPER - CharT const& - front() const noexcept - { - return data()[0]; - } - - /** Accesses the last character. - - Undefined behavior if `empty() == true` - */ - BOOST_FIXED_STRING_CPP14_CXPER - CharT& - back() noexcept - { - return data()[size()-1]; - } - - /** Accesses the last character. - - Undefined behavior if `empty() == true` - */ - BOOST_FIXED_STRING_CPP14_CXPER - CharT const& - back() const noexcept - { - return data()[size()-1]; - } - - /// Returns a pointer to the first character of the string. - BOOST_FIXED_STRING_CPP14_CXPER - CharT* - data() noexcept - { - return this->data_impl(); - } - - /// Returns a pointer to the first character of a string. - BOOST_FIXED_STRING_CPP14_CXPER - CharT const* - data() const noexcept - { - return this->data_impl(); - } - - /// Returns a non-modifiable standard C character array version of the string. - BOOST_FIXED_STRING_CPP14_CXPER - CharT const* - c_str() const noexcept - { - return data(); - } - - /// Convert a static string to a `string_view_type` - BOOST_FIXED_STRING_CPP11_CXPER - operator string_view_type() const noexcept - { - return string_view_type{data(), size()}; - } - - //-------------------------------------------------------------------------- - // - // Iterators - // - //-------------------------------------------------------------------------- - - /// Returns an iterator to the beginning. - BOOST_FIXED_STRING_CPP14_CXPER - iterator - begin() noexcept - { - return data(); - } - - /// Returns an iterator to the beginning. - BOOST_FIXED_STRING_CPP14_CXPER - const_iterator - begin() const noexcept - { - return data(); - } - - /// Returns an iterator to the beginning. - BOOST_FIXED_STRING_CPP14_CXPER - const_iterator - cbegin() const noexcept - { - return data(); - } - - /// Returns an iterator to the end. - BOOST_FIXED_STRING_CPP14_CXPER - iterator - end() noexcept - { - return &data()[size()]; - } - - /// Returns an iterator to the end. - BOOST_FIXED_STRING_CPP14_CXPER - const_iterator - end() const noexcept - { - return &data()[size()]; - } - - /// Returns an iterator to the end. - BOOST_FIXED_STRING_CPP14_CXPER - const_iterator - cend() const noexcept - { - return &data()[size()]; - } - - /// Returns a reverse iterator to the beginning. - reverse_iterator - rbegin() noexcept - { - return reverse_iterator{end()}; - } - - /// Returns a reverse iterator to the beginning. - const_reverse_iterator - rbegin() const noexcept - { - return const_reverse_iterator{cend()}; - } - - /// Returns a reverse iterator to the beginning. - const_reverse_iterator - crbegin() const noexcept - { - return const_reverse_iterator{cend()}; - } - - /// Returns a reverse iterator to the end. - reverse_iterator - rend() noexcept - { - return reverse_iterator{begin()}; - } - - /// Returns a reverse iterator to the end. - const_reverse_iterator - rend() const noexcept - { - return const_reverse_iterator{cbegin()}; - } - - /// Returns a reverse iterator to the end. - const_reverse_iterator - crend() const noexcept - { - return const_reverse_iterator{cbegin()}; - } - - //-------------------------------------------------------------------------- - // - // Capacity - // - //-------------------------------------------------------------------------- - - /// Returns `true` if the string is empty. - BOOST_FIXED_STRING_NODISCARD - BOOST_FIXED_STRING_CPP11_CXPER - bool - empty() const noexcept - { - return size() == 0; - } - - /// Returns the number of characters, excluding the null terminator. - BOOST_FIXED_STRING_CPP11_CXPER - size_type - size() const noexcept - { - return this->size_impl(); - } - - /** Returns the number of characters, excluding the null terminator - - Equivalent to calling `size()`. - */ - BOOST_FIXED_STRING_CPP11_CXPER - size_type - length() const noexcept - { - return size(); - } - - /// Returns the maximum number of characters that can be stored, excluding the null terminator. - BOOST_FIXED_STRING_CPP11_CXPER - size_type - max_size() const noexcept - { - return N; - } - - /** Reserve space for `n` characters, excluding the null terminator - - This function has no effect when `n <= max_size()`. - - @throw std::length_error if `n > max_size()` - */ - BOOST_FIXED_STRING_CPP14_CXPER - void - reserve(std::size_t n); - - /** Returns the number of characters that can be held in currently allocated storage. - - This function always returns `max_size()`. - */ - BOOST_FIXED_STRING_CPP11_CXPER - size_type - capacity() const noexcept - { - return max_size(); - } - - /** Reduces memory usage by freeing unused memory. - - This function call has no effect. - */ - BOOST_FIXED_STRING_CPP14_CXPER - void - shrink_to_fit() noexcept - { - } - - //-------------------------------------------------------------------------- - // - // Operations - // - //-------------------------------------------------------------------------- - - /// Clears the contents - BOOST_FIXED_STRING_CPP14_CXPER - void - clear() noexcept; - - /** Insert into the string. - - Inserts `count` copies of character `ch` at the position `index` - - @throw std::out_of_range if `index > size()` - @throw std::length_error if `size() + count > max_size()` - @return `*this` - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - insert( - size_type index, - size_type count, - CharT ch); - - /** Insert into the string. - - Inserts null-terminated string pointed to by `s` at the position `index` - - @throw std::out_of_range if `index > size()` - @throw std::length_error if `size() + count > max_size()` - @return `*this` - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - insert( - size_type index, - CharT const* s) - { - return insert(index, s, Traits::length(s)); - } - - /** Insert into the string. - - Inserts the characters in the range `(s, s+count)` at the position `index` - - The inserted string can contain null characters. - - @throw std::out_of_range if `index > size()` - @throw std::length_error if ` size() + count> max_size()` - @return `*this` - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - insert( - size_type index, - CharT const* s, - size_type count); - - /** Insert into the string. - - Inserts the contents of string view `sv` at the position `index` - - The inserted string can contain null characters. - - @throw std::out_of_range if `index > size()` - @throw std::length_error if `size() + sv.size() > max_size()` - @return `*this` - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - insert( - size_type index, - string_view_type sv) - { - return insert(index, sv.data(), sv.size()); - } - - /** Insert into the string. - - Inserts the string `sv.substr(index_str, count)` at the position `index` - - The inserted string can contain null characters. - - @throw std::out_of_range if `index > size() || index_str > sv.size()` - @throw std::length_error if `size() + sv.substr(index_str, count).size() > max_size()` - @return `*this` - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - insert( - size_type index, - string_view_type sv, - size_type index_str, - size_type count = npos) - { - return insert(index, sv.substr(index_str, count)); - } - - /** Insert into the string. - - Inserts character `ch` before the character (if any) pointed by `pos` - - The inserted character can be null. - - @throw std::length_error if `size() + 1> max_size()` - @return An iterator to the first inserted character or pos if no insertion took place - */ - BOOST_FIXED_STRING_CPP14_CXPER - iterator - insert( - const_iterator pos, - CharT ch) - { - return insert(pos, 1, ch); - } - - /** Insert into the string. - - Inserts `count` copies of character `ch` before the character (if any) pointed by `pos` - - The inserted characters can be null. - - @throw std::length_error if `size() + count > max_size()` - @return An iterator to the first inserted character or pos if no insertion took place - */ - BOOST_FIXED_STRING_CPP14_CXPER - iterator - insert( - const_iterator pos, - size_type count, - CharT ch); - - /** Insert into the string. - - Inserts characters from the range `(first, last)` before the element (if any) pointed by `pos` - - The inserted string can contain null characters. - This function does not participate in overload resolution if - `InputIterator` does not satisfy LegacyInputIterator - - @throw std::length_error if `size() + std::distance(first, last) > max_size()` - @return An iterator to the first inserted character or pos if no insertion took place - */ - template - BOOST_FIXED_STRING_CPP14_CXPER -#if GENERATING_DOCUMENTATION - iterator -#else - typename std::enable_if< - detail::is_input_iterator::value, - iterator>::type -#endif - insert( - const_iterator pos, - InputIterator first, - InputIterator last); - - /** Insert into the string. - - Inserts elements from initializer list `ilist` before the element (if any) pointed by `pos` - - The inserted string can contain null characters. - - @throw std::length_error if `size() + ilist.size() > max_size()` - @return An iterator to the first inserted character or pos if no insertion took place - */ - BOOST_FIXED_STRING_CPP14_CXPER - iterator - insert( - const_iterator pos, - std::initializer_list ilist) - { - return insert(pos, ilist.begin(), ilist.end()); - } - - /** Insert into the string. - - Inserts elements from `string_view{t}` at the position `index` - - The inserted string can contain null characters. - This function participates in overload resolution if - `T` is convertible to `string_view` and `T` is not - convertible to `CharT const*`. - - @throw std::length_error if `size() + string_view{t}.substr(index_str, count).size() > max_size()` - @return `*this` - */ - template - BOOST_FIXED_STRING_CPP14_CXPER -#if GENERATING_DOCUMENTATION - fixed_string& -#else - typename std::enable_if< - std::is_convertible< - T const&, string_view_type>::value && - ! std::is_convertible< - T const&, CharT const*>::value, - fixed_string&>::type -#endif - insert( - size_type index, - T const& t); - - /** Insert into the string. - - Inserts elements from `string_view{t}.substr(index_str, count)` at the position `index` - - The inserted string can contain null characters. - This function participates in overload resolution if - `T` is convertible to `string_view` and `T` is not - convertible to `CharT const*`. - - @throw std::out_of_range if `index_str > string_view{t}.size()` - @throw std::length_error if `size() + string_view{t}.substr(index_str, count).size() > max_size()` - @return `*this` - */ - template - BOOST_FIXED_STRING_CPP14_CXPER -#if GENERATING_DOCUMENTATION - fixed_string& -#else - typename std::enable_if< - std::is_convertible::value && - ! std::is_convertible::value, - fixed_string&>::type -#endif - insert( - size_type index, - T const& t, - size_type index_str, - size_type count = npos); - - /** Removes `min(count, size() - index)` characters starting at `index` - - @throw std::out_of_range if `index > size()` - @return `*this` - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - erase( - size_type index = 0, - size_type count = npos); - - /** Removes the character at `pos` - - @return iterator pointing to the character immediately following the character erased, or `end()` if no such character exists - */ - BOOST_FIXED_STRING_CPP14_CXPER - iterator - erase( - const_iterator pos); - - /** Removes the characters in the range `(first, last)` - - @return iterator pointing to the character last pointed to before the erase, or `end()` if no such character exists - */ - BOOST_FIXED_STRING_CPP14_CXPER - iterator - erase( - const_iterator first, - const_iterator last); - - /** Appends the given character `ch` to the end of the string. - - @throw std::length_error if `size() + 1 > max_size()` - */ - BOOST_FIXED_STRING_CPP14_CXPER - void - push_back( - CharT ch); - - /** Removes the last character from the string - - The behavior is undefined if the string is empty. - */ - BOOST_FIXED_STRING_CPP14_CXPER - void - pop_back() noexcept - { - BOOST_FIXED_STRING_ASSERT(size() > 0); - this->set_size(size() - 1); - term(); - } - - /** Appends `count` copies of character `ch` - - The appended characters may be null. - - @throw std::length_error if `size() + count > max_size()` - @return `*this` - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - append( - size_type count, - CharT ch) - { - return insert(size(), count, ch); - } - - /** Append to the string. - - Appends the contents of string view `sv` - - The appended string can contain null characters. - - @throw std::length_error if `size() + sv.size() > max_size()` - @return `*this` - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - append( - string_view_type sv) - { - return append(sv.data(), sv.size()); - } - - /** Append to the string. - - Appends the contents of `sv.substr(pos, count)` - - The appended string can contain null characters. - - @throw std::out_of_range if `pos > sv.size()` - @throw std::length_error if `size() + sv.substr(pos, count).size() > max_size()` - @return `*this` - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - append( - string_view_type sv, - size_type pos, - size_type count = npos) - { - return append(sv.substr(pos, count)); - } - - /** Append to the string. - - Appends characters in the range `(s, s + count)` - - The appended string can contain null characters. - - @throw std::length_error if `size() + count > max_size()` - @return `*this` - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - append( - CharT const* s, - size_type count); - - /** Append to the string. - - Appends the null-terminated character string pointed to by `s` - - The length of the string is determined by the first - null character using `Traits::length(s)`. - - @throw std::length_error if `size() + Traits::length(s) > max_size()` - @return `*this` - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - append( - CharT const* s) - { - return append(s, Traits::length(s)); - } - - /** Append to the string. - - Appends characters from the range `(first, last)` - - The inserted string can contain null characters. - This function does not participate in overload resolution if - `InputIterator` does not satisfy LegacyInputIterator - - @throw std::length_error if `size() + std::distance(first, last) > max_size()` - @return `*this` - */ - template - BOOST_FIXED_STRING_CPP14_CXPER -#if GENERATING_DOCUMENTATION - fixed_string& -#else - typename std::enable_if< - detail::is_input_iterator::value, - fixed_string&>::type -#endif - append( - InputIterator first, - InputIterator last) - { - insert(end(), first, last); - return *this; - } - - /** Append to the string. - - Appends characters from initializer list `ilist` - - The appended string can contain null characters. - - @throw std::length_error if `size() + ilist.size() > max_size()` - @return `*this` - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - append( - std::initializer_list ilist) - { - insert(end(), ilist); - return *this; - } - - /** Append to the string. - - Appends characters from `string_view{t}` - - The appended string can contain null characters. - This function participates in overload resolution if - `T` is convertible to `string_view` and `T` is not - convertible to `CharT const*`. - - @throw std::length_error if `size() + string_view{t} > max_size()` - @return `*this` - */ - template - BOOST_FIXED_STRING_CPP14_CXPER -#if GENERATING_DOCUMENTATION - fixed_string& -#else - typename std::enable_if< - std::is_convertible< - T const&, string_view_type>::value && - ! std::is_convertible< - T const&, CharT const*>::value, - fixed_string&>::type -#endif - append( - T const& t) - { - return append(string_view{t}); - } - - /** Append to the string. - - Appends characters from `string_view{t}.substr{pos, count}` - - The appended string can contain null characters. - This function participates in overload resolution if - `T` is convertible to `string_view` and `T` is not - convertible to `CharT const*`. - - @throw std::out_of_range if `pos > string_view{t}.size()` - @throw std::length_error if `size() + string_view{t}.substr(pos, count).size() > max_size()` - @return `*this` - */ - template - BOOST_FIXED_STRING_CPP14_CXPER -#if GENERATING_DOCUMENTATION - fixed_string& -#else - typename std::enable_if< - std::is_convertible< - T const&, string_view_type>::value && - ! std::is_convertible< - T const&, CharT const*>::value, - fixed_string&>::type -#endif - append( - T const& t, - size_type pos, - size_type count = npos) - { - return append(string_view{t}.substr(pos, count)); - } - - /** Append to the string. - - @throw std::length_error if `size() + s.size() > max_size()` - */ - template - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - operator+=( - fixed_string const& s) - { - return append(s.data(), s.size()); - } - - /** Append to the string. - - Appends the given character `ch` to the end of the string. - - @throw std::length_error if `size() + 1 > max_size()` - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - operator+=( - CharT ch) - { - push_back(ch); - return *this; - } - - /** Append to the string. - - Appends the null-terminated character string pointed to by `s` - - The length of the string is determined by the first - null character using `Traits::length(s)`. - - @throw std::length_error if `size() + Traits::length(s) > max_size()` - @return `*this` - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - operator+=( - CharT const* s) - { - return append(s); - } - - /** Append to the string. - - Appends characters from initializer list `ilist` - - The appended string can contain null characters. - - @throw std::length_error if `size() + ilist.size() > max_size()` - @return `*this` - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - operator+=( - std::initializer_list ilist) - { - return append(ilist); - } - - /** Append to the string. - - Appends a copy of the characters from `string_view_type{t}` - - The appended string can contain null characters. - This function participates in overload resolution if - `T` is convertible to `string_view` and `T` is not - convertible to `CharT const*`. - - @throw std::length_error if `string_view_type{t}.size() > max_size()` - */ - template - BOOST_FIXED_STRING_CPP14_CXPER -#if GENERATING_DOCUMENTATION - fixed_string& -#else - typename std::enable_if< - std::is_convertible::value && - ! std::is_convertible::value, - fixed_string&>::type -#endif - operator+=( - T const& t) - { - return append(t); - } - - /** Compare the string with another. - - Compares this string to `s`. - */ - template - BOOST_FIXED_STRING_CPP14_CXPER - int - compare( - fixed_string const& s) const noexcept - { - return detail::lexicographical_compare( - data(), size(), s.data(), s.size()); - } - - /** Compare the string with another. - - Compares a `[pos1, pos1+count1)` substring of this string to `s`. If `count1 > size() - pos1` the substring is `[pos1, size())`. - */ - template - BOOST_FIXED_STRING_CPP14_CXPER - int - compare( - size_type pos1, - size_type count1, - fixed_string const& s) const - { - return detail::lexicographical_compare( - subview(pos1, count1), s.data(), s.size()); - } - - /** Compare the string with another. - - Compares a `[pos1, pos1+count1)` substring of this string to a substring `[pos2, pos2+count2)` of `s`. - If `count1 > size() - pos1` the first substring is `[pos1, size())`. Likewise, if `count2 > s.size() - pos2` the - second substring is `[pos2, s.size())`. - */ - template - BOOST_FIXED_STRING_CPP14_CXPER - int - compare( - size_type pos1, - size_type count1, - fixed_string const& s, - size_type pos2, - size_type count2 = npos) const - { - return detail::lexicographical_compare( - subview(pos1, count1), s.subview(pos2, count2)); - } - - /** Compare the string with another. - - Compares this string to the null-terminated character sequence beginning at the character pointed to by `s` with length `Traits::length(s)`. - */ - BOOST_FIXED_STRING_CPP14_CXPER - int - compare( - CharT const* s) const noexcept - { - return detail::lexicographical_compare( - data(), size(), s, Traits::length(s)); - } - - /** Compare the string with another. - - Compares a `[pos1, pos1+count1)` substring of this string to the null-terminated character sequence beginning at the character pointed to by `s` with - length `Traits::length(s)`. If `count1 > size() - pos1` the substring is `[pos1, size())`. - */ - BOOST_FIXED_STRING_CPP14_CXPER - int - compare( - size_type pos1, - size_type count1, - CharT const* s) const - { - return detail::lexicographical_compare( - subview(pos1, count1), s, Traits::length(s)); - } - - /** Compare the string with another. - - Compares a `[pos1, pos1+count1)` substring of this string to the characters in the range `[s, s + count2)`. If `count1 > size() - pos1` the substring is `[pos1, size())`. - */ - BOOST_FIXED_STRING_CPP14_CXPER - int - compare( - size_type pos1, - size_type count1, - CharT const* s, - size_type count2) const - { - return detail::lexicographical_compare( - subview(pos1, count1), s, count2); - } - - /** Compare the string with another. - - Compares this string to `s`. - */ - BOOST_FIXED_STRING_CPP14_CXPER - int - compare( - string_view_type s) const noexcept - { - return detail::lexicographical_compare( - data(), size(), s.data(), s.size()); - } - - /** Compare the string with another. - - Compares a `[pos1, pos1+count1)` substring of this string to `s`. If `count1 > size() - pos1` the substring is `[pos1, size())`. - */ - BOOST_FIXED_STRING_CPP14_CXPER - int - compare( - size_type pos1, - size_type count1, - string_view_type s) const - { - return detail::lexicographical_compare( - subview(pos1, count1), s); - } - - /** Compare the string with another. - - Replaces the part of the string indicated by `[pos1, pos1 + count1)` with a substring `[pos2, pos2 + count2)` of `t` after converting to `string_view_type`. - - This function participates in overload resolution if - `T` is convertible to `string_view` and `T` is not - convertible to `CharT const*`. - */ - template - BOOST_FIXED_STRING_CPP14_CXPER -#if GENERATING_DOCUMENTATION - int -#else - typename std::enable_if< - std::is_convertible::value && - ! std::is_convertible::value, - int>::type -#endif - compare( - size_type pos1, - size_type count1, - T const& t, - size_type pos2, - size_type count2 = npos) const - { - return compare(pos1, count1, - string_view_type(t).substr(pos2, count2)); - } - - /** Returns a substring. - - Returns a substring `(pos, pos + count)`. If the requested substring is greater than the size of the string, the returned substring is `[pos, size())`. - - @throw std::out_of_range if `pos > size()` - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string - substr( - size_type pos = 0, - size_type count = npos) const; - - /** Returns a view of a substring. - - Returns a view of a substring `(pos, pos + count)`. If the requested view is greater than the size of the string, the returned view is `[pos, size())`. - - @throw std::out_of_range if `pos > size()` - */ - BOOST_FIXED_STRING_CPP14_CXPER - string_view_type - subview( - size_type pos = 0, - size_type count = npos) const; - - /** Copy a substring. - - Copy a substring `(pos, pos+count)` to character string pointed to by `dest`. - */ - BOOST_FIXED_STRING_CPP14_CXPER - size_type - copy( - CharT* dest, - size_type count, - size_type pos = 0) const noexcept; - - /** Changes the number of characters stored. - - If the resulting string is larger, the new - characters are uninitialized. - */ - BOOST_FIXED_STRING_CPP14_CXPER - void - resize( - std::size_t n); - - /** Changes the number of characters stored. - - If the resulting string is larger, the new - characters are initialized to the value of `c`. - */ - BOOST_FIXED_STRING_CPP14_CXPER - void - resize( - std::size_t n, - CharT c); - - /// Exchange the contents of this string with another. - BOOST_FIXED_STRING_CPP14_CXPER - void - swap( - fixed_string& s) noexcept; - - /// Exchange the contents of this string with another. - template - BOOST_FIXED_STRING_CPP14_CXPER - void - swap( - fixed_string& s); - - /** Replace a subset of the string. - - Replaces the part of the string indicated by `[pos1, pos1 + n1)` with `s` - - @throw std::out_of_range if `pos1 > size()` - @throw std::length_error if the resulting string exceeds `max_size()` - @return `*this` - */ - template - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - replace( - size_type pos1, - size_type n1, - const fixed_string& str) - { - return replace(pos1, n1, str.data(), str.size()); - } - - /** Replace a subset of the string. - - Replaces the part of the string indicated by `[pos1, pos1 + n1)` with substring `[pos2, pos2 + n2)` of `str` - except that if `n2` is greater than `str.size()`, `[pos2, pos2 + str.size())` is used. - - @throw std::out_of_range if `pos1 > size()` - @throw std::length_error if the resulting string exceeds `max_size()` - @return `*this` - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - replace( - size_type pos1, - size_type n1, - const fixed_string& str, - size_type pos2, - size_type n2 = npos) - { - return replace(pos1, n1, str.subview(pos2, n2)); - } - - /** Replace a subset of the string. - - Replaces the part of the string indicated by `[pos1, pos1 + n1)` with `t` after converting to `string_view_type`. - - This function participates in overload resolution if - `T` is convertible to `string_view` and `T` is not - convertible to `CharT const*`. - - @throw std::out_of_range if `pos1 > size()` - @throw std::length_error if the resulting string exceeds `max_size()` - @return `*this` - */ - template - BOOST_FIXED_STRING_CPP14_CXPER -#if GENERATING_DOCUMENTATION - fixed_string& -#else - typename std::enable_if< - std::is_convertible::value && - ! std::is_convertible::value, - fixed_string&>::type -#endif - replace( - size_type pos1, - size_type n1, - const T& t) - { - string_view_type sv = t; - return replace(pos1, n1, sv.data(), sv.size()); - } - - /** Replace a subset of the string. - - Replaces the part of the string indicated by `[pos1, pos1 + n1)` with substring `[pos2, pos2 + n2)` of `t` - after converting to `string_view_type`, except that if `n2` is greater than `t.size()`, `[pos2, pos2 + t.size())` is used. - - This function participates in overload resolution if - `T` is convertible to `string_view` and `T` is not - convertible to `CharT const*`. - - @throw std::out_of_range if `pos1 > size()` - @throw std::length_error if the resulting string exceeds `max_size()` - @return `*this` - */ - template - BOOST_FIXED_STRING_CPP14_CXPER -#if GENERATING_DOCUMENTATION - fixed_string& -#else - typename std::enable_if< - std::is_convertible::value && - ! std::is_convertible::value, - fixed_string&>::type -#endif - replace( - size_type pos1, - size_type n1, - const T& t, - size_type pos2, - size_type n2 = npos) - { - string_view_type sv = t; - return replace(pos1, n1, sv.substr(pos2, n2)); - } - - /** Replace a subset of the string. - - Replaces the part of the string indicated by `[pos1, pos1 + n1)` with the characters in the range `[s, s + n2)`. - - @throw std::out_of_range if `pos1 > size()` - @throw std::length_error if the resulting string exceeds `max_size()` - @return `*this` - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - replace( - size_type pos, - size_type n1, - const CharT* s, - size_type n2); - - - /** Replace a subset of the string. - - Replaces the part of the string indicated by `[pos1, pos1 + n1)` with the characters in the range `[s, s + Traits::length(s))`. - - @throw std::out_of_range if `pos1 > size()` - @throw std::length_error if the resulting string exceeds `max_size()` - @return `*this` - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - replace( - size_type pos, - size_type n1, - const CharT* s) - { - return replace(pos, n1, s, Traits::length(s)); - } - - /** Replace a subset of the string. - - Replaces the part of the string indicated by `[pos1, pos1 + n1)` with `n2` copies of `c`. - - @throw std::out_of_range if `pos1 > size()` - @throw std::length_error if the resulting string exceeds `max_size()` - @return `*this` - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - replace( - size_type pos, - size_type n1, - size_type n2, - CharT c); - - /** Replace a subset of the string. - - Replaces the part of the string indicated by `[i1, i2)` with `s` - - @throw std::out_of_range if `pos1 > size()` - @throw std::length_error if the resulting string exceeds `max_size()` - @return `*this` - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - replace( - const_iterator i1, - const_iterator i2, - const fixed_string& str) - { - return replace(i1, i2, str.data(), str.size()); - } - - /** Replace a subset of the string. - - Replaces the part of the string indicated by `[i1, i2)` with `t` after converting to `string_view_type`. - - This function participates in overload resolution if - `T` is convertible to `string_view` and `T` is not - convertible to `CharT const*`. - - @throw std::out_of_range if `i1` and `i2` do not refer to elements within the range `[0, size())` - @throw std::length_error if the resulting string exceeds `max_size()` - @return `*this` - */ - template - BOOST_FIXED_STRING_CPP14_CXPER -#if GENERATING_DOCUMENTATION - fixed_string& -#else - typename std::enable_if< - std::is_convertible::value && - ! std::is_convertible::value, - fixed_string&>::type -#endif - replace( - const_iterator i1, - const_iterator i2, - const T& t) - { - string_view_type sv = t; - return replace(i1 - begin(), i2 - i1, sv.data(), sv.size()); - } - - /** Replace a subset of the string. - - Replaces the part of the string indicated by `[i1, i2)` with the characters in the range `[s, s + n)`. - - @throw std::out_of_range if `i1` and `i2` do not refer to elements within the range `[0, size())` - @throw std::length_error if the resulting string exceeds `max_size()` - @return `*this` - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - replace( - const_iterator i1, - const_iterator i2, - const CharT* s, - size_type n) - { - return replace(i1 - begin(), i2 - i1, s, n); - } - - /** Replace a subset of the string. - - Replaces the part of the string indicated by `[i1, i2)` with the characters in the range `[s, s + Traits::length(s))`. - - @throw std::out_of_range if `i1` and `i2` do not refer to elements within the range `[0, size())` - @throw std::length_error if the resulting string exceeds `max_size()` - @return `*this` - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - replace( - const_iterator i1, - const_iterator i2, - const CharT* s) - { - return replace(i1, i2, s, Traits::length(s)); - } - - /** Replace a subset of the string. - - Replaces the part of the string indicated by `[i1, i2)` with `n` copies of `c`. - - @throw std::out_of_range if `i1` and `i2` do not refer to elements within the range `[0, size())` - @throw std::length_error if the resulting string exceeds `max_size()` - @return `*this` - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - replace( - const_iterator i1, - const_iterator i2, - size_type n, - CharT c) - { - return replace(i1 - begin(), i2 - i1, n, c); - } - - /** Replace a subset of the string. - - Replaces the part of the string indicated by `[i1, i2)` with the characters in the range `[j1, j2)`. - - @throw std::out_of_range if `i1` and `i2` do not refer to elements within the range `[0, size())` - @throw std::length_error if the resulting string exceeds `max_size()` - @return `*this` - */ - template - BOOST_FIXED_STRING_CPP14_CXPER -#if GENERATING_DOCUMENTATION - fixed_string& -#else - typename std::enable_if< - detail::is_input_iterator::value, - fixed_string&>::type -#endif - replace( - const_iterator i1, - const_iterator i2, - InputIterator j1, - InputIterator j2) - { - return replace(i1, i2, fixed_string(j1, j2)); - } - - /** Replace a subset of the string. - - Replaces the part of the string indicated by `[i1, i2)` with the characters in the initializer list `il`. - - @throw std::out_of_range if `i1` and `i2` do not refer to elements within the range `[0, size())` - @throw std::length_error if the resulting string exceeds `max_size()` - @return `*this` - */ - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - replace( - const_iterator i1, - const_iterator i2, - std::initializer_list il) - { - return replace(i1, i2, il.begin(), il.size()); - } - - //-------------------------------------------------------------------------- - // - // Search - // - //-------------------------------------------------------------------------- - - /** Finds the first substring. - - Finds the first substring equal to `t`. - - This function participates in overload resolution if - `T` is convertible to `string_view` and `T` is not - convertible to `CharT const*`. - */ - template - BOOST_FIXED_STRING_CPP14_CXPER -#if GENERATING_DOCUMENTATION - size_type -#else - typename std::enable_if< - std::is_convertible::value && - ! std::is_convertible::value, - size_type>::type -#endif - find( - const T& t, - size_type pos = 0) const - { - string_view_type sv = t; - return find(sv.data(), pos, sv.size()); - } - - /** Finds the first substring. - - Finds the first substring equal to `str`. - */ - template - BOOST_FIXED_STRING_CPP14_CXPER - size_type - find( - const fixed_string& str, - size_type pos = 0) const noexcept - { - return find(str.data(), pos, str.size()); - } - - /** Finds the first substring. - - Finds the first substring equal to the range `(s, s + count)`. This range may contain null characters. - */ - BOOST_FIXED_STRING_CPP14_CXPER - size_type - find( - const CharT* s, - size_type pos, - size_type n) const noexcept; - - /** Finds the first substring. - - Finds the first substring equal to the character - string pointed to by `s`. - - The length of the string is determined by the first - null character using `Traits::length(s)` - */ - BOOST_FIXED_STRING_CPP14_CXPER - size_type - find( - const CharT* s, - size_type pos = 0) const noexcept - { - return find(s, pos, Traits::length(s)); - } - - /// Finds the first character `c`. - BOOST_FIXED_STRING_CPP14_CXPER - size_type - find( - CharT c, - size_type pos = 0) const noexcept - { - return find(&c, pos, 1); - } - - - /** Finds the last substring. - - Finds the last substring equal to `t`. - - This function participates in overload resolution if - `T` is convertible to `string_view` and `T` is not - convertible to `CharT const*`. - */ - template - BOOST_FIXED_STRING_CPP14_CXPER -#if GENERATING_DOCUMENTATION - size_type -#else - typename std::enable_if< - std::is_convertible::value && - ! std::is_convertible::value, - size_type>::type -#endif - rfind( - const T& t, - size_type pos = npos) const - { - string_view_type sv = t; - return rfind(sv.data(), pos, sv.size()); - } - - /** Finds the last substring. - - Finds the last substring equal to `str`. - */ - template - BOOST_FIXED_STRING_CPP14_CXPER - size_type - rfind( - const fixed_string& str, - size_type pos = npos) const noexcept - { - return rfind(str.data(), pos, str.size()); - } - - /** Finds the last substring. - - Finds the last substring equal to the range `(s, s + count)`. This range may contain null characters. - */ - BOOST_FIXED_STRING_CPP14_CXPER - size_type - rfind( - const CharT* s, - size_type pos, - size_type n) const noexcept; - - /** Finds the last substring. - - Finds the last substring equal to the character - string pointed to by `s`. - - The length of the string is determined by the first - null character using `Traits::length(s)` - */ - BOOST_FIXED_STRING_CPP14_CXPER - size_type - rfind( - const CharT* s, - size_type pos = npos) const noexcept - { - return rfind(s, pos, Traits::length(s)); - } - - /// Finds the last character `c`. - BOOST_FIXED_STRING_CPP14_CXPER - size_type - rfind( - CharT c, - size_type pos = npos) const noexcept - { - return rfind(&c, pos, 1); - } - - /** Finds the first character equal to any character in the string. - - Finds the first character equal to one of the characters in `t`. - - This function participates in overload resolution if - `T` is convertible to `string_view` and `T` is not - convertible to `CharT const*`. - */ - template - BOOST_FIXED_STRING_CPP14_CXPER -#if GENERATING_DOCUMENTATION - size_type -#else - typename std::enable_if< - std::is_convertible::value && - ! std::is_convertible::value, - size_type>::type -#endif - find_first_of( - const T& t, - size_type pos = 0) const - { - string_view_type sv = t; - return find_first_of(sv.data(), pos, sv.size()); - } - - /** Finds the first character equal to any character in the string. - - Finds the first character equal to one of the characters in `str`. - */ - template - BOOST_FIXED_STRING_CPP14_CXPER - size_type - find_first_of( - const fixed_string& str, - size_type pos = 0) const noexcept - { - return find_first_of(str.data(), pos, str.size()); - } - - /** Finds the first character equal to any character in the string. - - Finds the first character equal to one of the characters in the range `(s, s + count)`. This range can include null characters. - */ - BOOST_FIXED_STRING_CPP14_CXPER - size_type - find_first_of( - const CharT* s, - size_type pos, - size_type n) const noexcept; - - /** Finds the first character equal to any character in the string. - - Finds the first character equal to one of the characters - in character string pointed to by `s`. - - The length of the string is determined by the first - null character using `Traits::length(s)` - */ - BOOST_FIXED_STRING_CPP14_CXPER - size_type - find_first_of( - const CharT* s, - size_type pos = 0) const noexcept - { - return find_first_of(s, pos, Traits::length(s)); - } - - /// Finds the first character equal to `c`. - BOOST_FIXED_STRING_CPP14_CXPER - size_type - find_first_of( - CharT c, - size_type pos = 0) const noexcept - { - return find_first_of(&c, pos, 1); - } - - /** Finds the last character equal to any character in the string. - - Finds the last character equal to one of the characters in `t`. - - This function participates in overload resolution if - `T` is convertible to `string_view` and `T` is not - convertible to `CharT const*`. - */ - template - BOOST_FIXED_STRING_CPP14_CXPER -#if GENERATING_DOCUMENTATION - size_type -#else - typename std::enable_if< - std::is_convertible::value && - ! std::is_convertible::value, - size_type>::type -#endif - find_last_of( - const T& t, - size_type pos = npos) const - { - string_view_type sv = t; - return find_last_of(sv.data(), pos, sv.size()); - } - - /** Finds the last character equal to any character in the string. - - Finds the last character equal to one of the characters in `str`. - */ - template - BOOST_FIXED_STRING_CPP14_CXPER - size_type - find_last_of( - const fixed_string& str, - size_type pos = npos) const noexcept - { - return find_last_of(str.data(), pos, str.size()); - } - - /** Finds the last character equal to any character in the string. - - Finds the last character equal to one of the characters in the range `(s, s + count)`. This range can include null characters. - */ - BOOST_FIXED_STRING_CPP14_CXPER - size_type - find_last_of( - const CharT* s, - size_type pos, - size_type n) const noexcept; - - /** Finds the last character equal to any character in the string. - - Finds the last character equal to one of the characters - in character string pointed to by `s`. - - The length of the string is determined by the first - null character using `Traits::length(s)` - */ - BOOST_FIXED_STRING_CPP14_CXPER - size_type - find_last_of( - const CharT* s, - size_type pos = npos) const noexcept - { - return find_last_of(s, pos, Traits::length(s)); - } - - /// Finds the last character equal to `c`. - BOOST_FIXED_STRING_CPP14_CXPER - size_type - find_last_of( - CharT c, - size_type pos = npos) const noexcept - { - return find_last_of(&c, pos, 1); - } - - /** Finds the first character equal to none the characters in the string. - - Finds the first character equal to none of the characters in `t`. - - This function participates in overload resolution if - `T` is convertible to `string_view` and `T` is not - convertible to `CharT const*`. - */ - template - BOOST_FIXED_STRING_CPP14_CXPER -#if GENERATING_DOCUMENTATION - size_type -#else - typename std::enable_if< - std::is_convertible::value && - ! std::is_convertible::value, - size_type>::type -#endif - find_first_not_of( - const T& t, - size_type pos = 0) const - { - string_view_type sv = t; - return find_first_not_of(sv.data(), pos, sv.size()); - } - - /** Finds the first character equal to none the characters in the string. - - Finds the first character equal to none of the characters in `str`. - */ - template - BOOST_FIXED_STRING_CPP14_CXPER - size_type - find_first_not_of( - const fixed_string& str, - size_type pos = 0) const noexcept - { - return find_first_not_of(str.data(), pos, str.size()); - } - - /** Finds the first character equal to none the characters in the string. - - Finds the first character equal to none of characters in range `(s, s + count)`. This range can include null characters. - */ - BOOST_FIXED_STRING_CPP14_CXPER - size_type - find_first_not_of( - const CharT* s, - size_type pos, - size_type n) const noexcept; - - /** Finds the first character equal to none the characters in the string. - - Finds the first character equal to none of the characters in - character string pointed to by `s`. - - The length of the string is determined by the first - null character using `Traits::length(s)` - */ - BOOST_FIXED_STRING_CPP14_CXPER - size_type - find_first_not_of( - const CharT* s, - size_type pos = 0) const noexcept - { - return find_first_not_of(s, pos, Traits::length(s)); - } - - /// Finds the first character not equal to `c`. - BOOST_FIXED_STRING_CPP14_CXPER - size_type - find_first_not_of( - CharT c, - size_type pos = 0) const noexcept - { - return find_first_not_of(&c, pos, 1); - } - - /** Finds the last character equal to none the characters in the string. - - Finds the last character equal to none of the characters in `t`. - - This function participates in overload resolution if - `T` is convertible to `string_view` and `T` is not - convertible to `CharT const*`. - */ - template - BOOST_FIXED_STRING_CPP14_CXPER -#if GENERATING_DOCUMENTATION - size_type -#else - typename std::enable_if< - std::is_convertible::value && - ! std::is_convertible::value, - size_type>::type -#endif - find_last_not_of( - const T& t, - size_type pos = npos) const - { - string_view_type sv = t; - return find_last_not_of(sv.data(), pos, sv.size()); - } - - /** Finds the last character equal to none the characters in the string. - - Finds the last character equal to none of the characters in `str`. - */ - template - BOOST_FIXED_STRING_CPP14_CXPER - size_type - find_last_not_of( - const fixed_string& str, - size_type pos = npos) const noexcept - { - return find_last_not_of(str.data(), pos, str.size()); - } - - /** Finds the last character equal to none the characters in the string. - - Finds the last character equal to none of the characters in range `(s, s + count)`. This range can include null characters. - */ - BOOST_FIXED_STRING_CPP14_CXPER - size_type - find_last_not_of( - const CharT* s, - size_type pos, - size_type n) const noexcept; - - - /** Finds the last character equal to none the characters in the string. - - Finds the last character equal to none of the characters in - character string pointed to by `s`. - - The length of the string is determined by the first - null character using `Traits::length(s)` - */ - BOOST_FIXED_STRING_CPP14_CXPER - size_type - find_last_not_of( - const CharT* s, - size_type pos = npos) const noexcept - { - return find_last_not_of(s, pos, Traits::length(s)); - } - - /// Finds the last character not equal to `c`. - BOOST_FIXED_STRING_CPP14_CXPER - size_type - find_last_not_of( - CharT c, - size_type pos = npos) const noexcept - { - return find_last_not_of(&c, pos, 1); - } - - /// Returns whether the string begins with `s` - BOOST_FIXED_STRING_CPP14_CXPER - bool - starts_with( - string_view_type s) const noexcept - { - const size_type len = s.size(); - return size() >= len && !Traits::compare(data(), s.data(), len); - } - - /// Returns whether the string begins with `c` - BOOST_FIXED_STRING_CPP14_CXPER - bool - starts_with( - CharT c) const noexcept - { - return !empty() && Traits::eq(front(), c); - } - - /// Returns whether the string begins with `s` - BOOST_FIXED_STRING_CPP14_CXPER - bool - starts_with( - const CharT* s) const noexcept - { - const size_type len = Traits::length(s); - return size() >= len && !Traits::compare(data(), s, len); - } - - /// Returns whether the string ends with `s` - BOOST_FIXED_STRING_CPP14_CXPER - bool - ends_with( - string_view_type s) const noexcept - { - const size_type len = s.size(); - return size() >= len && !Traits::compare(data() + (size() - len), s.data(), len); - } - - /// Returns whether the string ends with `c` - BOOST_FIXED_STRING_CPP14_CXPER - bool - ends_with( - CharT c) const noexcept - { - return !empty() && Traits::eq(back(), c); - } - - /// Returns whether the string begins with `s` - BOOST_FIXED_STRING_CPP14_CXPER - bool - ends_with( - const CharT* s) const noexcept - { - const size_type len = Traits::length(s); - return size() >= len && !Traits::compare(data() + (size() - len), s, len); - } - -private: - BOOST_FIXED_STRING_CPP14_CXPER - fixed_string& - assign_char(CharT ch, std::true_type) noexcept; - - fixed_string& - assign_char(CharT ch, std::false_type); -}; - -//------------------------------------------------------------------------------ -// -// Disallowed operations -// -//------------------------------------------------------------------------------ - -// These operations are explicitly deleted since -// there is no reasonable implementation possible. - -template< - std::size_t N, std::size_t M, - typename CharT, typename Traits> -inline -void -operator+( - fixed_stringconst& lhs, - fixed_stringconst& rhs) = delete; - -template -inline -void -operator+( - CharT const* lhs, - fixed_stringconst& rhs) = delete; - -template -inline -void -operator+( - CharT lhs, - fixed_string const& rhs) = delete; - -template -inline -void -operator+( - fixed_string const& lhs, - CharT const* rhs) = delete; - -template -inline -void -operator+( - fixed_string const& lhs, - CharT rhs) = delete; - -//------------------------------------------------------------------------------ -// -// Non-member functions -// -//------------------------------------------------------------------------------ - -template< - std::size_t N, std::size_t M, - typename CharT, typename Traits> -inline -bool -operator==( - fixed_string const& lhs, - fixed_string const& rhs) -{ - return lhs.compare(rhs) == 0; -} - -template< - std::size_t N, std::size_t M, - typename CharT, typename Traits> -inline -bool -operator!=( - fixed_string const& lhs, - fixed_string const& rhs) -{ - return lhs.compare(rhs) != 0; -} - -template< - std::size_t N, std::size_t M, - typename CharT, typename Traits> -inline -bool -operator<( - fixed_string const& lhs, - fixed_string const& rhs) -{ - return lhs.compare(rhs) < 0; -} - -template< - std::size_t N, std::size_t M, - typename CharT, typename Traits> -inline -bool -operator<=( - fixed_string const& lhs, - fixed_string const& rhs) -{ - return lhs.compare(rhs) <= 0; -} - -template< - std::size_t N, std::size_t M, - typename CharT, typename Traits> -inline -bool -operator>( - fixed_string const& lhs, - fixed_string const& rhs) -{ - return lhs.compare(rhs) > 0; -} - -template< - std::size_t N, std::size_t M, - typename CharT, typename Traits> -inline -bool -operator>=( - fixed_string const& lhs, - fixed_string const& rhs) -{ - return lhs.compare(rhs) >= 0; -} - -template -inline -bool -operator==( - CharT const* lhs, - fixed_string const& rhs) -{ - return detail::lexicographical_compare( - lhs, Traits::length(lhs), - rhs.data(), rhs.size()) == 0; -} - -template -inline -bool -operator==( - fixed_string const& lhs, - CharT const* rhs) -{ - return detail::lexicographical_compare( - lhs.data(), lhs.size(), - rhs, Traits::length(rhs)) == 0; -} - -template -inline -bool -operator!=( - CharT const* lhs, - fixed_string const& rhs) -{ - return detail::lexicographical_compare( - lhs, Traits::length(lhs), - rhs.data(), rhs.size()) != 0; -} - -template -inline -bool -operator!=( - fixed_string const& lhs, - CharT const* rhs) -{ - return detail::lexicographical_compare( - lhs.data(), lhs.size(), - rhs, Traits::length(rhs)) != 0; -} - -template -inline -bool -operator<( - CharT const* lhs, - fixed_string const& rhs) -{ - return detail::lexicographical_compare( - lhs, Traits::length(lhs), - rhs.data(), rhs.size()) < 0; -} - -template -inline -bool -operator<( - fixed_string const& lhs, - CharT const* rhs) -{ - return detail::lexicographical_compare( - lhs.data(), lhs.size(), - rhs, Traits::length(rhs)) < 0; -} - -template -inline -bool -operator<=( - CharT const* lhs, - fixed_string const& rhs) -{ - return detail::lexicographical_compare( - lhs, Traits::length(lhs), - rhs.data(), rhs.size()) <= 0; -} - -template -inline -bool -operator<=( - fixed_string const& lhs, - CharT const* rhs) -{ - return detail::lexicographical_compare( - lhs.data(), lhs.size(), - rhs, Traits::length(rhs)) <= 0; -} - -template -inline -bool -operator>( - CharT const* lhs, - fixed_string const& rhs) -{ - return detail::lexicographical_compare( - lhs, Traits::length(lhs), - rhs.data(), rhs.size()) > 0; -} - -template -inline -bool -operator>( - fixed_string const& lhs, - CharT const* rhs) -{ - return detail::lexicographical_compare( - lhs.data(), lhs.size(), - rhs, Traits::length(rhs)) > 0; -} - -template -inline -bool -operator>=( - CharT const* lhs, - fixed_string const& rhs) -{ - return detail::lexicographical_compare( - lhs, Traits::length(lhs), - rhs.data(), rhs.size()) >= 0; -} - -template -inline -bool -operator>=( - fixed_string const& lhs, - CharT const* rhs) -{ - return detail::lexicographical_compare( - lhs.data(), lhs.size(), - rhs, Traits::length(rhs)) >= 0; -} - -//------------------------------------------------------------------------------ -// -// swap -// -//------------------------------------------------------------------------------ - -template< - std::size_t N, - typename CharT, - typename Traits> -inline -void -swap( - fixed_string& lhs, - fixed_string& rhs) -{ - lhs.swap(rhs); -} - -template< - std::size_t N, std::size_t M, - typename CharT, typename Traits> -inline -void -swap( - fixed_string& lhs, - fixed_string& rhs) -{ - lhs.swap(rhs); -} - -//------------------------------------------------------------------------------ -// -// Input/Output -// -//------------------------------------------------------------------------------ - -template -inline -std::basic_ostream& -operator<<(std::basic_ostream& os, - fixed_string const& s) +// +// Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com) +// Copyright (c) 2019 Krystian Stasiowski (sdkrystian at gmail dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Official repository: https://github.com/boostorg/static_string +// + +#ifndef BOOST_STATIC_STRING_STATIC_STRING_HPP +#define BOOST_STATIC_STRING_STATIC_STRING_HPP + +#include +#include +#include +#include +#include +#include +#include + +namespace boost { +namespace static_string { + +/** A fixed-capacity string. + + These objects behave like `std::string` except that the storage + is not dynamically allocated but rather fixed in size, and + stored in the object itself. + + These strings offer performance advantages when an algorithm + can execute with a reasonable upper limit on the size of a value. + + @see to_static_string +*/ +template< + std::size_t N, + typename CharT, + typename Traits = std::char_traits> +class basic_static_string +#ifndef GENERATING_DOCUMENTATION + : detail::optimization_base +#endif { - return os << string_view(s.data(), s.size()); -} - -//------------------------------------------------------------------------------ -// -// Numeric conversions -// -//------------------------------------------------------------------------------ - -/** Returns a static string representing an integer as a decimal. - - @param x The signed or unsigned integer to convert. - This must be an integral type. - - @return A @ref fixed_string with an implementation defined - maximum size at least as large enough to hold the longest - possible decimal representation of any integer of the given type. -*/ -template< - class Integer -#ifndef GENERATING_DOCUMENTATION - , class = typename std::enable_if< - std::is_integral::value>::type -#endif -> -inline -fixed_string -to_fixed_string(Integer x); - -//------------------------------------------------------------------------------ -// -// Deduction Guides -// -//------------------------------------------------------------------------------ - -#ifdef BOOST_FIXED_STRING_USE_DEDUCT -template -fixed_string(CharT(&)[N]) -> - fixed_string>; -#endif - -//------------------------------------------------------------------------------ -// -// Hashing -// -//------------------------------------------------------------------------------ - -#ifndef BOOST_FIXED_STRING_STANDALONE -// hash_value overload for Boost.Container_Hash -template -std::size_t -hash_value( - const fixed_string& str) -{ - return boost::hash_range(str.begin(), str.end()); -} -#endif - -} // fixed_string -} // boost - -// std::hash partial specialization for fixed_string -namespace std -{ - template - struct hash> - { - std::size_t - operator()( - const boost::fixed_string::fixed_string& str) const - { -#ifndef BOOST_FIXED_STRING_STANDALONE - return boost::hash_range(str.begin(), str.end()); -#else - using sv = boost::fixed_string::basic_string_view; - return std::hash()(sv(str.data(), str.size())); -#endif - } - }; -} // std - -#include -#endif +private: + template + friend class basic_static_string; + + BOOST_STATIC_STRING_CPP14_CONSTEXPR + void + term() noexcept + { + this->term_impl(); + } + + using base = detail::optimization_base; + +public: + //-------------------------------------------------------------------------- + // + // Member types + // + //-------------------------------------------------------------------------- + + using traits_type = Traits; + using value_type = typename Traits::char_type; + using size_type = std::size_t; + using difference_type = std::ptrdiff_t; + using pointer = value_type*; + using reference = value_type&; + using const_pointer = value_type const*; + using const_reference = value_type const&; + using iterator = value_type*; + using const_iterator = value_type const*; + + using reverse_iterator = + std::reverse_iterator; + + using const_reverse_iterator = + std::reverse_iterator; + + /// The type of `string_view` returned by the interface + using string_view_type = + string_view; + + //-------------------------------------------------------------------------- + // + // Constants + // + //-------------------------------------------------------------------------- + + /// Maximum size of the string excluding any null terminator + static constexpr size_type static_capacity = N; + + /// A special index + static constexpr size_type npos = size_type(-1); + + //-------------------------------------------------------------------------- + // + // Construction + // + //-------------------------------------------------------------------------- + + /** Construct a `basic_static_string`. + + Construct an empty string + */ + BOOST_STATIC_STRING_CPP11_CONSTEXPR + basic_static_string() noexcept; + + /** Construct a `basic_static_string`. + + Construct the string with `count` copies of character `ch`. + + The behavior is undefined if `count >= npos` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string( + size_type count, + CharT ch); + + /** Construct a `basic_static_string`. + + Construct with a substring (pos, other.size()) of `other`. + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string( + basic_static_string const& other, + size_type pos); + + /** Construct a `basic_static_string`. + + Construct with a substring (pos, count) of `other`. + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string( + basic_static_string const& other, + size_type pos, + size_type count); + + /** Construct a `basic_static_string`. + + Construct with the first `count` characters of `s`, including nulls. + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string( + CharT const* s, + size_type count); + + /** Construct a `basic_static_string`. + + Construct from a null terminated string. + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string( + CharT const* s); + + /** Construct a `basic_static_string`. + + Construct from a range of characters + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string( + InputIterator first, + InputIterator last + #ifndef GENERATING_DOCUMENTATION + , typename std::enable_if< + detail::is_input_iterator::value, + iterator>::type* = 0 + #endif + ); + + /** Construct a `basic_static_string`. + + Copy constructor. + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string( + basic_static_string const& other) noexcept; + + /** Construct a `basic_static_string`. + + Copy constructor. + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string( + basic_static_string const& other); + + /** Construct a `basic_static_string`. + + Construct from an initializer list + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string( + std::initializer_list init); + + /** Construct a `basic_static_string`. + + Construct from a `string_view` + */ + explicit + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string( + string_view_type sv); + + /** Construct a `basic_static_string`. + + Construct from any object convertible to `string_view_type`. + + The range (pos, n) is extracted from the value + obtained by converting `t` to `string_view_type`, + and used to construct the string. + */ + template::value>::type +#endif + > + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string( + T const& t, + size_type pos, + size_type n); + + //-------------------------------------------------------------------------- + // + // Assignment + // + //-------------------------------------------------------------------------- + + /** Assign to the string. + + If `*this` and `s` are the same object, + this function has no effect. + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + operator=( + basic_static_string const& s) noexcept + { + return assign(s); + } + + /** Assign to the string. + + Replace the contents with a copy of `s` + + @throw std::length_error if `s.size() > max_size()` + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + operator=( + basic_static_string const& s) + { + return assign(s); + } + + /** Assign to the string. + + Replace the contents with those of the null-terminated string `s` + + @throw std::length_error if `Traits::length(s) > max_size()` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + operator=( + CharT const* s) + { + return assign(s); + } + + /** Assign to the string. + + Assign from single character. + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + operator=( + CharT ch) + { + return assign_char(ch, + std::integral_constant0)>{}); + } + + /** Assign to the string. + + Assign from initializer list. + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + operator=( + std::initializer_list ilist) + { + return assign(ilist); + } + + /** Assign to the string. + + Assign from `string_view_type`. + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + operator=( + string_view_type sv) + { + return assign(sv); + } + + /** Replace the contents. + + Replace the contents with `count` copies of character `ch` + + @throw std::length_error if `count > max_size()` + @return `*this` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + assign( + size_type count, + CharT ch); + + /** Replace the contents. + + Replace the contents with a copy of another `basic_static_string` + + @return `*this` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + assign( + basic_static_string const& s) noexcept; + + /** Replace the contents. + + Replace the contents with a copy of another `basic_static_string` + + @throw std::length_error if `s.size() > max_size()` + @return `*this` + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + assign( + basic_static_string const& s) + { + // VFALCO this could come in two flavors, + // N>M and NM + return assign(s.data(), s.size()); + } + + /** Replace the contents. + + Replace the contents with a copy of `count` characters starting at `npos` from `s`. + + @throw std::length_error if `count > max_size()` + @return `*this` + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + assign( + basic_static_string const& s, + size_type pos, + size_type count = npos); + + /** Replace the contents. + + Replace the contents with the first `count` characters of `s`, including nulls. + + @throw std::length_error if `count > max_size()` + @return `*this` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + assign( + CharT const* s, + size_type count); + + /** Replace the contents. + + Replace the contents with a copy of a null terminated string `s` + + @throw std::length_error if `Traits::length(s) > max_size()` + @return `*this` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + assign( + CharT const* s) + { + return assign(s, Traits::length(s)); + } + + /** Replace the contents. + + Replace the contents with a copy of characters from the range `(first, last)` + + @throw std::length_error if `std::distance(first, last) > max_size()` + @return `*this` + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR +#ifdef GENERATING_DOCUMENTATION + basic_static_string& +#else + typename std::enable_if< + detail::is_input_iterator::value, + basic_static_string&>::type +#endif + assign( + InputIterator first, + InputIterator last); + + /** Replace the contents. + + Replace the contents with the characters in an initializer list + + @throw std::length_error if `ilist.size() > max_size()` + @return `*this` + */ + basic_static_string& + assign( + std::initializer_list ilist) + { + return assign(ilist.begin(), ilist.end()); + } + + /** Replace the contents. + + Replace the contents with a copy of the characters from `string_view_type{t}` + + @throw std::length_error if `string_view_type{t}.size() > max_size()` + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR +#if GENERATING_DOCUMENTATION + basic_static_string& +#else + typename std::enable_if< + std::is_convertible::value && + ! std::is_convertible::value, + basic_static_string&>::type +#endif + assign(T const& t) + { + string_view_type ss{t}; + return assign(ss.data(), ss.size()); + } + + /** Replace the contents. + + Replace the contents with a copy of the characters from `string_view_type{t}.substr(pos, count)` + + The range `[pos, count)` is extracted from the value + obtained by converting `t` to `string_view_type`, + and used to assign the string. + + @throw std::out_of_range if `pos > string_view_type{t}.size()` + @throw std::length_error if `string_view_type{t}.substr(pos, count).size() > max_size()` + */ + + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR +#if GENERATING_DOCUMENTATION + basic_static_string& +#else + typename std::enable_if< + std::is_convertible::value && + ! std::is_convertible::value, + basic_static_string&>::type +#endif + assign( + T const& t, + size_type pos, + size_type count = npos) + { + return assign(string_view_type{t}.substr(pos, count)); + } + + //-------------------------------------------------------------------------- + // + // Element access + // + //-------------------------------------------------------------------------- + + /** Access specified character with bounds checking. + + @throw std::out_of_range if `pos >= size()` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + reference + at(size_type pos); + + /** Access specified character with bounds checking. + + @throw std::out_of_range if `pos >= size()` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + const_reference + at(size_type pos) const; + + /** Access specified character + + Undefined behavior if `pos > size()` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + reference + operator[](size_type pos) noexcept + { + return data()[pos]; + } + + /** Access specified character. + + Undefined behavior if `pos > size()` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + const_reference + operator[](size_type pos) const noexcept + { + return data()[pos]; + } + + /** Accesses the first character. + + Undefined behavior if `empty() == true` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + CharT& + front() noexcept + { + return data()[0]; + } + + /** Accesses the first character. + + Undefined behavior if `empty() == true` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + CharT const& + front() const noexcept + { + return data()[0]; + } + + /** Accesses the last character. + + Undefined behavior if `empty() == true` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + CharT& + back() noexcept + { + return data()[size()-1]; + } + + /** Accesses the last character. + + Undefined behavior if `empty() == true` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + CharT const& + back() const noexcept + { + return data()[size()-1]; + } + + /// Returns a pointer to the first character of the string. + BOOST_STATIC_STRING_CPP14_CONSTEXPR + CharT* + data() noexcept + { + return this->data_impl(); + } + + /// Returns a pointer to the first character of a string. + BOOST_STATIC_STRING_CPP14_CONSTEXPR + CharT const* + data() const noexcept + { + return this->data_impl(); + } + + /// Returns a non-modifiable standard C character array version of the string. + BOOST_STATIC_STRING_CPP14_CONSTEXPR + CharT const* + c_str() const noexcept + { + return data(); + } + + /// Convert a static string to a `string_view_type` + BOOST_STATIC_STRING_CPP11_CONSTEXPR + operator string_view_type() const noexcept + { + return string_view_type{data(), size()}; + } + + //-------------------------------------------------------------------------- + // + // Iterators + // + //-------------------------------------------------------------------------- + + /// Returns an iterator to the beginning. + BOOST_STATIC_STRING_CPP14_CONSTEXPR + iterator + begin() noexcept + { + return data(); + } + + /// Returns an iterator to the beginning. + BOOST_STATIC_STRING_CPP14_CONSTEXPR + const_iterator + begin() const noexcept + { + return data(); + } + + /// Returns an iterator to the beginning. + BOOST_STATIC_STRING_CPP14_CONSTEXPR + const_iterator + cbegin() const noexcept + { + return data(); + } + + /// Returns an iterator to the end. + BOOST_STATIC_STRING_CPP14_CONSTEXPR + iterator + end() noexcept + { + return &data()[size()]; + } + + /// Returns an iterator to the end. + BOOST_STATIC_STRING_CPP14_CONSTEXPR + const_iterator + end() const noexcept + { + return &data()[size()]; + } + + /// Returns an iterator to the end. + BOOST_STATIC_STRING_CPP14_CONSTEXPR + const_iterator + cend() const noexcept + { + return &data()[size()]; + } + + /// Returns a reverse iterator to the beginning. + reverse_iterator + rbegin() noexcept + { + return reverse_iterator{end()}; + } + + /// Returns a reverse iterator to the beginning. + const_reverse_iterator + rbegin() const noexcept + { + return const_reverse_iterator{cend()}; + } + + /// Returns a reverse iterator to the beginning. + const_reverse_iterator + crbegin() const noexcept + { + return const_reverse_iterator{cend()}; + } + + /// Returns a reverse iterator to the end. + reverse_iterator + rend() noexcept + { + return reverse_iterator{begin()}; + } + + /// Returns a reverse iterator to the end. + const_reverse_iterator + rend() const noexcept + { + return const_reverse_iterator{cbegin()}; + } + + /// Returns a reverse iterator to the end. + const_reverse_iterator + crend() const noexcept + { + return const_reverse_iterator{cbegin()}; + } + + //-------------------------------------------------------------------------- + // + // Capacity + // + //-------------------------------------------------------------------------- + + /// Returns `true` if the string is empty. + BOOST_STATIC_STRING_NODISCARD + BOOST_STATIC_STRING_CPP11_CONSTEXPR + bool + empty() const noexcept + { + return size() == 0; + } + + /// Returns the number of characters, excluding the null terminator. + BOOST_STATIC_STRING_CPP11_CONSTEXPR + size_type + size() const noexcept + { + return this->size_impl(); + } + + /** Returns the number of characters, excluding the null terminator + + Equivalent to calling `size()`. + */ + BOOST_STATIC_STRING_CPP11_CONSTEXPR + size_type + length() const noexcept + { + return size(); + } + + /// Returns the maximum number of characters that can be stored, excluding the null terminator. + BOOST_STATIC_STRING_CPP11_CONSTEXPR + size_type + max_size() const noexcept + { + return N; + } + + /** Reserve space for `n` characters, excluding the null terminator + + This function has no effect when `n <= max_size()`. + + @throw std::length_error if `n > max_size()` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + void + reserve(std::size_t n); + + /** Returns the number of characters that can be held in currently allocated storage. + + This function always returns `max_size()`. + */ + BOOST_STATIC_STRING_CPP11_CONSTEXPR + size_type + capacity() const noexcept + { + return max_size(); + } + + /** Reduces memory usage by freeing unused memory. + + This function call has no effect. + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + void + shrink_to_fit() noexcept + { + } + + //-------------------------------------------------------------------------- + // + // Operations + // + //-------------------------------------------------------------------------- + + /// Clears the contents + BOOST_STATIC_STRING_CPP14_CONSTEXPR + void + clear() noexcept; + + /** Insert into the string. + + Inserts `count` copies of character `ch` at the position `index` + + @throw std::out_of_range if `index > size()` + @throw std::length_error if `size() + count > max_size()` + @return `*this` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + insert( + size_type index, + size_type count, + CharT ch); + + /** Insert into the string. + + Inserts null-terminated string pointed to by `s` at the position `index` + + @throw std::out_of_range if `index > size()` + @throw std::length_error if `size() + count > max_size()` + @return `*this` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + insert( + size_type index, + CharT const* s) + { + return insert(index, s, Traits::length(s)); + } + + /** Insert into the string. + + Inserts the characters in the range `(s, s+count)` at the position `index` + + The inserted string can contain null characters. + + @throw std::out_of_range if `index > size()` + @throw std::length_error if ` size() + count> max_size()` + @return `*this` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + insert( + size_type index, + CharT const* s, + size_type count); + + /** Insert into the string. + + Inserts the contents of string view `sv` at the position `index` + + The inserted string can contain null characters. + + @throw std::out_of_range if `index > size()` + @throw std::length_error if `size() + sv.size() > max_size()` + @return `*this` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + insert( + size_type index, + string_view_type sv) + { + return insert(index, sv.data(), sv.size()); + } + + /** Insert into the string. + + Inserts the string `sv.substr(index_str, count)` at the position `index` + + The inserted string can contain null characters. + + @throw std::out_of_range if `index > size() || index_str > sv.size()` + @throw std::length_error if `size() + sv.substr(index_str, count).size() > max_size()` + @return `*this` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + insert( + size_type index, + string_view_type sv, + size_type index_str, + size_type count = npos) + { + return insert(index, sv.substr(index_str, count)); + } + + /** Insert into the string. + + Inserts character `ch` before the character (if any) pointed by `pos` + + The inserted character can be null. + + @throw std::length_error if `size() + 1> max_size()` + @return An iterator to the first inserted character or pos if no insertion took place + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + iterator + insert( + const_iterator pos, + CharT ch) + { + return insert(pos, 1, ch); + } + + /** Insert into the string. + + Inserts `count` copies of character `ch` before the character (if any) pointed by `pos` + + The inserted characters can be null. + + @throw std::length_error if `size() + count > max_size()` + @return An iterator to the first inserted character or pos if no insertion took place + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + iterator + insert( + const_iterator pos, + size_type count, + CharT ch); + + /** Insert into the string. + + Inserts characters from the range `(first, last)` before the element (if any) pointed by `pos` + + The inserted string can contain null characters. + This function does not participate in overload resolution if + `InputIterator` does not satisfy LegacyInputIterator + + @throw std::length_error if `size() + std::distance(first, last) > max_size()` + @return An iterator to the first inserted character or pos if no insertion took place + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR +#if GENERATING_DOCUMENTATION + iterator +#else + typename std::enable_if< + detail::is_input_iterator::value, + iterator>::type +#endif + insert( + const_iterator pos, + InputIterator first, + InputIterator last); + + /** Insert into the string. + + Inserts elements from initializer list `ilist` before the element (if any) pointed by `pos` + + The inserted string can contain null characters. + + @throw std::length_error if `size() + ilist.size() > max_size()` + @return An iterator to the first inserted character or pos if no insertion took place + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + iterator + insert( + const_iterator pos, + std::initializer_list ilist) + { + return insert(pos, ilist.begin(), ilist.end()); + } + + /** Insert into the string. + + Inserts elements from `string_view{t}` at the position `index` + + The inserted string can contain null characters. + This function participates in overload resolution if + `T` is convertible to `string_view` and `T` is not + convertible to `CharT const*`. + + @throw std::length_error if `size() + string_view{t}.substr(index_str, count).size() > max_size()` + @return `*this` + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR +#if GENERATING_DOCUMENTATION + basic_static_string& +#else + typename std::enable_if< + std::is_convertible< + T const&, string_view_type>::value && + ! std::is_convertible< + T const&, CharT const*>::value, + basic_static_string&>::type +#endif + insert( + size_type index, + T const& t); + + /** Insert into the string. + + Inserts elements from `string_view{t}.substr(index_str, count)` at the position `index` + + The inserted string can contain null characters. + This function participates in overload resolution if + `T` is convertible to `string_view` and `T` is not + convertible to `CharT const*`. + + @throw std::out_of_range if `index_str > string_view{t}.size()` + @throw std::length_error if `size() + string_view{t}.substr(index_str, count).size() > max_size()` + @return `*this` + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR +#if GENERATING_DOCUMENTATION + basic_static_string& +#else + typename std::enable_if< + std::is_convertible::value && + ! std::is_convertible::value, + basic_static_string&>::type +#endif + insert( + size_type index, + T const& t, + size_type index_str, + size_type count = npos); + + /** Removes `min(count, size() - index)` characters starting at `index` + + @throw std::out_of_range if `index > size()` + @return `*this` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + erase( + size_type index = 0, + size_type count = npos); + + /** Removes the character at `pos` + + @return iterator pointing to the character immediately following the character erased, or `end()` if no such character exists + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + iterator + erase( + const_iterator pos); + + /** Removes the characters in the range `(first, last)` + + @return iterator pointing to the character last pointed to before the erase, or `end()` if no such character exists + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + iterator + erase( + const_iterator first, + const_iterator last); + + /** Appends the given character `ch` to the end of the string. + + @throw std::length_error if `size() + 1 > max_size()` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + void + push_back( + CharT ch); + + /** Removes the last character from the string + + The behavior is undefined if the string is empty. + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + void + pop_back() noexcept + { + BOOST_STATIC_STRING_ASSERT(size() > 0); + this->set_size(size() - 1); + term(); + } + + /** Appends `count` copies of character `ch` + + The appended characters may be null. + + @throw std::length_error if `size() + count > max_size()` + @return `*this` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + append( + size_type count, + CharT ch) + { + return insert(size(), count, ch); + } + + /** Append to the string. + + Appends the contents of string view `sv` + + The appended string can contain null characters. + + @throw std::length_error if `size() + sv.size() > max_size()` + @return `*this` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + append( + string_view_type sv) + { + return append(sv.data(), sv.size()); + } + + /** Append to the string. + + Appends the contents of `sv.substr(pos, count)` + + The appended string can contain null characters. + + @throw std::out_of_range if `pos > sv.size()` + @throw std::length_error if `size() + sv.substr(pos, count).size() > max_size()` + @return `*this` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + append( + string_view_type sv, + size_type pos, + size_type count = npos) + { + return append(sv.substr(pos, count)); + } + + /** Append to the string. + + Appends characters in the range `(s, s + count)` + + The appended string can contain null characters. + + @throw std::length_error if `size() + count > max_size()` + @return `*this` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + append( + CharT const* s, + size_type count); + + /** Append to the string. + + Appends the null-terminated character string pointed to by `s` + + The length of the string is determined by the first + null character using `Traits::length(s)`. + + @throw std::length_error if `size() + Traits::length(s) > max_size()` + @return `*this` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + append( + CharT const* s) + { + return append(s, Traits::length(s)); + } + + /** Append to the string. + + Appends characters from the range `(first, last)` + + The inserted string can contain null characters. + This function does not participate in overload resolution if + `InputIterator` does not satisfy LegacyInputIterator + + @throw std::length_error if `size() + std::distance(first, last) > max_size()` + @return `*this` + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR +#if GENERATING_DOCUMENTATION + basic_static_string& +#else + typename std::enable_if< + detail::is_input_iterator::value, + basic_static_string&>::type +#endif + append( + InputIterator first, + InputIterator last) + { + insert(end(), first, last); + return *this; + } + + /** Append to the string. + + Appends characters from initializer list `ilist` + + The appended string can contain null characters. + + @throw std::length_error if `size() + ilist.size() > max_size()` + @return `*this` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + append( + std::initializer_list ilist) + { + insert(end(), ilist); + return *this; + } + + /** Append to the string. + + Appends characters from `string_view{t}` + + The appended string can contain null characters. + This function participates in overload resolution if + `T` is convertible to `string_view` and `T` is not + convertible to `CharT const*`. + + @throw std::length_error if `size() + string_view{t} > max_size()` + @return `*this` + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR +#if GENERATING_DOCUMENTATION + basic_static_string& +#else + typename std::enable_if< + std::is_convertible< + T const&, string_view_type>::value && + ! std::is_convertible< + T const&, CharT const*>::value, + basic_static_string&>::type +#endif + append( + T const& t) + { + return append(string_view{t}); + } + + /** Append to the string. + + Appends characters from `string_view{t}.substr{pos, count}` + + The appended string can contain null characters. + This function participates in overload resolution if + `T` is convertible to `string_view` and `T` is not + convertible to `CharT const*`. + + @throw std::out_of_range if `pos > string_view{t}.size()` + @throw std::length_error if `size() + string_view{t}.substr(pos, count).size() > max_size()` + @return `*this` + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR +#if GENERATING_DOCUMENTATION + basic_static_string& +#else + typename std::enable_if< + std::is_convertible< + T const&, string_view_type>::value && + ! std::is_convertible< + T const&, CharT const*>::value, + basic_static_string&>::type +#endif + append( + T const& t, + size_type pos, + size_type count = npos) + { + return append(string_view{t}.substr(pos, count)); + } + + /** Append to the string. + + @throw std::length_error if `size() + s.size() > max_size()` + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + operator+=( + basic_static_string const& s) + { + return append(s.data(), s.size()); + } + + /** Append to the string. + + Appends the given character `ch` to the end of the string. + + @throw std::length_error if `size() + 1 > max_size()` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + operator+=( + CharT ch) + { + push_back(ch); + return *this; + } + + /** Append to the string. + + Appends the null-terminated character string pointed to by `s` + + The length of the string is determined by the first + null character using `Traits::length(s)`. + + @throw std::length_error if `size() + Traits::length(s) > max_size()` + @return `*this` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + operator+=( + CharT const* s) + { + return append(s); + } + + /** Append to the string. + + Appends characters from initializer list `ilist` + + The appended string can contain null characters. + + @throw std::length_error if `size() + ilist.size() > max_size()` + @return `*this` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + operator+=( + std::initializer_list ilist) + { + return append(ilist); + } + + /** Append to the string. + + Appends a copy of the characters from `string_view_type{t}` + + The appended string can contain null characters. + This function participates in overload resolution if + `T` is convertible to `string_view` and `T` is not + convertible to `CharT const*`. + + @throw std::length_error if `string_view_type{t}.size() > max_size()` + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR +#if GENERATING_DOCUMENTATION + basic_static_string& +#else + typename std::enable_if< + std::is_convertible::value && + ! std::is_convertible::value, + basic_static_string&>::type +#endif + operator+=( + T const& t) + { + return append(t); + } + + /** Compare the string with another. + + Compares this string to `s`. + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR + int + compare( + basic_static_string const& s) const noexcept + { + return detail::lexicographical_compare( + data(), size(), s.data(), s.size()); + } + + /** Compare the string with another. + + Compares a `[pos1, pos1+count1)` substring of this string to `s`. If `count1 > size() - pos1` the substring is `[pos1, size())`. + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR + int + compare( + size_type pos1, + size_type count1, + basic_static_string const& s) const + { + return detail::lexicographical_compare( + subview(pos1, count1), s.data(), s.size()); + } + + /** Compare the string with another. + + Compares a `[pos1, pos1+count1)` substring of this string to a substring `[pos2, pos2+count2)` of `s`. + If `count1 > size() - pos1` the first substring is `[pos1, size())`. Likewise, if `count2 > s.size() - pos2` the + second substring is `[pos2, s.size())`. + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR + int + compare( + size_type pos1, + size_type count1, + basic_static_string const& s, + size_type pos2, + size_type count2 = npos) const + { + return detail::lexicographical_compare( + subview(pos1, count1), s.subview(pos2, count2)); + } + + /** Compare the string with another. + + Compares this string to the null-terminated character sequence beginning at the character pointed to by `s` with length `Traits::length(s)`. + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + int + compare( + CharT const* s) const noexcept + { + return detail::lexicographical_compare( + data(), size(), s, Traits::length(s)); + } + + /** Compare the string with another. + + Compares a `[pos1, pos1+count1)` substring of this string to the null-terminated character sequence beginning at the character pointed to by `s` with + length `Traits::length(s)`. If `count1 > size() - pos1` the substring is `[pos1, size())`. + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + int + compare( + size_type pos1, + size_type count1, + CharT const* s) const + { + return detail::lexicographical_compare( + subview(pos1, count1), s, Traits::length(s)); + } + + /** Compare the string with another. + + Compares a `[pos1, pos1+count1)` substring of this string to the characters in the range `[s, s + count2)`. If `count1 > size() - pos1` the substring is `[pos1, size())`. + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + int + compare( + size_type pos1, + size_type count1, + CharT const* s, + size_type count2) const + { + return detail::lexicographical_compare( + subview(pos1, count1), s, count2); + } + + /** Compare the string with another. + + Compares this string to `s`. + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + int + compare( + string_view_type s) const noexcept + { + return detail::lexicographical_compare( + data(), size(), s.data(), s.size()); + } + + /** Compare the string with another. + + Compares a `[pos1, pos1+count1)` substring of this string to `s`. If `count1 > size() - pos1` the substring is `[pos1, size())`. + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + int + compare( + size_type pos1, + size_type count1, + string_view_type s) const + { + return detail::lexicographical_compare( + subview(pos1, count1), s); + } + + /** Compare the string with another. + + Replaces the part of the string indicated by `[pos1, pos1 + count1)` with a substring `[pos2, pos2 + count2)` of `t` after converting to `string_view_type`. + + This function participates in overload resolution if + `T` is convertible to `string_view` and `T` is not + convertible to `CharT const*`. + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR +#if GENERATING_DOCUMENTATION + int +#else + typename std::enable_if< + std::is_convertible::value && + ! std::is_convertible::value, + int>::type +#endif + compare( + size_type pos1, + size_type count1, + T const& t, + size_type pos2, + size_type count2 = npos) const + { + return compare(pos1, count1, + string_view_type(t).substr(pos2, count2)); + } + + /** Returns a substring. + + Returns a substring `(pos, pos + count)`. If the requested substring is greater than the size of the string, the returned substring is `[pos, size())`. + + @throw std::out_of_range if `pos > size()` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string + substr( + size_type pos = 0, + size_type count = npos) const; + + /** Returns a view of a substring. + + Returns a view of a substring `(pos, pos + count)`. If the requested view is greater than the size of the string, the returned view is `[pos, size())`. + + @throw std::out_of_range if `pos > size()` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + string_view_type + subview( + size_type pos = 0, + size_type count = npos) const; + + /** Copy a substring. + + Copy a substring `(pos, pos+count)` to character string pointed to by `dest`. + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + size_type + copy( + CharT* dest, + size_type count, + size_type pos = 0) const noexcept; + + /** Changes the number of characters stored. + + If the resulting string is larger, the new + characters are uninitialized. + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + void + resize( + std::size_t n); + + /** Changes the number of characters stored. + + If the resulting string is larger, the new + characters are initialized to the value of `c`. + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + void + resize( + std::size_t n, + CharT c); + + /// Exchange the contents of this string with another. + BOOST_STATIC_STRING_CPP14_CONSTEXPR + void + swap( + basic_static_string& s) noexcept; + + /// Exchange the contents of this string with another. + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR + void + swap( + basic_static_string& s); + + /** Replace a subset of the string. + + Replaces the part of the string indicated by `[pos1, pos1 + n1)` with `s` + + @throw std::out_of_range if `pos1 > size()` + @throw std::length_error if the resulting string exceeds `max_size()` + @return `*this` + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + replace( + size_type pos1, + size_type n1, + const basic_static_string& str) + { + return replace(pos1, n1, str.data(), str.size()); + } + + /** Replace a subset of the string. + + Replaces the part of the string indicated by `[pos1, pos1 + n1)` with substring `[pos2, pos2 + n2)` of `str` + except that if `n2` is greater than `str.size()`, `[pos2, pos2 + str.size())` is used. + + @throw std::out_of_range if `pos1 > size()` + @throw std::length_error if the resulting string exceeds `max_size()` + @return `*this` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + replace( + size_type pos1, + size_type n1, + const basic_static_string& str, + size_type pos2, + size_type n2 = npos) + { + return replace(pos1, n1, str.subview(pos2, n2)); + } + + /** Replace a subset of the string. + + Replaces the part of the string indicated by `[pos1, pos1 + n1)` with `t` after converting to `string_view_type`. + + This function participates in overload resolution if + `T` is convertible to `string_view` and `T` is not + convertible to `CharT const*`. + + @throw std::out_of_range if `pos1 > size()` + @throw std::length_error if the resulting string exceeds `max_size()` + @return `*this` + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR +#if GENERATING_DOCUMENTATION + basic_static_string& +#else + typename std::enable_if< + std::is_convertible::value && + ! std::is_convertible::value, + basic_static_string&>::type +#endif + replace( + size_type pos1, + size_type n1, + const T& t) + { + string_view_type sv = t; + return replace(pos1, n1, sv.data(), sv.size()); + } + + /** Replace a subset of the string. + + Replaces the part of the string indicated by `[pos1, pos1 + n1)` with substring `[pos2, pos2 + n2)` of `t` + after converting to `string_view_type`, except that if `n2` is greater than `t.size()`, `[pos2, pos2 + t.size())` is used. + + This function participates in overload resolution if + `T` is convertible to `string_view` and `T` is not + convertible to `CharT const*`. + + @throw std::out_of_range if `pos1 > size()` + @throw std::length_error if the resulting string exceeds `max_size()` + @return `*this` + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR +#if GENERATING_DOCUMENTATION + basic_static_string& +#else + typename std::enable_if< + std::is_convertible::value && + ! std::is_convertible::value, + basic_static_string&>::type +#endif + replace( + size_type pos1, + size_type n1, + const T& t, + size_type pos2, + size_type n2 = npos) + { + string_view_type sv = t; + return replace(pos1, n1, sv.substr(pos2, n2)); + } + + /** Replace a subset of the string. + + Replaces the part of the string indicated by `[pos1, pos1 + n1)` with the characters in the range `[s, s + n2)`. + + @throw std::out_of_range if `pos1 > size()` + @throw std::length_error if the resulting string exceeds `max_size()` + @return `*this` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + replace( + size_type pos, + size_type n1, + const CharT* s, + size_type n2); + + + /** Replace a subset of the string. + + Replaces the part of the string indicated by `[pos1, pos1 + n1)` with the characters in the range `[s, s + Traits::length(s))`. + + @throw std::out_of_range if `pos1 > size()` + @throw std::length_error if the resulting string exceeds `max_size()` + @return `*this` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + replace( + size_type pos, + size_type n1, + const CharT* s) + { + return replace(pos, n1, s, Traits::length(s)); + } + + /** Replace a subset of the string. + + Replaces the part of the string indicated by `[pos1, pos1 + n1)` with `n2` copies of `c`. + + @throw std::out_of_range if `pos1 > size()` + @throw std::length_error if the resulting string exceeds `max_size()` + @return `*this` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + replace( + size_type pos, + size_type n1, + size_type n2, + CharT c); + + /** Replace a subset of the string. + + Replaces the part of the string indicated by `[i1, i2)` with `s` + + @throw std::out_of_range if `pos1 > size()` + @throw std::length_error if the resulting string exceeds `max_size()` + @return `*this` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + replace( + const_iterator i1, + const_iterator i2, + const basic_static_string& str) + { + return replace(i1, i2, str.data(), str.size()); + } + + /** Replace a subset of the string. + + Replaces the part of the string indicated by `[i1, i2)` with `t` after converting to `string_view_type`. + + This function participates in overload resolution if + `T` is convertible to `string_view` and `T` is not + convertible to `CharT const*`. + + @throw std::out_of_range if `i1` and `i2` do not refer to elements within the range `[0, size())` + @throw std::length_error if the resulting string exceeds `max_size()` + @return `*this` + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR +#if GENERATING_DOCUMENTATION + basic_static_string& +#else + typename std::enable_if< + std::is_convertible::value && + ! std::is_convertible::value, + basic_static_string&>::type +#endif + replace( + const_iterator i1, + const_iterator i2, + const T& t) + { + string_view_type sv = t; + return replace(i1 - begin(), i2 - i1, sv.data(), sv.size()); + } + + /** Replace a subset of the string. + + Replaces the part of the string indicated by `[i1, i2)` with the characters in the range `[s, s + n)`. + + @throw std::out_of_range if `i1` and `i2` do not refer to elements within the range `[0, size())` + @throw std::length_error if the resulting string exceeds `max_size()` + @return `*this` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + replace( + const_iterator i1, + const_iterator i2, + const CharT* s, + size_type n) + { + return replace(i1 - begin(), i2 - i1, s, n); + } + + /** Replace a subset of the string. + + Replaces the part of the string indicated by `[i1, i2)` with the characters in the range `[s, s + Traits::length(s))`. + + @throw std::out_of_range if `i1` and `i2` do not refer to elements within the range `[0, size())` + @throw std::length_error if the resulting string exceeds `max_size()` + @return `*this` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + replace( + const_iterator i1, + const_iterator i2, + const CharT* s) + { + return replace(i1, i2, s, Traits::length(s)); + } + + /** Replace a subset of the string. + + Replaces the part of the string indicated by `[i1, i2)` with `n` copies of `c`. + + @throw std::out_of_range if `i1` and `i2` do not refer to elements within the range `[0, size())` + @throw std::length_error if the resulting string exceeds `max_size()` + @return `*this` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + replace( + const_iterator i1, + const_iterator i2, + size_type n, + CharT c) + { + return replace(i1 - begin(), i2 - i1, n, c); + } + + /** Replace a subset of the string. + + Replaces the part of the string indicated by `[i1, i2)` with the characters in the range `[j1, j2)`. + + @throw std::out_of_range if `i1` and `i2` do not refer to elements within the range `[0, size())` + @throw std::length_error if the resulting string exceeds `max_size()` + @return `*this` + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR +#if GENERATING_DOCUMENTATION + basic_static_string& +#else + typename std::enable_if< + detail::is_input_iterator::value, + basic_static_string&>::type +#endif + replace( + const_iterator i1, + const_iterator i2, + InputIterator j1, + InputIterator j2) + { + return replace(i1, i2, basic_static_string(j1, j2)); + } + + /** Replace a subset of the string. + + Replaces the part of the string indicated by `[i1, i2)` with the characters in the initializer list `il`. + + @throw std::out_of_range if `i1` and `i2` do not refer to elements within the range `[0, size())` + @throw std::length_error if the resulting string exceeds `max_size()` + @return `*this` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + replace( + const_iterator i1, + const_iterator i2, + std::initializer_list il) + { + return replace(i1, i2, il.begin(), il.size()); + } + + //-------------------------------------------------------------------------- + // + // Search + // + //-------------------------------------------------------------------------- + + /** Finds the first substring. + + Finds the first substring equal to `t`. + + This function participates in overload resolution if + `T` is convertible to `string_view` and `T` is not + convertible to `CharT const*`. + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR +#if GENERATING_DOCUMENTATION + size_type +#else + typename std::enable_if< + std::is_convertible::value && + ! std::is_convertible::value, + size_type>::type +#endif + find( + const T& t, + size_type pos = 0) const + { + string_view_type sv = t; + return find(sv.data(), pos, sv.size()); + } + + /** Finds the first substring. + + Finds the first substring equal to `str`. + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR + size_type + find( + const basic_static_string& str, + size_type pos = 0) const noexcept + { + return find(str.data(), pos, str.size()); + } + + /** Finds the first substring. + + Finds the first substring equal to the range `(s, s + count)`. This range may contain null characters. + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + size_type + find( + const CharT* s, + size_type pos, + size_type n) const noexcept; + + /** Finds the first substring. + + Finds the first substring equal to the character + string pointed to by `s`. + + The length of the string is determined by the first + null character using `Traits::length(s)` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + size_type + find( + const CharT* s, + size_type pos = 0) const noexcept + { + return find(s, pos, Traits::length(s)); + } + + /// Finds the first character `c`. + BOOST_STATIC_STRING_CPP14_CONSTEXPR + size_type + find( + CharT c, + size_type pos = 0) const noexcept + { + return find(&c, pos, 1); + } + + + /** Finds the last substring. + + Finds the last substring equal to `t`. + + This function participates in overload resolution if + `T` is convertible to `string_view` and `T` is not + convertible to `CharT const*`. + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR +#if GENERATING_DOCUMENTATION + size_type +#else + typename std::enable_if< + std::is_convertible::value && + ! std::is_convertible::value, + size_type>::type +#endif + rfind( + const T& t, + size_type pos = npos) const + { + string_view_type sv = t; + return rfind(sv.data(), pos, sv.size()); + } + + /** Finds the last substring. + + Finds the last substring equal to `str`. + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR + size_type + rfind( + const basic_static_string& str, + size_type pos = npos) const noexcept + { + return rfind(str.data(), pos, str.size()); + } + + /** Finds the last substring. + + Finds the last substring equal to the range `(s, s + count)`. This range may contain null characters. + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + size_type + rfind( + const CharT* s, + size_type pos, + size_type n) const noexcept; + + /** Finds the last substring. + + Finds the last substring equal to the character + string pointed to by `s`. + + The length of the string is determined by the first + null character using `Traits::length(s)` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + size_type + rfind( + const CharT* s, + size_type pos = npos) const noexcept + { + return rfind(s, pos, Traits::length(s)); + } + + /// Finds the last character `c`. + BOOST_STATIC_STRING_CPP14_CONSTEXPR + size_type + rfind( + CharT c, + size_type pos = npos) const noexcept + { + return rfind(&c, pos, 1); + } + + /** Finds the first character equal to any character in the string. + + Finds the first character equal to one of the characters in `t`. + + This function participates in overload resolution if + `T` is convertible to `string_view` and `T` is not + convertible to `CharT const*`. + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR +#if GENERATING_DOCUMENTATION + size_type +#else + typename std::enable_if< + std::is_convertible::value && + ! std::is_convertible::value, + size_type>::type +#endif + find_first_of( + const T& t, + size_type pos = 0) const + { + string_view_type sv = t; + return find_first_of(sv.data(), pos, sv.size()); + } + + /** Finds the first character equal to any character in the string. + + Finds the first character equal to one of the characters in `str`. + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR + size_type + find_first_of( + const basic_static_string& str, + size_type pos = 0) const noexcept + { + return find_first_of(str.data(), pos, str.size()); + } + + /** Finds the first character equal to any character in the string. + + Finds the first character equal to one of the characters in the range `(s, s + count)`. This range can include null characters. + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + size_type + find_first_of( + const CharT* s, + size_type pos, + size_type n) const noexcept; + + /** Finds the first character equal to any character in the string. + + Finds the first character equal to one of the characters + in character string pointed to by `s`. + + The length of the string is determined by the first + null character using `Traits::length(s)` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + size_type + find_first_of( + const CharT* s, + size_type pos = 0) const noexcept + { + return find_first_of(s, pos, Traits::length(s)); + } + + /// Finds the first character equal to `c`. + BOOST_STATIC_STRING_CPP14_CONSTEXPR + size_type + find_first_of( + CharT c, + size_type pos = 0) const noexcept + { + return find_first_of(&c, pos, 1); + } + + /** Finds the last character equal to any character in the string. + + Finds the last character equal to one of the characters in `t`. + + This function participates in overload resolution if + `T` is convertible to `string_view` and `T` is not + convertible to `CharT const*`. + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR +#if GENERATING_DOCUMENTATION + size_type +#else + typename std::enable_if< + std::is_convertible::value && + ! std::is_convertible::value, + size_type>::type +#endif + find_last_of( + const T& t, + size_type pos = npos) const + { + string_view_type sv = t; + return find_last_of(sv.data(), pos, sv.size()); + } + + /** Finds the last character equal to any character in the string. + + Finds the last character equal to one of the characters in `str`. + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR + size_type + find_last_of( + const basic_static_string& str, + size_type pos = npos) const noexcept + { + return find_last_of(str.data(), pos, str.size()); + } + + /** Finds the last character equal to any character in the string. + + Finds the last character equal to one of the characters in the range `(s, s + count)`. This range can include null characters. + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + size_type + find_last_of( + const CharT* s, + size_type pos, + size_type n) const noexcept; + + /** Finds the last character equal to any character in the string. + + Finds the last character equal to one of the characters + in character string pointed to by `s`. + + The length of the string is determined by the first + null character using `Traits::length(s)` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + size_type + find_last_of( + const CharT* s, + size_type pos = npos) const noexcept + { + return find_last_of(s, pos, Traits::length(s)); + } + + /// Finds the last character equal to `c`. + BOOST_STATIC_STRING_CPP14_CONSTEXPR + size_type + find_last_of( + CharT c, + size_type pos = npos) const noexcept + { + return find_last_of(&c, pos, 1); + } + + /** Finds the first character equal to none the characters in the string. + + Finds the first character equal to none of the characters in `t`. + + This function participates in overload resolution if + `T` is convertible to `string_view` and `T` is not + convertible to `CharT const*`. + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR +#if GENERATING_DOCUMENTATION + size_type +#else + typename std::enable_if< + std::is_convertible::value && + ! std::is_convertible::value, + size_type>::type +#endif + find_first_not_of( + const T& t, + size_type pos = 0) const + { + string_view_type sv = t; + return find_first_not_of(sv.data(), pos, sv.size()); + } + + /** Finds the first character equal to none the characters in the string. + + Finds the first character equal to none of the characters in `str`. + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR + size_type + find_first_not_of( + const basic_static_string& str, + size_type pos = 0) const noexcept + { + return find_first_not_of(str.data(), pos, str.size()); + } + + /** Finds the first character equal to none the characters in the string. + + Finds the first character equal to none of characters in range `(s, s + count)`. This range can include null characters. + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + size_type + find_first_not_of( + const CharT* s, + size_type pos, + size_type n) const noexcept; + + /** Finds the first character equal to none the characters in the string. + + Finds the first character equal to none of the characters in + character string pointed to by `s`. + + The length of the string is determined by the first + null character using `Traits::length(s)` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + size_type + find_first_not_of( + const CharT* s, + size_type pos = 0) const noexcept + { + return find_first_not_of(s, pos, Traits::length(s)); + } + + /// Finds the first character not equal to `c`. + BOOST_STATIC_STRING_CPP14_CONSTEXPR + size_type + find_first_not_of( + CharT c, + size_type pos = 0) const noexcept + { + return find_first_not_of(&c, pos, 1); + } + + /** Finds the last character equal to none the characters in the string. + + Finds the last character equal to none of the characters in `t`. + + This function participates in overload resolution if + `T` is convertible to `string_view` and `T` is not + convertible to `CharT const*`. + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR +#if GENERATING_DOCUMENTATION + size_type +#else + typename std::enable_if< + std::is_convertible::value && + ! std::is_convertible::value, + size_type>::type +#endif + find_last_not_of( + const T& t, + size_type pos = npos) const + { + string_view_type sv = t; + return find_last_not_of(sv.data(), pos, sv.size()); + } + + /** Finds the last character equal to none the characters in the string. + + Finds the last character equal to none of the characters in `str`. + */ + template + BOOST_STATIC_STRING_CPP14_CONSTEXPR + size_type + find_last_not_of( + const basic_static_string& str, + size_type pos = npos) const noexcept + { + return find_last_not_of(str.data(), pos, str.size()); + } + + /** Finds the last character equal to none the characters in the string. + + Finds the last character equal to none of the characters in range `(s, s + count)`. This range can include null characters. + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + size_type + find_last_not_of( + const CharT* s, + size_type pos, + size_type n) const noexcept; + + + /** Finds the last character equal to none the characters in the string. + + Finds the last character equal to none of the characters in + character string pointed to by `s`. + + The length of the string is determined by the first + null character using `Traits::length(s)` + */ + BOOST_STATIC_STRING_CPP14_CONSTEXPR + size_type + find_last_not_of( + const CharT* s, + size_type pos = npos) const noexcept + { + return find_last_not_of(s, pos, Traits::length(s)); + } + + /// Finds the last character not equal to `c`. + BOOST_STATIC_STRING_CPP14_CONSTEXPR + size_type + find_last_not_of( + CharT c, + size_type pos = npos) const noexcept + { + return find_last_not_of(&c, pos, 1); + } + + /// Returns whether the string begins with `s` + BOOST_STATIC_STRING_CPP14_CONSTEXPR + bool + starts_with( + string_view_type s) const noexcept + { + const size_type len = s.size(); + return size() >= len && !Traits::compare(data(), s.data(), len); + } + + /// Returns whether the string begins with `c` + BOOST_STATIC_STRING_CPP14_CONSTEXPR + bool + starts_with( + CharT c) const noexcept + { + return !empty() && Traits::eq(front(), c); + } + + /// Returns whether the string begins with `s` + BOOST_STATIC_STRING_CPP14_CONSTEXPR + bool + starts_with( + const CharT* s) const noexcept + { + const size_type len = Traits::length(s); + return size() >= len && !Traits::compare(data(), s, len); + } + + /// Returns whether the string ends with `s` + BOOST_STATIC_STRING_CPP14_CONSTEXPR + bool + ends_with( + string_view_type s) const noexcept + { + const size_type len = s.size(); + return size() >= len && !Traits::compare(data() + (size() - len), s.data(), len); + } + + /// Returns whether the string ends with `c` + BOOST_STATIC_STRING_CPP14_CONSTEXPR + bool + ends_with( + CharT c) const noexcept + { + return !empty() && Traits::eq(back(), c); + } + + /// Returns whether the string begins with `s` + BOOST_STATIC_STRING_CPP14_CONSTEXPR + bool + ends_with( + const CharT* s) const noexcept + { + const size_type len = Traits::length(s); + return size() >= len && !Traits::compare(data() + (size() - len), s, len); + } + +private: + BOOST_STATIC_STRING_CPP14_CONSTEXPR + basic_static_string& + assign_char(CharT ch, std::true_type) noexcept; + + basic_static_string& + assign_char(CharT ch, std::false_type); +}; + +//------------------------------------------------------------------------------ +// +// Disallowed operations +// +//------------------------------------------------------------------------------ + +// These operations are explicitly deleted since +// there is no reasonable implementation possible. + +template< + std::size_t N, std::size_t M, + typename CharT, typename Traits> +inline +void +operator+( + basic_static_stringconst& lhs, + basic_static_stringconst& rhs) = delete; + +template +inline +void +operator+( + CharT const* lhs, + basic_static_stringconst& rhs) = delete; + +template +inline +void +operator+( + CharT lhs, + basic_static_string const& rhs) = delete; + +template +inline +void +operator+( + basic_static_string const& lhs, + CharT const* rhs) = delete; + +template +inline +void +operator+( + basic_static_string const& lhs, + CharT rhs) = delete; + +//------------------------------------------------------------------------------ +// +// Non-member functions +// +//------------------------------------------------------------------------------ + +template< + std::size_t N, std::size_t M, + typename CharT, typename Traits> +inline +bool +operator==( + basic_static_string const& lhs, + basic_static_string const& rhs) +{ + return lhs.compare(rhs) == 0; +} + +template< + std::size_t N, std::size_t M, + typename CharT, typename Traits> +inline +bool +operator!=( + basic_static_string const& lhs, + basic_static_string const& rhs) +{ + return lhs.compare(rhs) != 0; +} + +template< + std::size_t N, std::size_t M, + typename CharT, typename Traits> +inline +bool +operator<( + basic_static_string const& lhs, + basic_static_string const& rhs) +{ + return lhs.compare(rhs) < 0; +} + +template< + std::size_t N, std::size_t M, + typename CharT, typename Traits> +inline +bool +operator<=( + basic_static_string const& lhs, + basic_static_string const& rhs) +{ + return lhs.compare(rhs) <= 0; +} + +template< + std::size_t N, std::size_t M, + typename CharT, typename Traits> +inline +bool +operator>( + basic_static_string const& lhs, + basic_static_string const& rhs) +{ + return lhs.compare(rhs) > 0; +} + +template< + std::size_t N, std::size_t M, + typename CharT, typename Traits> +inline +bool +operator>=( + basic_static_string const& lhs, + basic_static_string const& rhs) +{ + return lhs.compare(rhs) >= 0; +} + +template +inline +bool +operator==( + CharT const* lhs, + basic_static_string const& rhs) +{ + return detail::lexicographical_compare( + lhs, Traits::length(lhs), + rhs.data(), rhs.size()) == 0; +} + +template +inline +bool +operator==( + basic_static_string const& lhs, + CharT const* rhs) +{ + return detail::lexicographical_compare( + lhs.data(), lhs.size(), + rhs, Traits::length(rhs)) == 0; +} + +template +inline +bool +operator!=( + CharT const* lhs, + basic_static_string const& rhs) +{ + return detail::lexicographical_compare( + lhs, Traits::length(lhs), + rhs.data(), rhs.size()) != 0; +} + +template +inline +bool +operator!=( + basic_static_string const& lhs, + CharT const* rhs) +{ + return detail::lexicographical_compare( + lhs.data(), lhs.size(), + rhs, Traits::length(rhs)) != 0; +} + +template +inline +bool +operator<( + CharT const* lhs, + basic_static_string const& rhs) +{ + return detail::lexicographical_compare( + lhs, Traits::length(lhs), + rhs.data(), rhs.size()) < 0; +} + +template +inline +bool +operator<( + basic_static_string const& lhs, + CharT const* rhs) +{ + return detail::lexicographical_compare( + lhs.data(), lhs.size(), + rhs, Traits::length(rhs)) < 0; +} + +template +inline +bool +operator<=( + CharT const* lhs, + basic_static_string const& rhs) +{ + return detail::lexicographical_compare( + lhs, Traits::length(lhs), + rhs.data(), rhs.size()) <= 0; +} + +template +inline +bool +operator<=( + basic_static_string const& lhs, + CharT const* rhs) +{ + return detail::lexicographical_compare( + lhs.data(), lhs.size(), + rhs, Traits::length(rhs)) <= 0; +} + +template +inline +bool +operator>( + CharT const* lhs, + basic_static_string const& rhs) +{ + return detail::lexicographical_compare( + lhs, Traits::length(lhs), + rhs.data(), rhs.size()) > 0; +} + +template +inline +bool +operator>( + basic_static_string const& lhs, + CharT const* rhs) +{ + return detail::lexicographical_compare( + lhs.data(), lhs.size(), + rhs, Traits::length(rhs)) > 0; +} + +template +inline +bool +operator>=( + CharT const* lhs, + basic_static_string const& rhs) +{ + return detail::lexicographical_compare( + lhs, Traits::length(lhs), + rhs.data(), rhs.size()) >= 0; +} + +template +inline +bool +operator>=( + basic_static_string const& lhs, + CharT const* rhs) +{ + return detail::lexicographical_compare( + lhs.data(), lhs.size(), + rhs, Traits::length(rhs)) >= 0; +} + +//------------------------------------------------------------------------------ +// +// swap +// +//------------------------------------------------------------------------------ + +template< + std::size_t N, + typename CharT, + typename Traits> +inline +void +swap( + basic_static_string& lhs, + basic_static_string& rhs) +{ + lhs.swap(rhs); +} + +template< + std::size_t N, std::size_t M, + typename CharT, typename Traits> +inline +void +swap( + basic_static_string& lhs, + basic_static_string& rhs) +{ + lhs.swap(rhs); +} + +//------------------------------------------------------------------------------ +// +// Input/Output +// +//------------------------------------------------------------------------------ + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, + basic_static_string const& s) +{ + return os << string_view(s.data(), s.size()); +} + +//------------------------------------------------------------------------------ +// +// Numeric conversions +// +//------------------------------------------------------------------------------ + +/** Returns a static string representing an integer as a decimal. + + @param x The signed or unsigned integer to convert. + This must be an integral type. + + @return A @ref basic_static_string with an implementation defined + maximum size at least as large enough to hold the longest + possible decimal representation of any integer of the given type. +*/ +template< + class Integer +#ifndef GENERATING_DOCUMENTATION + , class = typename std::enable_if< + std::is_integral::value>::type +#endif +> +inline +basic_static_string +to_static_string(Integer x); + +//------------------------------------------------------------------------------ +// +// Deduction Guides +// +//------------------------------------------------------------------------------ + +#ifdef BOOST_STATIC_STRING_USE_DEDUCT +template +basic_static_string(CharT(&)[N]) -> + basic_static_string>; +#endif + +//------------------------------------------------------------------------------ +// +// Hashing +// +//------------------------------------------------------------------------------ + +#ifndef BOOST_STATIC_STRING_STANDALONE +// hash_value overload for Boost.Container_Hash +template +std::size_t +hash_value( + const basic_static_string& str) +{ + return boost::hash_range(str.begin(), str.end()); +} +#endif + +//------------------------------------------------------------------------------ +// +// Aliases +// +//------------------------------------------------------------------------------ + +template +using static_string = basic_static_string; + +template +using static_wstring = basic_static_string; + +template +using static_u16string = basic_static_string; + +template +using static_u32string = basic_static_string; + +} // static_string +} // boost + +// std::hash partial specialization for basic_static_string +namespace std +{ + template + struct hash> + { + std::size_t + operator()( + const boost::static_string::basic_static_string& str) const + { +#ifndef BOOST_STATIC_STRING_STANDALONE + return boost::hash_range(str.begin(), str.end()); +#else + using sv = boost::static_string::basic_string_view; + return std::hash()(sv(str.data(), str.size())); +#endif + } + }; +} // std + +#include +#endif diff --git a/index.html b/index.html index 46852de..bf1688c 100644 --- a/index.html +++ b/index.html @@ -1,14 +1,14 @@ - Boost.FixedString - + Boost.StaticString + Automatic redirection failed, please go to - https://18.github.io/doc/fixed_string/ + https://18.github.io/doc/static_string/
- Boost.FixedString
+ Boost.StaticString

Copyright (C) 2019 Vinnie Falco
Copyright (C) 2019 Krystian Stasiowski
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index feaa748..844ed47 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -4,16 +4,16 @@ # Distributed under the Boost Software License, Version 1.0. (See accompanying # file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) # -# Official repository: https://github.com/boostorg/fixed_string +# Official repository: https://github.com/boostorg/static_string # -GroupSources (include/boost/fixed_string fixed_string) +GroupSources (include/boost/static_string static_string) GroupSources (test "/") add_executable (tests ${PROJECT_FILES} Jamfile - fixed_string.cpp + static_string.cpp ) target_link_libraries(tests diff --git a/test/Jamfile b/test/Jamfile index 52df41c..17231a6 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -4,7 +4,7 @@ # Distributed under the Boost Software License, Version 1.0. (See accompanying # file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) # -# Official repository: https://github.com/boostorg/fixed_string +# Official repository: https://github.com/boostorg/static_string # import testing ; @@ -22,4 +22,4 @@ local defines = project : requirements $(defines) ; -run fixed_string.cpp ; +run static_string.cpp ; diff --git a/test/fixed_string.cpp b/test/static_string.cpp similarity index 93% rename from test/fixed_string.cpp rename to test/static_string.cpp index 8167071..098cef6 100644 --- a/test/fixed_string.cpp +++ b/test/static_string.cpp @@ -5,27 +5,27 @@ // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // -// Official repository: https://github.com/boostorg/fixed_string +// Official repository: https://github.com/boostorg/static_string // // Test that header file is self-contained. -#include "boost/fixed_string/fixed_string.hpp" +#include #include namespace boost { -namespace fixed_string { +namespace static_string { -template -bool -testS(const S& s, typename S::size_type pos, typename S::size_type n) -{ - if (pos <= s.size()) - { - S str = s.substr(pos, n); - typename S::size_type rlen = (std::min)(n, s.size() - pos); - return (S::traits_type::compare(s.data() + pos, str.data(), rlen) == 0); +template +bool +testS(const S& s, typename S::size_type pos, typename S::size_type n) +{ + if (pos <= s.size()) + { + S str = s.substr(pos, n); + typename S::size_type rlen = (std::min)(n, s.size() - pos); + return (S::traits_type::compare(s.data() + pos, str.data(), rlen) == 0); } else { @@ -34,15 +34,15 @@ testS(const S& s, typename S::size_type pos, typename S::size_type n) } } -template -bool -testSV(const S& s, typename S::size_type pos, typename S::size_type n) -{ - if (pos <= s.size()) - { - typename S::string_view_type str = s.subview(pos, n); - typename S::size_type rlen = (std::min)(n, s.size() - pos); - return (S::traits_type::compare(s.data() + pos, str.data(), rlen) == 0); +template +bool +testSV(const S& s, typename S::size_type pos, typename S::size_type n) +{ + if (pos <= s.size()) + { + typename S::string_view_type str = s.subview(pos, n); + typename S::size_type rlen = (std::min)(n, s.size() - pos); + return (S::traits_type::compare(s.data() + pos, str.data(), rlen) == 0); } else { @@ -51,272 +51,273 @@ testSV(const S& s, typename S::size_type pos, typename S::size_type n) } } -template -bool -testAS(S s, const typename S::value_type* str, typename S::size_type n, S expected) -{ - s.assign(str, n); - return s == expected; +template +bool +testAS(S s, const typename S::value_type* str, typename S::size_type n, S expected) +{ + s.assign(str, n); + return s == expected; } -template -bool -testI(S s, typename S::size_type pos, const typename S::value_type* str, typename S::size_type n, S expected) -{ - const typename S::size_type old_size = s.size(); - S s0 = s; - if (pos <= old_size) - { - s.insert(pos, str, n); - return s == expected; - } - else - { - BOOST_TEST_THROWS((s.insert(pos, str, n)), std::out_of_range); - return true; - } -} - -template -bool -testE(S s, typename S::size_type pos, typename S::size_type n, S expected) -{ - const typename S::size_type old_size = s.size(); - S s0 = s; - if (pos <= old_size) - { - s.erase(pos, n); - return s[s.size()] == typename S::value_type() && s == expected; - } - else - { - BOOST_TEST_THROWS(s.erase(pos, n), std::out_of_range); - return true; - } -} - -template -bool -testA(S s, const typename S::value_type* str, typename S::size_type n, S expected) -{ - return s.append(str, n) == expected; -} - -int -sign(int x) -{ - if (x == 0) - return 0; - if (x < 0) - return -1; - return 1; -} - -template -bool -testC(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()) - return sign(s.compare(pos, n1, str, n2)) == sign(x); - else - { - BOOST_TEST_THROWS(s.compare(pos, n1, str, n2), std::out_of_range); - return true; +template +bool +testI(S s, typename S::size_type pos, const typename S::value_type* str, typename S::size_type n, S expected) +{ + const typename S::size_type old_size = s.size(); + S s0 = s; + if (pos <= old_size) + { + s.insert(pos, str, n); + return s == expected; + } + else + { + BOOST_TEST_THROWS((s.insert(pos, str, n)), std::out_of_range); + return true; } } -template -bool -testF(const S& s, const typename S::value_type* str, typename S::size_type pos, typename S::size_type n, typename S::size_type x) -{ - return s.find(str, pos, n) == x; +template +bool +testE(S s, typename S::size_type pos, typename S::size_type n, S expected) +{ + const typename S::size_type old_size = s.size(); + S s0 = s; + if (pos <= old_size) + { + s.erase(pos, n); + return s[s.size()] == typename S::value_type() && s == expected; + } + else + { + BOOST_TEST_THROWS(s.erase(pos, n), std::out_of_range); + return true; + } } -template -bool -testRF(const S& s, const typename S::value_type* str, typename S::size_type pos, typename S::size_type n, typename S::size_type x) -{ - return s.rfind(str, pos, n) == x; +template +bool +testA(S s, const typename S::value_type* str, typename S::size_type n, S expected) +{ + return s.append(str, n) == expected; } -template -bool -testFF(const S& s, const typename S::value_type* str, typename S::size_type pos, typename S::size_type n, typename S::size_type x) -{ - return s.find_first_of(str, pos, n) == x; +int +sign(int x) +{ + if (x == 0) + return 0; + if (x < 0) + return -1; + return 1; } -template -bool -testFL(const S& s, const typename S::value_type* str, typename S::size_type pos, typename S::size_type n, typename S::size_type x) -{ - return s.find_last_of(str, pos, n) == x; +template +bool +testC(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()) + return sign(s.compare(pos, n1, str, n2)) == sign(x); + else + { + BOOST_TEST_THROWS(s.compare(pos, n1, str, n2), std::out_of_range); + return true; + } } -template -bool -testFFN(const S& s, const typename S::value_type* str, typename S::size_type pos, typename S::size_type n, typename S::size_type x) -{ - return s.find_first_not_of(str, pos, n) == x; +template +bool +testF(const S& s, const typename S::value_type* str, typename S::size_type pos, typename S::size_type n, typename S::size_type x) +{ + return s.find(str, pos, n) == x; } -template -bool -testFLN(const S& s, const typename S::value_type* str, typename S::size_type pos, typename S::size_type n, typename S::size_type x) -{ - return s.find_last_not_of(str, pos, n) == x; +template +bool +testRF(const S& s, const typename S::value_type* str, typename S::size_type pos, typename S::size_type n, typename S::size_type x) +{ + return s.rfind(str, pos, n) == x; } -template -bool -testR(S s, typename S::size_type pos1, typename S::size_type n1, const typename S::value_type* str, S expected) -{ - typename S::const_iterator first = s.begin() + pos1; - typename S::const_iterator last = s.begin() + pos1 + n1; - s.replace(first, last, str); - return s == expected; +template +bool +testFF(const S& s, const typename S::value_type* str, typename S::size_type pos, typename S::size_type n, typename S::size_type x) +{ + return s.find_first_of(str, pos, n) == x; } -template -bool -testR(S s, typename S::size_type pos, typename S::size_type n1, typename S::size_type n2, typename S::value_type c, S expected) -{ - const typename S::size_type old_size = s.size(); - S s0 = s; - if (pos <= old_size) - { - s.replace(pos, n1, n2, c); - return s == expected; - } - else - { - BOOST_TEST_THROWS((s.replace(pos, n1, n2, c)), std::out_of_range); - return true; - } +template +bool +testFL(const S& s, const typename S::value_type* str, typename S::size_type pos, typename S::size_type n, typename S::size_type x) +{ + return s.find_last_of(str, pos, n) == x; } -template -bool -testR(S s, typename S::size_type pos, typename S::size_type n1, const typename S::value_type* str, typename S::size_type n2, S expected) -{ - const typename S::size_type old_size = s.size(); - S s0 = s; - if (pos <= old_size) - { - s.replace(pos, n1, str, n2); - return s == expected; - } - else - { - BOOST_TEST_THROWS((s.replace(pos, n1, str, n2)), std::out_of_range); - return true; - } +template +bool +testFFN(const S& s, const typename S::value_type* str, typename S::size_type pos, typename S::size_type n, typename S::size_type x) +{ + return s.find_first_not_of(str, pos, n) == x; +} + +template +bool +testFLN(const S& s, const typename S::value_type* str, typename S::size_type pos, typename S::size_type n, typename S::size_type x) +{ + return s.find_last_not_of(str, pos, n) == x; +} + +template +bool +testR(S s, typename S::size_type pos1, typename S::size_type n1, const typename S::value_type* str, S expected) +{ + typename S::const_iterator first = s.begin() + pos1; + typename S::const_iterator last = s.begin() + pos1 + n1; + s.replace(first, last, str); + return s == expected; +} + +template +bool +testR(S s, typename S::size_type pos, typename S::size_type n1, typename S::size_type n2, typename S::value_type c, S expected) +{ + const typename S::size_type old_size = s.size(); + S s0 = s; + if (pos <= old_size) + { + s.replace(pos, n1, n2, c); + return s == expected; + } + else + { + BOOST_TEST_THROWS((s.replace(pos, n1, n2, c)), std::out_of_range); + return true; + } +} + +template +bool +testR(S s, typename S::size_type pos, typename S::size_type n1, const typename S::value_type* str, typename S::size_type n2, S expected) +{ + const typename S::size_type old_size = s.size(); + S s0 = s; + if (pos <= old_size) + { + s.replace(pos, n1, str, n2); + return s == expected; + } + else + { + BOOST_TEST_THROWS((s.replace(pos, n1, str, n2)), std::out_of_range); + return true; + } } // dpne + static void testConstruct() { { - fixed_string<1> s; + static_string<1> s; BOOST_TEST(s.empty()); BOOST_TEST(s.size() == 0); BOOST_TEST(s == ""); BOOST_TEST(*s.end() == 0); } { - fixed_string<4> s1(3, 'x'); + static_string<4> s1(3, 'x'); BOOST_TEST(! s1.empty()); BOOST_TEST(s1.size() == 3); BOOST_TEST(s1 == "xxx"); BOOST_TEST(*s1.end() == 0); BOOST_TEST_THROWS( - (fixed_string<2>(3, 'x')), + (static_string<2>(3, 'x')), std::length_error); } { - fixed_string<5> s1("12345"); + static_string<5> s1("12345"); BOOST_TEST(*s1.end() == 0); - fixed_string<3> s2(s1, 2); + static_string<3> s2(s1, 2); BOOST_TEST(s2 == "345"); BOOST_TEST(*s2.end() == 0); - fixed_string<0> s3(s1, 5); + static_string<0> s3(s1, 5); BOOST_TEST(s3.empty()); BOOST_TEST(s3.front() == 0); BOOST_TEST(*s3.end() == 0); } { - fixed_string<5> s1("12345"); - fixed_string<2> s2(s1, 1, 2); + static_string<5> s1("12345"); + static_string<2> s2(s1, 1, 2); BOOST_TEST(s2 == "23"); BOOST_TEST(*s2.end() == 0); - fixed_string<0> s3(s1, 5, 1); + static_string<0> s3(s1, 5, 1); BOOST_TEST(s3.empty()); BOOST_TEST(s3.front() == 0); BOOST_TEST(*s3.end() == 0); BOOST_TEST_THROWS( - (fixed_string<5>(s1, 6)), + (static_string<5>(s1, 6)), std::out_of_range); } { - fixed_string<5> s1("UVXYZ", 3); + static_string<5> s1("UVXYZ", 3); BOOST_TEST(s1 == "UVX"); BOOST_TEST(*s1.end() == 0); - fixed_string<5> s2("X\0""Y\0""Z", 3); + static_string<5> s2("X\0""Y\0""Z", 3); BOOST_TEST(std::memcmp( s2.data(), "X\0""Y", 3) == 0); BOOST_TEST(*s2.end() == 0); } { - fixed_string<5> s1("12345"); - fixed_string<3> s2( + static_string<5> s1("12345"); + static_string<3> s2( s1.begin() + 1, s1.begin() + 3); BOOST_TEST(s2 == "23"); BOOST_TEST(*s2.end() == 0); } { - fixed_string<5> s1("12345"); - fixed_string<5> s2(s1); + static_string<5> s1("12345"); + static_string<5> s2(s1); BOOST_TEST(s2 == "12345"); BOOST_TEST(*s2.end() == 0); - fixed_string<6> s3(s1); + static_string<6> s3(s1); BOOST_TEST(s3 == "12345"); BOOST_TEST(*s3.end() == 0); BOOST_TEST_THROWS( - (fixed_string<4>(s1)), + (static_string<4>(s1)), std::length_error); } { - fixed_string<3> s1({'1', '2', '3'}); + static_string<3> s1({'1', '2', '3'}); BOOST_TEST(s1 == "123"); BOOST_TEST(*s1.end() == 0); BOOST_TEST( - fixed_string<0>({}) == fixed_string<0>()); + static_string<0>({}) == static_string<0>()); BOOST_TEST_THROWS( - (fixed_string<2>({'1', '2', '3'})), + (static_string<2>({'1', '2', '3'})), std::length_error); } { - fixed_string<3> s1( + static_string<3> s1( string_view("123")); BOOST_TEST(s1 == "123"); BOOST_TEST(*s1.end() == 0); BOOST_TEST_THROWS( - (fixed_string<2>(string_view("123"))), + (static_string<2>(string_view("123"))), std::length_error); } { - fixed_string<5> s1( + static_string<5> s1( std::string("12345"), 2, 2); BOOST_TEST(s1 == "34"); BOOST_TEST(*s1.end() == 0); BOOST_TEST_THROWS( - (fixed_string<2>(std::string("12345"), 1, 3)), + (static_string<2>(std::string("12345"), 1, 3)), std::length_error); } { - BOOST_TEST_THROWS(fixed_string<5>("12345678"), std::length_error); + BOOST_TEST_THROWS(static_string<5>("12345678"), std::length_error); } } @@ -326,57 +327,57 @@ void testAssignment() { // assign(size_type count, CharT ch) - BOOST_TEST(fixed_string<3>{}.assign(1, '*') == "*"); - BOOST_TEST(fixed_string<3>{}.assign(3, '*') == "***"); - BOOST_TEST(fixed_string<3>{"abc"}.assign(3, '*') == "***"); - BOOST_TEST_THROWS(fixed_string<1>{"a"}.assign(2, '*'), std::length_error); + BOOST_TEST(static_string<3>{}.assign(1, '*') == "*"); + BOOST_TEST(static_string<3>{}.assign(3, '*') == "***"); + BOOST_TEST(static_string<3>{"abc"}.assign(3, '*') == "***"); + BOOST_TEST_THROWS(static_string<1>{"a"}.assign(2, '*'), std::length_error); - // assign(fixed_string const& s) noexcept - BOOST_TEST(fixed_string<3>{}.assign(fixed_string<3>{"abc"}) == "abc"); - BOOST_TEST(fixed_string<3>{"*"}.assign(fixed_string<3>{"abc"}) == "abc"); - BOOST_TEST(fixed_string<3>{"***"}.assign(fixed_string<3>{"abc"}) == "abc"); + // assign(static_string const& s) noexcept + BOOST_TEST(static_string<3>{}.assign(static_string<3>{"abc"}) == "abc"); + BOOST_TEST(static_string<3>{"*"}.assign(static_string<3>{"abc"}) == "abc"); + BOOST_TEST(static_string<3>{"***"}.assign(static_string<3>{"abc"}) == "abc"); - // assign(fixed_string const& s) - BOOST_TEST(fixed_string<3>{}.assign(fixed_string<5>{"abc"}) == "abc"); - BOOST_TEST(fixed_string<3>{"*"}.assign(fixed_string<5>{"abc"}) == "abc"); - BOOST_TEST(fixed_string<3>{"***"}.assign(fixed_string<5>{"abc"}) == "abc"); + // assign(static_string const& s) + BOOST_TEST(static_string<3>{}.assign(static_string<5>{"abc"}) == "abc"); + BOOST_TEST(static_string<3>{"*"}.assign(static_string<5>{"abc"}) == "abc"); + BOOST_TEST(static_string<3>{"***"}.assign(static_string<5>{"abc"}) == "abc"); { - fixed_string<3> s("***"); + static_string<3> s("***"); BOOST_TEST(s.assign(s) == s); } - BOOST_TEST_THROWS(fixed_string<3>{}.assign(fixed_string<5>{"abcde"}), std::length_error); + BOOST_TEST_THROWS(static_string<3>{}.assign(static_string<5>{"abcde"}), std::length_error); - // assign(fixed_string const& s, size_type pos, size_type count = npos) - BOOST_TEST(fixed_string<4>{}.assign(fixed_string<5>{"abcde"}, 1) == "bcde"); - BOOST_TEST(fixed_string<3>{}.assign(fixed_string<5>{"abcde"}, 1, 3) == "bcd"); - BOOST_TEST(fixed_string<3>{"*"}.assign(fixed_string<5>{"abcde"}, 1, 3) == "bcd"); - BOOST_TEST(fixed_string<3>{"***"}.assign(fixed_string<5>{"abcde"}, 1, 3) == "bcd"); - BOOST_TEST_THROWS(fixed_string<3>{}.assign(fixed_string<5>{"abcde"}, 0), std::length_error); + // assign(static_string const& s, size_type pos, size_type count = npos) + BOOST_TEST(static_string<4>{}.assign(static_string<5>{"abcde"}, 1) == "bcde"); + BOOST_TEST(static_string<3>{}.assign(static_string<5>{"abcde"}, 1, 3) == "bcd"); + BOOST_TEST(static_string<3>{"*"}.assign(static_string<5>{"abcde"}, 1, 3) == "bcd"); + BOOST_TEST(static_string<3>{"***"}.assign(static_string<5>{"abcde"}, 1, 3) == "bcd"); + BOOST_TEST_THROWS(static_string<3>{}.assign(static_string<5>{"abcde"}, 0), std::length_error); // assign(CharT const* s, size_type count) - BOOST_TEST(fixed_string<3>{}.assign("abc", 3) == "abc"); - BOOST_TEST(fixed_string<3>{"*"}.assign("abc", 3) == "abc"); - BOOST_TEST_THROWS(fixed_string<1>{}.assign("abc", 3), std::length_error); + BOOST_TEST(static_string<3>{}.assign("abc", 3) == "abc"); + BOOST_TEST(static_string<3>{"*"}.assign("abc", 3) == "abc"); + BOOST_TEST_THROWS(static_string<1>{}.assign("abc", 3), std::length_error); // assign(CharT const* s) - BOOST_TEST(fixed_string<3>{}.assign("abc") == "abc"); - BOOST_TEST(fixed_string<3>{"*"}.assign("abc") == "abc"); - BOOST_TEST_THROWS(fixed_string<1>{}.assign("abc"), std::length_error); + BOOST_TEST(static_string<3>{}.assign("abc") == "abc"); + BOOST_TEST(static_string<3>{"*"}.assign("abc") == "abc"); + BOOST_TEST_THROWS(static_string<1>{}.assign("abc"), std::length_error); // assign(InputIt first, InputIt last) { - fixed_string<4> const cs{"abcd"}; - fixed_string<4> s{"ad"}; - BOOST_TEST(fixed_string<4>{}.assign(cs.begin(), cs.end()) == "abcd"); - BOOST_TEST(fixed_string<4>{"*"}.assign(cs.begin(), cs.end()) == "abcd"); - BOOST_TEST_THROWS(fixed_string<2>{"*"}.assign(cs.begin(), cs.end()), std::length_error); + static_string<4> const cs{"abcd"}; + static_string<4> s{"ad"}; + BOOST_TEST(static_string<4>{}.assign(cs.begin(), cs.end()) == "abcd"); + BOOST_TEST(static_string<4>{"*"}.assign(cs.begin(), cs.end()) == "abcd"); + BOOST_TEST_THROWS(static_string<2>{"*"}.assign(cs.begin(), cs.end()), std::length_error); } // assign(std::initializer_list ilist) - BOOST_TEST(fixed_string<3>{}.assign({'a', 'b', 'c'}) == "abc"); - BOOST_TEST(fixed_string<3>{"*"}.assign({'a', 'b', 'c'}) == "abc"); - BOOST_TEST(fixed_string<3>{"***"}.assign({'a', 'b', 'c'}) == "abc"); - BOOST_TEST_THROWS(fixed_string<1>{}.assign({'a', 'b', 'c'}), std::length_error); + BOOST_TEST(static_string<3>{}.assign({'a', 'b', 'c'}) == "abc"); + BOOST_TEST(static_string<3>{"*"}.assign({'a', 'b', 'c'}) == "abc"); + BOOST_TEST(static_string<3>{"***"}.assign({'a', 'b', 'c'}) == "abc"); + BOOST_TEST_THROWS(static_string<1>{}.assign({'a', 'b', 'c'}), std::length_error); // assign(T const& t) { @@ -387,10 +388,10 @@ testAssignment() return "abc"; } }; - BOOST_TEST(fixed_string<3>{}.assign(T{}) == "abc"); - BOOST_TEST(fixed_string<3>{"*"}.assign(T{}) == "abc"); - BOOST_TEST(fixed_string<3>{"***"}.assign(T{}) == "abc"); - BOOST_TEST_THROWS(fixed_string<2>{"**"}.assign(T{}), std::length_error); + BOOST_TEST(static_string<3>{}.assign(T{}) == "abc"); + BOOST_TEST(static_string<3>{"*"}.assign(T{}) == "abc"); + BOOST_TEST(static_string<3>{"***"}.assign(T{}) == "abc"); + BOOST_TEST_THROWS(static_string<2>{"**"}.assign(T{}), std::length_error); } // assign(T const& t, size_type pos, size_type count = npos) @@ -402,109 +403,109 @@ testAssignment() return "abcde"; } }; - BOOST_TEST(fixed_string<5>{}.assign(T{}, 0) == "abcde"); - BOOST_TEST(fixed_string<5>{}.assign(T{}, 0, 5) == "abcde"); - BOOST_TEST(fixed_string<5>{}.assign(T{}, 1, 3) == "bcd"); - BOOST_TEST(fixed_string<5>{"*"}.assign(T{}, 1) == "bcde"); - BOOST_TEST_THROWS(fixed_string<2>{"**"}.assign(T{}, 6, 3), std::out_of_range); - BOOST_TEST_THROWS(fixed_string<2>{"**"}.assign(T{}, 1, 3), std::length_error); + BOOST_TEST(static_string<5>{}.assign(T{}, 0) == "abcde"); + BOOST_TEST(static_string<5>{}.assign(T{}, 0, 5) == "abcde"); + BOOST_TEST(static_string<5>{}.assign(T{}, 1, 3) == "bcd"); + BOOST_TEST(static_string<5>{"*"}.assign(T{}, 1) == "bcde"); + BOOST_TEST_THROWS(static_string<2>{"**"}.assign(T{}, 6, 3), std::out_of_range); + BOOST_TEST_THROWS(static_string<2>{"**"}.assign(T{}, 1, 3), std::length_error); } //--- { - fixed_string<3> s1("123"); - fixed_string<3> s2; + static_string<3> s1("123"); + static_string<3> s2; s2 = s1; BOOST_TEST(s2 == "123"); BOOST_TEST(*s2.end() == 0); } { - fixed_string<3> s1("123"); - fixed_string<5> s2; + static_string<3> s1("123"); + static_string<5> s2; s2 = s1; BOOST_TEST(s2 == "123"); BOOST_TEST(*s2.end() == 0); - fixed_string<1> s3; + static_string<1> s3; BOOST_TEST_THROWS( s3 = s1, std::length_error); } { - fixed_string<3> s1; + static_string<3> s1; s1 = "123"; BOOST_TEST(s1 == "123"); BOOST_TEST(*s1.end() == 0); - fixed_string<1> s2; + static_string<1> s2; BOOST_TEST_THROWS( s2 = "123", std::length_error); } { - fixed_string<1> s1; + static_string<1> s1; s1 = 'x'; BOOST_TEST(s1 == "x"); BOOST_TEST(*s1.end() == 0); - fixed_string<0> s2; + static_string<0> s2; BOOST_TEST_THROWS( s2 = 'x', std::length_error); } { - fixed_string<3> s1; + static_string<3> s1; s1 = {'1', '2', '3'}; BOOST_TEST(s1 == "123"); BOOST_TEST(*s1.end() == 0); - fixed_string<1> s2; + static_string<1> s2; BOOST_TEST_THROWS( (s2 = {'1', '2', '3'}), std::length_error); } { - fixed_string<3> s1; + static_string<3> s1; s1 = string_view("123"); BOOST_TEST(s1 == "123"); BOOST_TEST(*s1.end() == 0); - fixed_string<1> s2; + static_string<1> s2; BOOST_TEST_THROWS( s2 = string_view("123"), std::length_error); } { - fixed_string<4> s1; + static_string<4> s1; s1.assign(3, 'x'); BOOST_TEST(s1 == "xxx"); BOOST_TEST(*s1.end() == 0); - fixed_string<2> s2; + static_string<2> s2; BOOST_TEST_THROWS( s2.assign(3, 'x'), std::length_error); } { - fixed_string<5> s1("12345"); + static_string<5> s1("12345"); BOOST_TEST(*s1.end() == 0); - fixed_string<5> s2; + static_string<5> s2; s2.assign(s1); BOOST_TEST(s2 == "12345"); BOOST_TEST(*s2.end() == 0); } { - fixed_string<5> s1("12345"); + static_string<5> s1("12345"); BOOST_TEST(*s1.end() == 0); - fixed_string<7> s2; + static_string<7> s2; s2.assign(s1); BOOST_TEST(s2 == "12345"); BOOST_TEST(*s2.end() == 0); - fixed_string<3> s3; + static_string<3> s3; BOOST_TEST_THROWS( s3.assign(s1), std::length_error); } { - fixed_string<5> s1("12345"); - fixed_string<5> s2; + static_string<5> s1("12345"); + static_string<5> s2; s2.assign(s1, 1); BOOST_TEST(s2 == "2345"); BOOST_TEST(*s2.end() == 0); @@ -517,13 +518,13 @@ testAssignment() BOOST_TEST_THROWS( (s2.assign(s1, 6)), std::out_of_range); - fixed_string<3> s3; + static_string<3> s3; BOOST_TEST_THROWS( s3.assign(s1, 1), std::length_error); } { - fixed_string<5> s1; + static_string<5> s1; s1.assign("12"); BOOST_TEST(s1 == "12"); BOOST_TEST(*s1.end() == 0); @@ -532,14 +533,14 @@ testAssignment() BOOST_TEST(*s1.end() == 0); } { - fixed_string<5> s1; + static_string<5> s1; s1.assign("12345", 3); BOOST_TEST(s1 == "123"); BOOST_TEST(*s1.end() == 0); } { - fixed_string<5> s1("12345"); - fixed_string<3> s2; + static_string<5> s1("12345"); + static_string<3> s2; s2.assign(s1.begin(), s1.begin() + 2); BOOST_TEST(s2 == "12"); BOOST_TEST(*s2.end() == 0); @@ -548,17 +549,17 @@ testAssignment() std::length_error); } { - fixed_string<5> s1; + static_string<5> s1; s1.assign({'1', '2', '3'}); BOOST_TEST(s1 == "123"); BOOST_TEST(*s1.end() == 0); - fixed_string<1> s2; + static_string<1> s2; BOOST_TEST_THROWS( (s2.assign({'1', '2', '3'})), std::length_error); } { - fixed_string<5> s1; + static_string<5> s1; s1.assign(string_view("123")); BOOST_TEST(s1 == "123"); BOOST_TEST(*s1.end() == 0); @@ -570,65 +571,65 @@ testAssignment() std::length_error); } { - fixed_string<5> s1; + static_string<5> s1; s1.assign(std::string("12345"), 2, 2); BOOST_TEST(s1 == "34"); BOOST_TEST(*s1.end() == 0); s1.assign(std::string("12345"), 3); BOOST_TEST(s1 == "45"); BOOST_TEST(*s1.end() == 0); - fixed_string<2> s2; + static_string<2> s2; BOOST_TEST_THROWS( (s2.assign(std::string("12345"), 1, 3)), std::length_error); } - using S = fixed_string<400>; - BOOST_TEST(testAS(S(), "", 0, S())); - BOOST_TEST(testAS(S(), "12345", 3, S("123"))); - BOOST_TEST(testAS(S(), "12345", 4, S("1234"))); - BOOST_TEST(testAS(S(), "12345678901234567890", 0, S())); - BOOST_TEST(testAS(S(), "12345678901234567890", 1, S("1"))); - BOOST_TEST(testAS(S(), "12345678901234567890", 3, S("123"))); - BOOST_TEST(testAS(S(), "12345678901234567890", 20, S("12345678901234567890"))); - - BOOST_TEST(testAS(S("12345"), "", 0, S())); - BOOST_TEST(testAS(S("12345"), "12345", 5, S("12345"))); - BOOST_TEST(testAS(S("12345"), "1234567890", 10, S("1234567890"))); - - BOOST_TEST(testAS(S("12345678901234567890"), "", 0, S())); - BOOST_TEST(testAS(S("12345678901234567890"), "12345", 5, S("12345"))); - BOOST_TEST(testAS(S("12345678901234567890"), "12345678901234567890", 20, - S("12345678901234567890"))); - BOOST_TEST(testAS(S(), "", 0, S())); - BOOST_TEST(testAS(S(), "12345", 3, S("123"))); - BOOST_TEST(testAS(S(), "12345", 4, S("1234"))); - BOOST_TEST(testAS(S(), "12345678901234567890", 0, S())); - BOOST_TEST(testAS(S(), "12345678901234567890", 1, S("1"))); - BOOST_TEST(testAS(S(), "12345678901234567890", 3, S("123"))); - BOOST_TEST(testAS(S(), "12345678901234567890", 20, S("12345678901234567890"))); - - BOOST_TEST(testAS(S("12345"), "", 0, S())); - BOOST_TEST(testAS(S("12345"), "12345", 5, S("12345"))); - BOOST_TEST(testAS(S("12345"), "1234567890", 10, S("1234567890"))); - - BOOST_TEST(testAS(S("12345678901234567890"), "", 0, S())); - BOOST_TEST(testAS(S("12345678901234567890"), "12345", 5, S("12345"))); - BOOST_TEST(testAS(S("12345678901234567890"), "12345678901234567890", 20, - S("12345678901234567890"))); - - S s_short = "123/"; - S s_long = "Lorem ipsum dolor sit amet, consectetur/"; - - s_short.assign(s_short.data(), s_short.size()); - BOOST_TEST(s_short == "123/"); - s_short.assign(s_short.data() + 2, s_short.size() - 2); - BOOST_TEST(s_short == "3/"); - - s_long.assign(s_long.data(), s_long.size()); - BOOST_TEST(s_long == "Lorem ipsum dolor sit amet, consectetur/"); - - s_long.assign(s_long.data() + 2, 8); + using S = static_string<400>; + BOOST_TEST(testAS(S(), "", 0, S())); + BOOST_TEST(testAS(S(), "12345", 3, S("123"))); + BOOST_TEST(testAS(S(), "12345", 4, S("1234"))); + BOOST_TEST(testAS(S(), "12345678901234567890", 0, S())); + BOOST_TEST(testAS(S(), "12345678901234567890", 1, S("1"))); + BOOST_TEST(testAS(S(), "12345678901234567890", 3, S("123"))); + BOOST_TEST(testAS(S(), "12345678901234567890", 20, S("12345678901234567890"))); + + BOOST_TEST(testAS(S("12345"), "", 0, S())); + BOOST_TEST(testAS(S("12345"), "12345", 5, S("12345"))); + BOOST_TEST(testAS(S("12345"), "1234567890", 10, S("1234567890"))); + + BOOST_TEST(testAS(S("12345678901234567890"), "", 0, S())); + BOOST_TEST(testAS(S("12345678901234567890"), "12345", 5, S("12345"))); + BOOST_TEST(testAS(S("12345678901234567890"), "12345678901234567890", 20, + S("12345678901234567890"))); + BOOST_TEST(testAS(S(), "", 0, S())); + BOOST_TEST(testAS(S(), "12345", 3, S("123"))); + BOOST_TEST(testAS(S(), "12345", 4, S("1234"))); + BOOST_TEST(testAS(S(), "12345678901234567890", 0, S())); + BOOST_TEST(testAS(S(), "12345678901234567890", 1, S("1"))); + BOOST_TEST(testAS(S(), "12345678901234567890", 3, S("123"))); + BOOST_TEST(testAS(S(), "12345678901234567890", 20, S("12345678901234567890"))); + + BOOST_TEST(testAS(S("12345"), "", 0, S())); + BOOST_TEST(testAS(S("12345"), "12345", 5, S("12345"))); + BOOST_TEST(testAS(S("12345"), "1234567890", 10, S("1234567890"))); + + BOOST_TEST(testAS(S("12345678901234567890"), "", 0, S())); + BOOST_TEST(testAS(S("12345678901234567890"), "12345", 5, S("12345"))); + BOOST_TEST(testAS(S("12345678901234567890"), "12345678901234567890", 20, + S("12345678901234567890"))); + + S s_short = "123/"; + S s_long = "Lorem ipsum dolor sit amet, consectetur/"; + + s_short.assign(s_short.data(), s_short.size()); + BOOST_TEST(s_short == "123/"); + s_short.assign(s_short.data() + 2, s_short.size() - 2); + BOOST_TEST(s_short == "3/"); + + s_long.assign(s_long.data(), s_long.size()); + BOOST_TEST(s_long == "Lorem ipsum dolor sit amet, consectetur/"); + + s_long.assign(s_long.data() + 2, 8); BOOST_TEST(s_long == "rem ipsu"); } @@ -637,13 +638,13 @@ static void testElements() { - using cfs3 = fixed_string<3> const; + using cfs3 = static_string<3> const; // at(size_type pos) - BOOST_TEST(fixed_string<3>{"abc"}.at(0) == 'a'); - BOOST_TEST(fixed_string<3>{"abc"}.at(2) == 'c'); - BOOST_TEST_THROWS(fixed_string<3>{""}.at(0), std::out_of_range); - BOOST_TEST_THROWS(fixed_string<3>{"abc"}.at(4), std::out_of_range); + BOOST_TEST(static_string<3>{"abc"}.at(0) == 'a'); + BOOST_TEST(static_string<3>{"abc"}.at(2) == 'c'); + BOOST_TEST_THROWS(static_string<3>{""}.at(0), std::out_of_range); + BOOST_TEST_THROWS(static_string<3>{"abc"}.at(4), std::out_of_range); // at(size_type pos) const BOOST_TEST(cfs3{"abc"}.at(0) == 'a'); @@ -652,10 +653,10 @@ testElements() BOOST_TEST_THROWS(cfs3{"abc"}.at(4), std::out_of_range); // operator[](size_type pos) - BOOST_TEST(fixed_string<3>{"abc"}[0] == 'a'); - BOOST_TEST(fixed_string<3>{"abc"}[2] == 'c'); - BOOST_TEST(fixed_string<3>{"abc"}[3] == 0); - BOOST_TEST(fixed_string<3>{""}[0] == 0); + BOOST_TEST(static_string<3>{"abc"}[0] == 'a'); + BOOST_TEST(static_string<3>{"abc"}[2] == 'c'); + BOOST_TEST(static_string<3>{"abc"}[3] == 0); + BOOST_TEST(static_string<3>{""}[0] == 0); // operator[](size_type pos) const BOOST_TEST(cfs3{"abc"}[0] == 'a'); @@ -664,16 +665,16 @@ testElements() BOOST_TEST(cfs3{""}[0] == 0); // front() - BOOST_TEST(fixed_string<3>{"a"}.front() == 'a'); - BOOST_TEST(fixed_string<3>{"abc"}.front() == 'a'); + BOOST_TEST(static_string<3>{"a"}.front() == 'a'); + BOOST_TEST(static_string<3>{"abc"}.front() == 'a'); // front() const BOOST_TEST(cfs3{"a"}.front() == 'a'); BOOST_TEST(cfs3{"abc"}.front() == 'a'); // back() - BOOST_TEST(fixed_string<3>{"a"}.back() == 'a'); - BOOST_TEST(fixed_string<3>{"abc"}.back() == 'c'); + BOOST_TEST(static_string<3>{"a"}.back() == 'a'); + BOOST_TEST(static_string<3>{"abc"}.back() == 'c'); // back() const BOOST_TEST(cfs3{"a"}.back() == 'a'); @@ -687,7 +688,7 @@ testElements() //--- { - fixed_string<5> s("12345"); + static_string<5> s("12345"); BOOST_TEST(s.at(1) == '2'); BOOST_TEST(s.at(4) == '5'); BOOST_TEST_THROWS( @@ -695,7 +696,7 @@ testElements() std::out_of_range); } { - fixed_string<5> const s("12345"); + static_string<5> const s("12345"); BOOST_TEST(s.at(1) == '2'); BOOST_TEST(s.at(4) == '5'); BOOST_TEST_THROWS( @@ -703,20 +704,20 @@ testElements() std::out_of_range); } { - fixed_string<5> s("12345"); + static_string<5> s("12345"); BOOST_TEST(s[1] == '2'); BOOST_TEST(s[4] == '5'); s[1] = '_'; BOOST_TEST(s == "1_345"); } { - fixed_string<5> const s("12345"); + static_string<5> const s("12345"); BOOST_TEST(s[1] == '2'); BOOST_TEST(s[4] == '5'); BOOST_TEST(s[5] == 0); } { - fixed_string<3> s("123"); + static_string<3> s("123"); BOOST_TEST(s.front() == '1'); BOOST_TEST(s.back() == '3'); s.front() = '_'; @@ -725,29 +726,29 @@ testElements() BOOST_TEST(s == "_2_"); } { - fixed_string<3> const s("123"); + static_string<3> const s("123"); BOOST_TEST(s.front() == '1'); BOOST_TEST(s.back() == '3'); } { - fixed_string<3> s("123"); + static_string<3> s("123"); BOOST_TEST(std::memcmp( s.data(), "123", 3) == 0); } { - fixed_string<3> const s("123"); + static_string<3> const s("123"); BOOST_TEST(std::memcmp( s.data(), "123", 3) == 0); } { - fixed_string<3> s("123"); + static_string<3> s("123"); BOOST_TEST(std::memcmp( s.c_str(), "123\0", 4) == 0); } { - fixed_string<3> s("123"); + static_string<3> s("123"); string_view sv = s; - BOOST_TEST(fixed_string<5>(sv) == "123"); + BOOST_TEST(static_string<5>(sv) == "123"); } } @@ -757,7 +758,7 @@ void testIterators() { { - fixed_string<3> s; + static_string<3> s; BOOST_TEST(std::distance(s.begin(), s.end()) == 0); BOOST_TEST(std::distance(s.rbegin(), s.rend()) == 0); s = "123"; @@ -765,7 +766,7 @@ testIterators() BOOST_TEST(std::distance(s.rbegin(), s.rend()) == 3); } { - fixed_string<3> const s("123"); + static_string<3> const s("123"); BOOST_TEST(std::distance(s.begin(), s.end()) == 3); BOOST_TEST(std::distance(s.cbegin(), s.cend()) == 3); BOOST_TEST(std::distance(s.rbegin(), s.rend()) == 3); @@ -779,49 +780,49 @@ void testCapacity() { // empty() - BOOST_TEST(fixed_string<0>{}.empty()); - BOOST_TEST(fixed_string<1>{}.empty()); - BOOST_TEST(! fixed_string<1>{"a"}.empty()); - BOOST_TEST(! fixed_string<3>{"abc"}.empty()); + BOOST_TEST(static_string<0>{}.empty()); + BOOST_TEST(static_string<1>{}.empty()); + BOOST_TEST(! static_string<1>{"a"}.empty()); + BOOST_TEST(! static_string<3>{"abc"}.empty()); // size() - BOOST_TEST(fixed_string<0>{}.size() == 0); - BOOST_TEST(fixed_string<1>{}.size() == 0); - BOOST_TEST(fixed_string<1>{"a"}.size() == 1); - BOOST_TEST(fixed_string<3>{"abc"}.size() == 3); - BOOST_TEST(fixed_string<5>{"abc"}.size() == 3); + BOOST_TEST(static_string<0>{}.size() == 0); + BOOST_TEST(static_string<1>{}.size() == 0); + BOOST_TEST(static_string<1>{"a"}.size() == 1); + BOOST_TEST(static_string<3>{"abc"}.size() == 3); + BOOST_TEST(static_string<5>{"abc"}.size() == 3); // length() - BOOST_TEST(fixed_string<0>{}.length() == 0); - BOOST_TEST(fixed_string<1>{}.length() == 0); - BOOST_TEST(fixed_string<1>{"a"}.length() == 1); - BOOST_TEST(fixed_string<3>{"abc"}.length() == 3); - BOOST_TEST(fixed_string<5>{"abc"}.length() == 3); + BOOST_TEST(static_string<0>{}.length() == 0); + BOOST_TEST(static_string<1>{}.length() == 0); + BOOST_TEST(static_string<1>{"a"}.length() == 1); + BOOST_TEST(static_string<3>{"abc"}.length() == 3); + BOOST_TEST(static_string<5>{"abc"}.length() == 3); // max_size() - BOOST_TEST(fixed_string<0>{}.max_size() == 0); - BOOST_TEST(fixed_string<1>{}.max_size() == 1); - BOOST_TEST(fixed_string<1>{"a"}.max_size() == 1); - BOOST_TEST(fixed_string<3>{"abc"}.max_size() == 3); - BOOST_TEST(fixed_string<5>{"abc"}.max_size() == 5); + BOOST_TEST(static_string<0>{}.max_size() == 0); + BOOST_TEST(static_string<1>{}.max_size() == 1); + BOOST_TEST(static_string<1>{"a"}.max_size() == 1); + BOOST_TEST(static_string<3>{"abc"}.max_size() == 3); + BOOST_TEST(static_string<5>{"abc"}.max_size() == 5); // reserve(std::size_t n) - fixed_string<3>{}.reserve(0); - fixed_string<3>{}.reserve(1); - fixed_string<3>{}.reserve(3); - BOOST_TEST_THROWS(fixed_string<0>{}.reserve(1), std::length_error); - BOOST_TEST_THROWS(fixed_string<3>{}.reserve(4), std::length_error); + static_string<3>{}.reserve(0); + static_string<3>{}.reserve(1); + static_string<3>{}.reserve(3); + BOOST_TEST_THROWS(static_string<0>{}.reserve(1), std::length_error); + BOOST_TEST_THROWS(static_string<3>{}.reserve(4), std::length_error); // capacity() - BOOST_TEST(fixed_string<0>{}.capacity() == 0); - BOOST_TEST(fixed_string<1>{}.capacity() == 1); - BOOST_TEST(fixed_string<1>{"a"}.capacity() == 1); - BOOST_TEST(fixed_string<3>{"abc"}.capacity() == 3); - BOOST_TEST(fixed_string<5>{"abc"}.capacity() == 5); + BOOST_TEST(static_string<0>{}.capacity() == 0); + BOOST_TEST(static_string<1>{}.capacity() == 1); + BOOST_TEST(static_string<1>{"a"}.capacity() == 1); + BOOST_TEST(static_string<3>{"abc"}.capacity() == 3); + BOOST_TEST(static_string<5>{"abc"}.capacity() == 5); //--- - fixed_string<3> s; + static_string<3> s; BOOST_TEST(s.empty()); BOOST_TEST(s.size() == 0); BOOST_TEST(s.length() == 0); @@ -849,7 +850,7 @@ void testClear() { // clear() - fixed_string<3> s("123"); + static_string<3> s("123"); s.clear(); BOOST_TEST(s.empty()); BOOST_TEST(*s.end() == 0); @@ -861,42 +862,42 @@ void testInsert() { using sv = string_view; - using S = fixed_string<100>; + using S = static_string<100>; // insert(size_type index, size_type count, CharT ch) // The overload resolution is ambiguous // here because 0 is also a pointer type - //BOOST_TEST(fixed_string<3>{"bc"}.insert(0, 1, 'a') == "abc"); - BOOST_TEST(fixed_string<3>{"bc"}.insert(std::size_t(0), 1, 'a') == "abc"); - BOOST_TEST(fixed_string<3>{"ac"}.insert(1, 1, 'b') == "abc"); - BOOST_TEST(fixed_string<3>{"ab"}.insert(2, 1, 'c') == "abc"); - BOOST_TEST_THROWS(fixed_string<4>{"abc"}.insert(4, 1, '*'), std::out_of_range); - BOOST_TEST_THROWS(fixed_string<3>{"abc"}.insert(1, 1, '*'), std::length_error); + //BOOST_TEST(static_string<3>{"bc"}.insert(0, 1, 'a') == "abc"); + BOOST_TEST(static_string<3>{"bc"}.insert(std::size_t(0), 1, 'a') == "abc"); + BOOST_TEST(static_string<3>{"ac"}.insert(1, 1, 'b') == "abc"); + BOOST_TEST(static_string<3>{"ab"}.insert(2, 1, 'c') == "abc"); + BOOST_TEST_THROWS(static_string<4>{"abc"}.insert(4, 1, '*'), std::out_of_range); + BOOST_TEST_THROWS(static_string<3>{"abc"}.insert(1, 1, '*'), std::length_error); // insert(size_type index, CharT const* s) - BOOST_TEST(fixed_string<3>{"bc"}.insert(0, "a") == "abc"); - BOOST_TEST_THROWS(fixed_string<4>{"abc"}.insert(4, "*"), std::out_of_range); - BOOST_TEST_THROWS(fixed_string<3>{"abc"}.insert(1, "*"), std::length_error); + BOOST_TEST(static_string<3>{"bc"}.insert(0, "a") == "abc"); + BOOST_TEST_THROWS(static_string<4>{"abc"}.insert(4, "*"), std::out_of_range); + BOOST_TEST_THROWS(static_string<3>{"abc"}.insert(1, "*"), std::length_error); // insert(size_type index, CharT const* s, size_type count) - BOOST_TEST(fixed_string<4>{"ad"}.insert(1, "bcd", 2) == "abcd"); - BOOST_TEST_THROWS(fixed_string<4>{"abc"}.insert(4, "*"), std::out_of_range); - BOOST_TEST_THROWS(fixed_string<3>{"abc"}.insert(1, "*"), std::length_error); + BOOST_TEST(static_string<4>{"ad"}.insert(1, "bcd", 2) == "abcd"); + BOOST_TEST_THROWS(static_string<4>{"abc"}.insert(4, "*"), std::out_of_range); + BOOST_TEST_THROWS(static_string<3>{"abc"}.insert(1, "*"), std::length_error); // insert(size_type index, string_view_type sv) - BOOST_TEST(fixed_string<3>{"ac"}.insert(1, sv{"b"}) == "abc"); - BOOST_TEST_THROWS(fixed_string<4>{"abc"}.insert(4, sv{"*"}), std::out_of_range); - BOOST_TEST_THROWS(fixed_string<3>{"abc"}.insert(1, sv{"*"}), std::length_error); + BOOST_TEST(static_string<3>{"ac"}.insert(1, sv{"b"}) == "abc"); + BOOST_TEST_THROWS(static_string<4>{"abc"}.insert(4, sv{"*"}), std::out_of_range); + BOOST_TEST_THROWS(static_string<3>{"abc"}.insert(1, sv{"*"}), std::length_error); // insert(size_type index, string_view_type sv, size_type index_str, size_type count = npos) - BOOST_TEST(fixed_string<4>{"ad"}.insert(1, sv{"abcd"}, 1, 2) == "abcd"); - BOOST_TEST(fixed_string<4>{"ad"}.insert(1, sv{"abc"}, 1) == "abcd"); - BOOST_TEST_THROWS((fixed_string<4>{"ad"}.insert(1, sv{"bc"}, 3, 0)), std::out_of_range); - BOOST_TEST_THROWS((fixed_string<3>{"ad"}.insert(1, sv{"bc"}, 0, 2)), std::length_error); + BOOST_TEST(static_string<4>{"ad"}.insert(1, sv{"abcd"}, 1, 2) == "abcd"); + BOOST_TEST(static_string<4>{"ad"}.insert(1, sv{"abc"}, 1) == "abcd"); + BOOST_TEST_THROWS((static_string<4>{"ad"}.insert(1, sv{"bc"}, 3, 0)), std::out_of_range); + BOOST_TEST_THROWS((static_string<3>{"ad"}.insert(1, sv{"bc"}, 0, 2)), std::length_error); // insert(const_iterator pos, CharT ch) { - fixed_string<3> s{"ac"}; + static_string<3> s{"ac"}; BOOST_TEST(s.insert(s.begin() + 1, 'b') == s.begin() + 1); BOOST_TEST(s == "abc"); BOOST_TEST_THROWS(s.insert(s.begin() + 1, '*'), std::length_error); @@ -904,7 +905,7 @@ testInsert() // insert(const_iterator pos, size_type count, CharT ch) { - fixed_string<4> s{"ac"}; + static_string<4> s{"ac"}; BOOST_TEST(s.insert(s.begin() + 1, 2, 'b') == s.begin() + 1); BOOST_TEST(s == "abbc"); BOOST_TEST_THROWS(s.insert(s.begin() + 1, 2, '*'), std::length_error); @@ -912,15 +913,15 @@ testInsert() // insert(const_iterator pos, InputIt first, InputIt last) { - fixed_string<4> const cs{"abcd"}; - fixed_string<4> s{"ad"}; + static_string<4> const cs{"abcd"}; + static_string<4> s{"ad"}; BOOST_TEST(s.insert(s.begin() + 1, cs.begin() + 1, cs.begin() + 3) == s.begin() + 1); BOOST_TEST(s == "abcd"); } // insert(const_iterator pos, std::initializer_list ilist) { - fixed_string<4> s{"ad"}; + static_string<4> s{"ad"}; BOOST_TEST(s.insert(s.begin() + 1, {'b', 'c'}) == s.begin() + 1); BOOST_TEST(s == "abcd"); } @@ -934,9 +935,9 @@ testInsert() return "b"; } }; - BOOST_TEST(fixed_string<3>{"ac"}.insert(1, T{}) == "abc"); - BOOST_TEST_THROWS(fixed_string<4>{"abc"}.insert(4, T{}), std::out_of_range); - BOOST_TEST_THROWS(fixed_string<3>{"abc"}.insert(1, T{}), std::length_error); + BOOST_TEST(static_string<3>{"ac"}.insert(1, T{}) == "abc"); + BOOST_TEST_THROWS(static_string<4>{"abc"}.insert(4, T{}), std::out_of_range); + BOOST_TEST_THROWS(static_string<3>{"abc"}.insert(1, T{}), std::length_error); } // insert(size_type index, T const& t, size_type index_str, size_type count = npos) @@ -948,138 +949,138 @@ testInsert() return "abcd"; } }; - BOOST_TEST(fixed_string<6>{"ae"}.insert(1, T{}, 1) == "abcde"); - BOOST_TEST(fixed_string<6>{"abe"}.insert(2, T{}, 2) == "abcde"); - BOOST_TEST(fixed_string<4>{"ac"}.insert(1, T{}, 1, 1) == "abc"); - BOOST_TEST(fixed_string<4>{"ad"}.insert(1, T{}, 1, 2) == "abcd"); - BOOST_TEST_THROWS(fixed_string<4>{"abc"}.insert(4, T{}), std::out_of_range); - BOOST_TEST_THROWS(fixed_string<3>{"abc"}.insert(1, T{}), std::length_error); + BOOST_TEST(static_string<6>{"ae"}.insert(1, T{}, 1) == "abcde"); + BOOST_TEST(static_string<6>{"abe"}.insert(2, T{}, 2) == "abcde"); + BOOST_TEST(static_string<4>{"ac"}.insert(1, T{}, 1, 1) == "abc"); + BOOST_TEST(static_string<4>{"ad"}.insert(1, T{}, 1, 2) == "abcd"); + BOOST_TEST_THROWS(static_string<4>{"abc"}.insert(4, T{}), std::out_of_range); + BOOST_TEST_THROWS(static_string<3>{"abc"}.insert(1, T{}), std::length_error); } //--- { // Using 7 as the size causes a miscompile in MSVC14.2 x64 Release - fixed_string<8> s1("12345"); + static_string<8> s1("12345"); s1.insert(2, 2, '_'); BOOST_TEST(s1 == "12__345"); BOOST_TEST(*s1.end() == 0); - fixed_string<6> s2("12345"); + static_string<6> s2("12345"); BOOST_TEST_THROWS( (s2.insert(2, 2, '_')), std::length_error); - fixed_string<6> s3("12345"); + static_string<6> s3("12345"); BOOST_TEST_THROWS( (s3.insert(6, 2, '_')), std::out_of_range); } { - fixed_string<7> s1("12345"); + static_string<7> s1("12345"); s1.insert(2, "__"); BOOST_TEST(s1 == "12__345"); BOOST_TEST(*s1.end() == 0); - fixed_string<6> s2("12345"); + static_string<6> s2("12345"); BOOST_TEST_THROWS( (s2.insert(2, "__")), std::length_error); - fixed_string<6> s3("12345"); + static_string<6> s3("12345"); BOOST_TEST_THROWS( (s2.insert(6, "__")), std::out_of_range); } { - fixed_string<7> s1("12345"); + static_string<7> s1("12345"); s1.insert(2, "TUV", 2); BOOST_TEST(s1 == "12TU345"); BOOST_TEST(*s1.end() == 0); - fixed_string<6> s2("12345"); + static_string<6> s2("12345"); BOOST_TEST_THROWS( (s2.insert(2, "TUV", 2)), std::length_error); - fixed_string<6> s3("12345"); + static_string<6> s3("12345"); BOOST_TEST_THROWS( (s3.insert(6, "TUV", 2)), std::out_of_range); } { - fixed_string<7> s1("12345"); - s1.insert(2, fixed_string<3>("TU")); + static_string<7> s1("12345"); + s1.insert(2, static_string<3>("TU")); BOOST_TEST(s1 == "12TU345"); BOOST_TEST(*s1.end() == 0); - fixed_string<6> s2("12345"); + static_string<6> s2("12345"); BOOST_TEST_THROWS( - (s2.insert(2, fixed_string<3>("TUV"))), + (s2.insert(2, static_string<3>("TUV"))), std::length_error); - fixed_string<6> s3("12345"); + static_string<6> s3("12345"); BOOST_TEST_THROWS( - (s3.insert(6, fixed_string<3>("TUV"))), + (s3.insert(6, static_string<3>("TUV"))), std::out_of_range); } { - fixed_string<7> s1("12345"); - s1.insert(2, fixed_string<3>("TUV"), 1); + static_string<7> s1("12345"); + s1.insert(2, static_string<3>("TUV"), 1); BOOST_TEST(s1 == "12UV345"); BOOST_TEST(*s1.end() == 0); s1 = "12345"; - s1.insert(2, fixed_string<3>("TUV"), 1, 1); + s1.insert(2, static_string<3>("TUV"), 1, 1); BOOST_TEST(s1 == "12U345"); BOOST_TEST(*s1.end() == 0); - fixed_string<6> s2("12345"); + static_string<6> s2("12345"); BOOST_TEST_THROWS( - (s2.insert(2, fixed_string<3>("TUV"), 1, 2)), + (s2.insert(2, static_string<3>("TUV"), 1, 2)), std::length_error); - fixed_string<6> s3("12345"); + static_string<6> s3("12345"); BOOST_TEST_THROWS( - (s3.insert(6, fixed_string<3>("TUV"), 1, 2)), + (s3.insert(6, static_string<3>("TUV"), 1, 2)), std::out_of_range); } { - fixed_string<4> s1("123"); + static_string<4> s1("123"); s1.insert(s1.begin() + 1, '_'); BOOST_TEST(s1 == "1_23"); BOOST_TEST(*s1.end() == 0); - fixed_string<3> s2("123"); + static_string<3> s2("123"); BOOST_TEST_THROWS( (s2.insert(s2.begin() + 1, '_')), std::length_error); } { - fixed_string<4> s1("12"); + static_string<4> s1("12"); s1.insert(s1.begin() + 1, 2, '_'); BOOST_TEST(s1 == "1__2"); BOOST_TEST(*s1.end() == 0); - fixed_string<4> s2("123"); + static_string<4> s2("123"); BOOST_TEST_THROWS( (s2.insert(s2.begin() + 1, 2, ' ')), std::length_error); } { - fixed_string<3> s1("123"); - fixed_string<5> s2("UV"); + static_string<3> s1("123"); + static_string<5> s2("UV"); s2.insert(s2.begin() + 1, s1.begin(), s1.end()); BOOST_TEST(s2 == "U123V"); BOOST_TEST(*s2.end() == 0); - fixed_string<4> s3("UV"); + static_string<4> s3("UV"); BOOST_TEST_THROWS( (s3.insert(s3.begin() + 1, s1.begin(), s1.end())), std::length_error); } { - fixed_string<5> s1("123"); + static_string<5> s1("123"); s1.insert(1, string_view("UV")); BOOST_TEST(s1 == "1UV23"); BOOST_TEST(*s1.end() == 0); - fixed_string<4> s2("123"); + static_string<4> s2("123"); BOOST_TEST_THROWS( (s2.insert(1, string_view("UV"))), std::length_error); - fixed_string<5> s3("123"); + static_string<5> s3("123"); BOOST_TEST_THROWS( (s3.insert(5, string_view("UV"))), std::out_of_range); } { - fixed_string<5> s1("123"); + static_string<5> s1("123"); s1.insert(1, std::string("UV")); BOOST_TEST(s1 == "1UV23"); BOOST_TEST(*s1.end() == 0); @@ -1088,7 +1089,7 @@ testInsert() std::length_error); } { - fixed_string<6> s1("123"); + static_string<6> s1("123"); s1.insert(1, std::string("UVX"), 1); BOOST_TEST(s1 == "1VX23"); BOOST_TEST(*s1.end() == 0); @@ -1102,476 +1103,476 @@ testInsert() // test insert with source inside self { - fixed_string<30> fs1 = "0123456789"; + static_string<30> fs1 = "0123456789"; BOOST_TEST(fs1.insert(0, fs1.data(), 4) == "01230123456789"); } { - fixed_string<30> fs1 = "0123456789"; + static_string<30> fs1 = "0123456789"; BOOST_TEST(fs1.insert(5, fs1.data(), 4) == "01234012356789"); } { - fixed_string<30> fs1 = "0123456789"; + static_string<30> fs1 = "0123456789"; BOOST_TEST(fs1.insert(5, fs1.data(), 10) == "01234012345678956789"); } { - fixed_string<30> fs1 = "0123456789"; + static_string<30> fs1 = "0123456789"; BOOST_TEST(fs1.insert(5, fs1.data() + 6, 3) == "0123467856789"); } - S s_short = "123/"; - S s_long = "Lorem ipsum dolor sit amet, consectetur/"; - - BOOST_TEST(s_short.insert(0, s_short.data(), s_short.size()) == "123/123/"); - BOOST_TEST(s_short.insert(0, s_short.data(), s_short.size()) == "123/123/123/123/"); - BOOST_TEST(s_short.insert(0, s_short.data(), s_short.size()) == "123/123/123/123/123/123/123/123/"); + S s_short = "123/"; + S s_long = "Lorem ipsum dolor sit amet, consectetur/"; + + BOOST_TEST(s_short.insert(0, s_short.data(), s_short.size()) == "123/123/"); + BOOST_TEST(s_short.insert(0, s_short.data(), s_short.size()) == "123/123/123/123/"); + BOOST_TEST(s_short.insert(0, s_short.data(), s_short.size()) == "123/123/123/123/123/123/123/123/"); BOOST_TEST(s_long.insert(0, s_long.data(), s_long.size()) == "Lorem ipsum dolor sit amet, consectetur/Lorem ipsum dolor sit amet, consectetur/"); - - BOOST_TEST(testI(S("abcde"), 6, "12345", 0, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "12345", 1, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "12345", 2, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "12345", 4, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "12345", 5, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "1234567890", 0, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "1234567890", 1, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "1234567890", 5, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "1234567890", 9, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "1234567890", 10, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "12345678901234567890", 0, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "12345678901234567890", 1, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "12345678901234567890", 10, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "12345678901234567890", 19, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "12345678901234567890", 20, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 0, "", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 0, "12345", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 0, "12345", 1, S("1abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 0, "12345", 2, S("12abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 0, "12345", 4, S("1234abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 0, "12345", 5, S("12345abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 0, "1234567890", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 0, "1234567890", 1, S("1abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 0, "1234567890", 5, S("12345abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 0, "1234567890", 9, S("123456789abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 0, "1234567890", 10, S("1234567890abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 0, "12345678901234567890", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 0, "12345678901234567890", 1, S("1abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 0, "12345678901234567890", 10, S("1234567890abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 0, "12345678901234567890", 19, S("1234567890123456789abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 0, "12345678901234567890", 20, S("12345678901234567890abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 1, "", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 1, "12345", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 1, "12345", 1, S("a1bcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 1, "12345", 2, S("a12bcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 1, "12345", 4, S("a1234bcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 1, "12345", 5, S("a12345bcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 1, "1234567890", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 1, "1234567890", 1, S("a1bcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 1, "1234567890", 5, S("a12345bcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 1, "1234567890", 9, S("a123456789bcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 1, "1234567890", 10, S("a1234567890bcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 1, "12345678901234567890", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 1, "12345678901234567890", 1, S("a1bcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 1, "12345678901234567890", 10, S("a1234567890bcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 1, "12345678901234567890", 19, S("a1234567890123456789bcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 1, "12345678901234567890", 20, S("a12345678901234567890bcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 5, "", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 5, "12345", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 5, "12345", 1, S("abcde1fghij"))); - BOOST_TEST(testI(S("abcdefghij"), 5, "12345", 2, S("abcde12fghij"))); - BOOST_TEST(testI(S("abcdefghij"), 5, "12345", 4, S("abcde1234fghij"))); - BOOST_TEST(testI(S("abcdefghij"), 5, "12345", 5, S("abcde12345fghij"))); - BOOST_TEST(testI(S("abcdefghij"), 5, "1234567890", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 5, "1234567890", 1, S("abcde1fghij"))); - BOOST_TEST(testI(S("abcdefghij"), 5, "1234567890", 5, S("abcde12345fghij"))); - BOOST_TEST(testI(S("abcdefghij"), 5, "1234567890", 9, S("abcde123456789fghij"))); - BOOST_TEST(testI(S("abcdefghij"), 5, "1234567890", 10, S("abcde1234567890fghij"))); - BOOST_TEST(testI(S("abcdefghij"), 5, "12345678901234567890", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 5, "12345678901234567890", 1, S("abcde1fghij"))); - BOOST_TEST(testI(S("abcdefghij"), 5, "12345678901234567890", 10, S("abcde1234567890fghij"))); - BOOST_TEST(testI(S("abcdefghij"), 5, "12345678901234567890", 19, S("abcde1234567890123456789fghij"))); - BOOST_TEST(testI(S("abcdefghij"), 5, "12345678901234567890", 20, S("abcde12345678901234567890fghij"))); - BOOST_TEST(testI(S("abcdefghij"), 9, "", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 9, "12345", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 9, "12345", 1, S("abcdefghi1j"))); - BOOST_TEST(testI(S("abcdefghij"), 9, "12345", 2, S("abcdefghi12j"))); - BOOST_TEST(testI(S("abcdefghij"), 9, "12345", 4, S("abcdefghi1234j"))); - BOOST_TEST(testI(S("abcdefghij"), 9, "12345", 5, S("abcdefghi12345j"))); - BOOST_TEST(testI(S("abcdefghij"), 9, "1234567890", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 9, "1234567890", 1, S("abcdefghi1j"))); - BOOST_TEST(testI(S("abcdefghij"), 9, "1234567890", 5, S("abcdefghi12345j"))); - BOOST_TEST(testI(S("abcdefghij"), 9, "1234567890", 9, S("abcdefghi123456789j"))); - BOOST_TEST(testI(S("abcdefghij"), 9, "1234567890", 10, S("abcdefghi1234567890j"))); - BOOST_TEST(testI(S("abcdefghij"), 9, "12345678901234567890", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 9, "12345678901234567890", 1, S("abcdefghi1j"))); - BOOST_TEST(testI(S("abcdefghij"), 9, "12345678901234567890", 10, S("abcdefghi1234567890j"))); - BOOST_TEST(testI(S("abcdefghij"), 9, "12345678901234567890", 19, S("abcdefghi1234567890123456789j"))); - BOOST_TEST(testI(S("abcdefghij"), 9, "12345678901234567890", 20, S("abcdefghi12345678901234567890j"))); - BOOST_TEST(testI(S("abcdefghij"), 10, "", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 10, "12345", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 10, "12345", 1, S("abcdefghij1"))); - BOOST_TEST(testI(S("abcdefghij"), 10, "12345", 2, S("abcdefghij12"))); - BOOST_TEST(testI(S("abcdefghij"), 10, "12345", 4, S("abcdefghij1234"))); - BOOST_TEST(testI(S("abcdefghij"), 10, "12345", 5, S("abcdefghij12345"))); - BOOST_TEST(testI(S("abcdefghij"), 10, "1234567890", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 10, "1234567890", 1, S("abcdefghij1"))); - BOOST_TEST(testI(S("abcdefghij"), 10, "1234567890", 5, S("abcdefghij12345"))); - BOOST_TEST(testI(S("abcdefghij"), 10, "1234567890", 9, S("abcdefghij123456789"))); - BOOST_TEST(testI(S("abcdefghij"), 10, "1234567890", 10, S("abcdefghij1234567890"))); - BOOST_TEST(testI(S("abcdefghij"), 10, "12345678901234567890", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 10, "12345678901234567890", 1, S("abcdefghij1"))); - BOOST_TEST(testI(S("abcdefghij"), 10, "12345678901234567890", 10, S("abcdefghij1234567890"))); - BOOST_TEST(testI(S("abcdefghij"), 10, "12345678901234567890", 19, S("abcdefghij1234567890123456789"))); - BOOST_TEST(testI(S("abcdefghij"), 10, "12345678901234567890", 20, S("abcdefghij12345678901234567890"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "", 0, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "12345", 0, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "12345", 1, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "12345", 2, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "12345", 4, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "12345", 5, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "1234567890", 0, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "1234567890", 1, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "1234567890", 5, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "1234567890", 9, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "1234567890", 10, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "12345678901234567890", 0, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "12345678901234567890", 1, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "12345678901234567890", 10, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "12345678901234567890", 19, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "12345678901234567890", 20, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345", 1, S("1abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345", 2, S("12abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345", 4, S("1234abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345", 5, S("12345abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "1234567890", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "1234567890", 1, S("1abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "1234567890", 5, S("12345abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "1234567890", 9, S("123456789abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "1234567890", 10, S("1234567890abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345678901234567890", 1, S("1abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345678901234567890", 10, S("1234567890abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345678901234567890", 19, S("1234567890123456789abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345678901234567890", 20, S("12345678901234567890abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345", 1, S("a1bcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345", 2, S("a12bcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345", 4, S("a1234bcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345", 5, S("a12345bcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "1234567890", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "1234567890", 1, S("a1bcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "1234567890", 5, S("a12345bcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "1234567890", 9, S("a123456789bcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "1234567890", 10, S("a1234567890bcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345678901234567890", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345678901234567890", 1, S("a1bcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345678901234567890", 10, S("a1234567890bcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345678901234567890", 19, S("a1234567890123456789bcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345678901234567890", 20, S("a12345678901234567890bcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345", 1, S("abcdefghij1klmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345", 2, S("abcdefghij12klmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345", 4, S("abcdefghij1234klmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345", 5, S("abcdefghij12345klmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "1234567890", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "1234567890", 1, S("abcdefghij1klmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "1234567890", 5, S("abcdefghij12345klmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "1234567890", 9, S("abcdefghij123456789klmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "1234567890", 10, S("abcdefghij1234567890klmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345678901234567890", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345678901234567890", 1, S("abcdefghij1klmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345678901234567890", 10, S("abcdefghij1234567890klmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345678901234567890", 19, S("abcdefghij1234567890123456789klmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345678901234567890", 20, S("abcdefghij12345678901234567890klmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345", 1, S("abcdefghijklmnopqrs1t"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345", 2, S("abcdefghijklmnopqrs12t"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345", 4, S("abcdefghijklmnopqrs1234t"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345", 5, S("abcdefghijklmnopqrs12345t"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "1234567890", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "1234567890", 1, S("abcdefghijklmnopqrs1t"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "1234567890", 5, S("abcdefghijklmnopqrs12345t"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "1234567890", 9, S("abcdefghijklmnopqrs123456789t"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "1234567890", 10, S("abcdefghijklmnopqrs1234567890t"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345678901234567890", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345678901234567890", 1, S("abcdefghijklmnopqrs1t"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345678901234567890", 10, S("abcdefghijklmnopqrs1234567890t"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345678901234567890", 19, S("abcdefghijklmnopqrs1234567890123456789t"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345678901234567890", 20, S("abcdefghijklmnopqrs12345678901234567890t"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345", 1, S("abcdefghijklmnopqrst1"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345", 2, S("abcdefghijklmnopqrst12"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345", 4, S("abcdefghijklmnopqrst1234"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345", 5, S("abcdefghijklmnopqrst12345"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "1234567890", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "1234567890", 1, S("abcdefghijklmnopqrst1"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "1234567890", 5, S("abcdefghijklmnopqrst12345"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "1234567890", 9, S("abcdefghijklmnopqrst123456789"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "1234567890", 10, S("abcdefghijklmnopqrst1234567890"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345678901234567890", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345678901234567890", 1, S("abcdefghijklmnopqrst1"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345678901234567890", 10, S("abcdefghijklmnopqrst1234567890"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345678901234567890", 19, S("abcdefghijklmnopqrst1234567890123456789"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345678901234567890", 20, S("abcdefghijklmnopqrst12345678901234567890"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "", 0, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345", 0, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345", 1, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345", 2, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345", 4, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345", 5, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "1234567890", 0, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "1234567890", 1, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "1234567890", 5, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "1234567890", 9, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "1234567890", 10, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345678901234567890", 0, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345678901234567890", 1, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345678901234567890", 10, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345678901234567890", 19, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345678901234567890", 20, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "", 0, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "12345", 0, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "12345", 1, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "12345", 2, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "12345", 4, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "12345", 5, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "1234567890", 0, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "1234567890", 1, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "1234567890", 5, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "1234567890", 9, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "1234567890", 10, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "12345678901234567890", 0, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "12345678901234567890", 1, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "12345678901234567890", 10, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "12345678901234567890", 19, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "12345678901234567890", 20, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 0, "", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 0, "12345", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 0, "12345", 1, S("1abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 0, "12345", 2, S("12abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 0, "12345", 4, S("1234abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 0, "12345", 5, S("12345abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 0, "1234567890", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 0, "1234567890", 1, S("1abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 0, "1234567890", 5, S("12345abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 0, "1234567890", 9, S("123456789abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 0, "1234567890", 10, S("1234567890abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 0, "12345678901234567890", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 0, "12345678901234567890", 1, S("1abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 0, "12345678901234567890", 10, S("1234567890abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 0, "12345678901234567890", 19, S("1234567890123456789abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 0, "12345678901234567890", 20, S("12345678901234567890abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 1, "", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 1, "12345", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 1, "12345", 1, S("a1bcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 1, "12345", 2, S("a12bcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 1, "12345", 4, S("a1234bcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 1, "12345", 5, S("a12345bcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 1, "1234567890", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 1, "1234567890", 1, S("a1bcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 1, "1234567890", 5, S("a12345bcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 1, "1234567890", 9, S("a123456789bcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 1, "1234567890", 10, S("a1234567890bcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 1, "12345678901234567890", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 1, "12345678901234567890", 1, S("a1bcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 1, "12345678901234567890", 10, S("a1234567890bcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 1, "12345678901234567890", 19, S("a1234567890123456789bcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 1, "12345678901234567890", 20, S("a12345678901234567890bcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 5, "", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 5, "12345", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 5, "12345", 1, S("abcde1fghij"))); - BOOST_TEST(testI(S("abcdefghij"), 5, "12345", 2, S("abcde12fghij"))); - BOOST_TEST(testI(S("abcdefghij"), 5, "12345", 4, S("abcde1234fghij"))); - BOOST_TEST(testI(S("abcdefghij"), 5, "12345", 5, S("abcde12345fghij"))); - BOOST_TEST(testI(S("abcdefghij"), 5, "1234567890", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 5, "1234567890", 1, S("abcde1fghij"))); - BOOST_TEST(testI(S("abcdefghij"), 5, "1234567890", 5, S("abcde12345fghij"))); - BOOST_TEST(testI(S("abcdefghij"), 5, "1234567890", 9, S("abcde123456789fghij"))); - BOOST_TEST(testI(S("abcdefghij"), 5, "1234567890", 10, S("abcde1234567890fghij"))); - BOOST_TEST(testI(S("abcdefghij"), 5, "12345678901234567890", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 5, "12345678901234567890", 1, S("abcde1fghij"))); - BOOST_TEST(testI(S("abcdefghij"), 5, "12345678901234567890", 10, S("abcde1234567890fghij"))); - BOOST_TEST(testI(S("abcdefghij"), 5, "12345678901234567890", 19, S("abcde1234567890123456789fghij"))); - BOOST_TEST(testI(S("abcdefghij"), 5, "12345678901234567890", 20, S("abcde12345678901234567890fghij"))); - BOOST_TEST(testI(S("abcdefghij"), 9, "", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 9, "12345", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 9, "12345", 1, S("abcdefghi1j"))); - BOOST_TEST(testI(S("abcdefghij"), 9, "12345", 2, S("abcdefghi12j"))); - BOOST_TEST(testI(S("abcdefghij"), 9, "12345", 4, S("abcdefghi1234j"))); - BOOST_TEST(testI(S("abcdefghij"), 9, "12345", 5, S("abcdefghi12345j"))); - BOOST_TEST(testI(S("abcdefghij"), 9, "1234567890", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 9, "1234567890", 1, S("abcdefghi1j"))); - BOOST_TEST(testI(S("abcdefghij"), 9, "1234567890", 5, S("abcdefghi12345j"))); - BOOST_TEST(testI(S("abcdefghij"), 9, "1234567890", 9, S("abcdefghi123456789j"))); - BOOST_TEST(testI(S("abcdefghij"), 9, "1234567890", 10, S("abcdefghi1234567890j"))); - BOOST_TEST(testI(S("abcdefghij"), 9, "12345678901234567890", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 9, "12345678901234567890", 1, S("abcdefghi1j"))); - BOOST_TEST(testI(S("abcdefghij"), 9, "12345678901234567890", 10, S("abcdefghi1234567890j"))); - BOOST_TEST(testI(S("abcdefghij"), 9, "12345678901234567890", 19, S("abcdefghi1234567890123456789j"))); - BOOST_TEST(testI(S("abcdefghij"), 9, "12345678901234567890", 20, S("abcdefghi12345678901234567890j"))); - BOOST_TEST(testI(S("abcdefghij"), 10, "", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 10, "12345", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 10, "12345", 1, S("abcdefghij1"))); - BOOST_TEST(testI(S("abcdefghij"), 10, "12345", 2, S("abcdefghij12"))); - BOOST_TEST(testI(S("abcdefghij"), 10, "12345", 4, S("abcdefghij1234"))); - BOOST_TEST(testI(S("abcdefghij"), 10, "12345", 5, S("abcdefghij12345"))); - BOOST_TEST(testI(S("abcdefghij"), 10, "1234567890", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 10, "1234567890", 1, S("abcdefghij1"))); - BOOST_TEST(testI(S("abcdefghij"), 10, "1234567890", 5, S("abcdefghij12345"))); - BOOST_TEST(testI(S("abcdefghij"), 10, "1234567890", 9, S("abcdefghij123456789"))); - BOOST_TEST(testI(S("abcdefghij"), 10, "1234567890", 10, S("abcdefghij1234567890"))); - BOOST_TEST(testI(S("abcdefghij"), 10, "12345678901234567890", 0, S("abcdefghij"))); - BOOST_TEST(testI(S("abcdefghij"), 10, "12345678901234567890", 1, S("abcdefghij1"))); - BOOST_TEST(testI(S("abcdefghij"), 10, "12345678901234567890", 10, S("abcdefghij1234567890"))); - BOOST_TEST(testI(S("abcdefghij"), 10, "12345678901234567890", 19, S("abcdefghij1234567890123456789"))); - BOOST_TEST(testI(S("abcdefghij"), 10, "12345678901234567890", 20, S("abcdefghij12345678901234567890"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "", 0, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "12345", 0, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "12345", 1, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "12345", 2, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "12345", 4, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "12345", 5, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "1234567890", 0, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "1234567890", 1, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "1234567890", 5, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "1234567890", 9, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "1234567890", 10, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "12345678901234567890", 0, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "12345678901234567890", 1, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "12345678901234567890", 10, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "12345678901234567890", 19, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "12345678901234567890", 20, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345", 1, S("1abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345", 2, S("12abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345", 4, S("1234abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345", 5, S("12345abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "1234567890", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "1234567890", 1, S("1abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "1234567890", 5, S("12345abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "1234567890", 9, S("123456789abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "1234567890", 10, S("1234567890abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345678901234567890", 1, S("1abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345678901234567890", 10, S("1234567890abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345678901234567890", 19, S("1234567890123456789abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345678901234567890", 20, S("12345678901234567890abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345", 1, S("a1bcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345", 2, S("a12bcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345", 4, S("a1234bcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345", 5, S("a12345bcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "1234567890", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "1234567890", 1, S("a1bcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "1234567890", 5, S("a12345bcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "1234567890", 9, S("a123456789bcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "1234567890", 10, S("a1234567890bcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345678901234567890", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345678901234567890", 1, S("a1bcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345678901234567890", 10, S("a1234567890bcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345678901234567890", 19, S("a1234567890123456789bcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345678901234567890", 20, S("a12345678901234567890bcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345", 1, S("abcdefghij1klmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345", 2, S("abcdefghij12klmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345", 4, S("abcdefghij1234klmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345", 5, S("abcdefghij12345klmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "1234567890", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "1234567890", 1, S("abcdefghij1klmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "1234567890", 5, S("abcdefghij12345klmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "1234567890", 9, S("abcdefghij123456789klmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "1234567890", 10, S("abcdefghij1234567890klmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345678901234567890", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345678901234567890", 1, S("abcdefghij1klmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345678901234567890", 10, S("abcdefghij1234567890klmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345678901234567890", 19, S("abcdefghij1234567890123456789klmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345678901234567890", 20, S("abcdefghij12345678901234567890klmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345", 1, S("abcdefghijklmnopqrs1t"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345", 2, S("abcdefghijklmnopqrs12t"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345", 4, S("abcdefghijklmnopqrs1234t"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345", 5, S("abcdefghijklmnopqrs12345t"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "1234567890", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "1234567890", 1, S("abcdefghijklmnopqrs1t"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "1234567890", 5, S("abcdefghijklmnopqrs12345t"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "1234567890", 9, S("abcdefghijklmnopqrs123456789t"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "1234567890", 10, S("abcdefghijklmnopqrs1234567890t"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345678901234567890", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345678901234567890", 1, S("abcdefghijklmnopqrs1t"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345678901234567890", 10, S("abcdefghijklmnopqrs1234567890t"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345678901234567890", 19, S("abcdefghijklmnopqrs1234567890123456789t"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345678901234567890", 20, S("abcdefghijklmnopqrs12345678901234567890t"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345", 1, S("abcdefghijklmnopqrst1"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345", 2, S("abcdefghijklmnopqrst12"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345", 4, S("abcdefghijklmnopqrst1234"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345", 5, S("abcdefghijklmnopqrst12345"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "1234567890", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "1234567890", 1, S("abcdefghijklmnopqrst1"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "1234567890", 5, S("abcdefghijklmnopqrst12345"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "1234567890", 9, S("abcdefghijklmnopqrst123456789"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "1234567890", 10, S("abcdefghijklmnopqrst1234567890"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345678901234567890", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345678901234567890", 1, S("abcdefghijklmnopqrst1"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345678901234567890", 10, S("abcdefghijklmnopqrst1234567890"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345678901234567890", 19, S("abcdefghijklmnopqrst1234567890123456789"))); + + BOOST_TEST(testI(S("abcde"), 6, "12345", 0, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "12345", 1, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "12345", 2, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "12345", 4, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "12345", 5, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "1234567890", 0, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "1234567890", 1, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "1234567890", 5, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "1234567890", 9, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "1234567890", 10, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "12345678901234567890", 0, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "12345678901234567890", 1, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "12345678901234567890", 10, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "12345678901234567890", 19, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "12345678901234567890", 20, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 0, "", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 0, "12345", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 0, "12345", 1, S("1abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 0, "12345", 2, S("12abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 0, "12345", 4, S("1234abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 0, "12345", 5, S("12345abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 0, "1234567890", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 0, "1234567890", 1, S("1abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 0, "1234567890", 5, S("12345abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 0, "1234567890", 9, S("123456789abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 0, "1234567890", 10, S("1234567890abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 0, "12345678901234567890", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 0, "12345678901234567890", 1, S("1abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 0, "12345678901234567890", 10, S("1234567890abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 0, "12345678901234567890", 19, S("1234567890123456789abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 0, "12345678901234567890", 20, S("12345678901234567890abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 1, "", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 1, "12345", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 1, "12345", 1, S("a1bcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 1, "12345", 2, S("a12bcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 1, "12345", 4, S("a1234bcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 1, "12345", 5, S("a12345bcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 1, "1234567890", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 1, "1234567890", 1, S("a1bcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 1, "1234567890", 5, S("a12345bcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 1, "1234567890", 9, S("a123456789bcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 1, "1234567890", 10, S("a1234567890bcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 1, "12345678901234567890", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 1, "12345678901234567890", 1, S("a1bcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 1, "12345678901234567890", 10, S("a1234567890bcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 1, "12345678901234567890", 19, S("a1234567890123456789bcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 1, "12345678901234567890", 20, S("a12345678901234567890bcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 5, "", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 5, "12345", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 5, "12345", 1, S("abcde1fghij"))); + BOOST_TEST(testI(S("abcdefghij"), 5, "12345", 2, S("abcde12fghij"))); + BOOST_TEST(testI(S("abcdefghij"), 5, "12345", 4, S("abcde1234fghij"))); + BOOST_TEST(testI(S("abcdefghij"), 5, "12345", 5, S("abcde12345fghij"))); + BOOST_TEST(testI(S("abcdefghij"), 5, "1234567890", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 5, "1234567890", 1, S("abcde1fghij"))); + BOOST_TEST(testI(S("abcdefghij"), 5, "1234567890", 5, S("abcde12345fghij"))); + BOOST_TEST(testI(S("abcdefghij"), 5, "1234567890", 9, S("abcde123456789fghij"))); + BOOST_TEST(testI(S("abcdefghij"), 5, "1234567890", 10, S("abcde1234567890fghij"))); + BOOST_TEST(testI(S("abcdefghij"), 5, "12345678901234567890", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 5, "12345678901234567890", 1, S("abcde1fghij"))); + BOOST_TEST(testI(S("abcdefghij"), 5, "12345678901234567890", 10, S("abcde1234567890fghij"))); + BOOST_TEST(testI(S("abcdefghij"), 5, "12345678901234567890", 19, S("abcde1234567890123456789fghij"))); + BOOST_TEST(testI(S("abcdefghij"), 5, "12345678901234567890", 20, S("abcde12345678901234567890fghij"))); + BOOST_TEST(testI(S("abcdefghij"), 9, "", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 9, "12345", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 9, "12345", 1, S("abcdefghi1j"))); + BOOST_TEST(testI(S("abcdefghij"), 9, "12345", 2, S("abcdefghi12j"))); + BOOST_TEST(testI(S("abcdefghij"), 9, "12345", 4, S("abcdefghi1234j"))); + BOOST_TEST(testI(S("abcdefghij"), 9, "12345", 5, S("abcdefghi12345j"))); + BOOST_TEST(testI(S("abcdefghij"), 9, "1234567890", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 9, "1234567890", 1, S("abcdefghi1j"))); + BOOST_TEST(testI(S("abcdefghij"), 9, "1234567890", 5, S("abcdefghi12345j"))); + BOOST_TEST(testI(S("abcdefghij"), 9, "1234567890", 9, S("abcdefghi123456789j"))); + BOOST_TEST(testI(S("abcdefghij"), 9, "1234567890", 10, S("abcdefghi1234567890j"))); + BOOST_TEST(testI(S("abcdefghij"), 9, "12345678901234567890", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 9, "12345678901234567890", 1, S("abcdefghi1j"))); + BOOST_TEST(testI(S("abcdefghij"), 9, "12345678901234567890", 10, S("abcdefghi1234567890j"))); + BOOST_TEST(testI(S("abcdefghij"), 9, "12345678901234567890", 19, S("abcdefghi1234567890123456789j"))); + BOOST_TEST(testI(S("abcdefghij"), 9, "12345678901234567890", 20, S("abcdefghi12345678901234567890j"))); + BOOST_TEST(testI(S("abcdefghij"), 10, "", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 10, "12345", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 10, "12345", 1, S("abcdefghij1"))); + BOOST_TEST(testI(S("abcdefghij"), 10, "12345", 2, S("abcdefghij12"))); + BOOST_TEST(testI(S("abcdefghij"), 10, "12345", 4, S("abcdefghij1234"))); + BOOST_TEST(testI(S("abcdefghij"), 10, "12345", 5, S("abcdefghij12345"))); + BOOST_TEST(testI(S("abcdefghij"), 10, "1234567890", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 10, "1234567890", 1, S("abcdefghij1"))); + BOOST_TEST(testI(S("abcdefghij"), 10, "1234567890", 5, S("abcdefghij12345"))); + BOOST_TEST(testI(S("abcdefghij"), 10, "1234567890", 9, S("abcdefghij123456789"))); + BOOST_TEST(testI(S("abcdefghij"), 10, "1234567890", 10, S("abcdefghij1234567890"))); + BOOST_TEST(testI(S("abcdefghij"), 10, "12345678901234567890", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 10, "12345678901234567890", 1, S("abcdefghij1"))); + BOOST_TEST(testI(S("abcdefghij"), 10, "12345678901234567890", 10, S("abcdefghij1234567890"))); + BOOST_TEST(testI(S("abcdefghij"), 10, "12345678901234567890", 19, S("abcdefghij1234567890123456789"))); + BOOST_TEST(testI(S("abcdefghij"), 10, "12345678901234567890", 20, S("abcdefghij12345678901234567890"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "", 0, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "12345", 0, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "12345", 1, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "12345", 2, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "12345", 4, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "12345", 5, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "1234567890", 0, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "1234567890", 1, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "1234567890", 5, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "1234567890", 9, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "1234567890", 10, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "12345678901234567890", 0, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "12345678901234567890", 1, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "12345678901234567890", 10, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "12345678901234567890", 19, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "12345678901234567890", 20, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345", 1, S("1abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345", 2, S("12abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345", 4, S("1234abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345", 5, S("12345abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "1234567890", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "1234567890", 1, S("1abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "1234567890", 5, S("12345abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "1234567890", 9, S("123456789abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "1234567890", 10, S("1234567890abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345678901234567890", 1, S("1abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345678901234567890", 10, S("1234567890abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345678901234567890", 19, S("1234567890123456789abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345678901234567890", 20, S("12345678901234567890abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345", 1, S("a1bcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345", 2, S("a12bcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345", 4, S("a1234bcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345", 5, S("a12345bcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "1234567890", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "1234567890", 1, S("a1bcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "1234567890", 5, S("a12345bcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "1234567890", 9, S("a123456789bcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "1234567890", 10, S("a1234567890bcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345678901234567890", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345678901234567890", 1, S("a1bcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345678901234567890", 10, S("a1234567890bcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345678901234567890", 19, S("a1234567890123456789bcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345678901234567890", 20, S("a12345678901234567890bcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345", 1, S("abcdefghij1klmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345", 2, S("abcdefghij12klmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345", 4, S("abcdefghij1234klmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345", 5, S("abcdefghij12345klmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "1234567890", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "1234567890", 1, S("abcdefghij1klmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "1234567890", 5, S("abcdefghij12345klmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "1234567890", 9, S("abcdefghij123456789klmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "1234567890", 10, S("abcdefghij1234567890klmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345678901234567890", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345678901234567890", 1, S("abcdefghij1klmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345678901234567890", 10, S("abcdefghij1234567890klmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345678901234567890", 19, S("abcdefghij1234567890123456789klmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345678901234567890", 20, S("abcdefghij12345678901234567890klmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345", 1, S("abcdefghijklmnopqrs1t"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345", 2, S("abcdefghijklmnopqrs12t"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345", 4, S("abcdefghijklmnopqrs1234t"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345", 5, S("abcdefghijklmnopqrs12345t"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "1234567890", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "1234567890", 1, S("abcdefghijklmnopqrs1t"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "1234567890", 5, S("abcdefghijklmnopqrs12345t"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "1234567890", 9, S("abcdefghijklmnopqrs123456789t"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "1234567890", 10, S("abcdefghijklmnopqrs1234567890t"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345678901234567890", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345678901234567890", 1, S("abcdefghijklmnopqrs1t"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345678901234567890", 10, S("abcdefghijklmnopqrs1234567890t"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345678901234567890", 19, S("abcdefghijklmnopqrs1234567890123456789t"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345678901234567890", 20, S("abcdefghijklmnopqrs12345678901234567890t"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345", 1, S("abcdefghijklmnopqrst1"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345", 2, S("abcdefghijklmnopqrst12"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345", 4, S("abcdefghijklmnopqrst1234"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345", 5, S("abcdefghijklmnopqrst12345"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "1234567890", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "1234567890", 1, S("abcdefghijklmnopqrst1"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "1234567890", 5, S("abcdefghijklmnopqrst12345"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "1234567890", 9, S("abcdefghijklmnopqrst123456789"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "1234567890", 10, S("abcdefghijklmnopqrst1234567890"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345678901234567890", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345678901234567890", 1, S("abcdefghijklmnopqrst1"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345678901234567890", 10, S("abcdefghijklmnopqrst1234567890"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345678901234567890", 19, S("abcdefghijklmnopqrst1234567890123456789"))); BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345678901234567890", 20, S("abcdefghijklmnopqrst12345678901234567890"))); - BOOST_TEST(testI(S("abcde"), 6, "", 0, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "12345", 0, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "12345", 1, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "12345", 2, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "12345", 4, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "12345", 5, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "1234567890", 0, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "1234567890", 1, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "1234567890", 5, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "1234567890", 9, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "1234567890", 10, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "12345678901234567890", 0, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "12345678901234567890", 1, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "12345678901234567890", 10, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "12345678901234567890", 19, S("can't happen"))); - BOOST_TEST(testI(S("abcde"), 6, "12345678901234567890", 20, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "", 0, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "12345", 0, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "12345", 1, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "12345", 2, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "12345", 4, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "12345", 5, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "1234567890", 0, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "1234567890", 1, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "1234567890", 5, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "1234567890", 9, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "1234567890", 10, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "12345678901234567890", 0, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "12345678901234567890", 1, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "12345678901234567890", 10, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "12345678901234567890", 19, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghij"), 11, "12345678901234567890", 20, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "", 0, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345", 0, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345", 1, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345", 2, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345", 4, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345", 5, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "1234567890", 0, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "1234567890", 1, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "1234567890", 5, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "1234567890", 9, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "1234567890", 10, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345678901234567890", 0, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345678901234567890", 1, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345678901234567890", 10, S("can't happen"))); - BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345678901234567890", 19, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "", 0, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345", 0, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345", 1, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345", 2, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345", 4, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345", 5, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "1234567890", 0, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "1234567890", 1, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "1234567890", 5, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "1234567890", 9, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "1234567890", 10, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345678901234567890", 0, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345678901234567890", 1, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345678901234567890", 10, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345678901234567890", 19, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345678901234567890", 20, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "", 0, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "12345", 0, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "12345", 1, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "12345", 2, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "12345", 4, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "12345", 5, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "1234567890", 0, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "1234567890", 1, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "1234567890", 5, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "1234567890", 9, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "1234567890", 10, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "12345678901234567890", 0, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "12345678901234567890", 1, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "12345678901234567890", 10, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "12345678901234567890", 19, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "12345678901234567890", 20, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 0, "", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 0, "12345", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 0, "12345", 1, S("1abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 0, "12345", 2, S("12abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 0, "12345", 4, S("1234abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 0, "12345", 5, S("12345abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 0, "1234567890", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 0, "1234567890", 1, S("1abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 0, "1234567890", 5, S("12345abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 0, "1234567890", 9, S("123456789abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 0, "1234567890", 10, S("1234567890abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 0, "12345678901234567890", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 0, "12345678901234567890", 1, S("1abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 0, "12345678901234567890", 10, S("1234567890abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 0, "12345678901234567890", 19, S("1234567890123456789abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 0, "12345678901234567890", 20, S("12345678901234567890abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 1, "", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 1, "12345", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 1, "12345", 1, S("a1bcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 1, "12345", 2, S("a12bcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 1, "12345", 4, S("a1234bcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 1, "12345", 5, S("a12345bcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 1, "1234567890", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 1, "1234567890", 1, S("a1bcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 1, "1234567890", 5, S("a12345bcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 1, "1234567890", 9, S("a123456789bcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 1, "1234567890", 10, S("a1234567890bcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 1, "12345678901234567890", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 1, "12345678901234567890", 1, S("a1bcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 1, "12345678901234567890", 10, S("a1234567890bcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 1, "12345678901234567890", 19, S("a1234567890123456789bcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 1, "12345678901234567890", 20, S("a12345678901234567890bcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 5, "", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 5, "12345", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 5, "12345", 1, S("abcde1fghij"))); + BOOST_TEST(testI(S("abcdefghij"), 5, "12345", 2, S("abcde12fghij"))); + BOOST_TEST(testI(S("abcdefghij"), 5, "12345", 4, S("abcde1234fghij"))); + BOOST_TEST(testI(S("abcdefghij"), 5, "12345", 5, S("abcde12345fghij"))); + BOOST_TEST(testI(S("abcdefghij"), 5, "1234567890", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 5, "1234567890", 1, S("abcde1fghij"))); + BOOST_TEST(testI(S("abcdefghij"), 5, "1234567890", 5, S("abcde12345fghij"))); + BOOST_TEST(testI(S("abcdefghij"), 5, "1234567890", 9, S("abcde123456789fghij"))); + BOOST_TEST(testI(S("abcdefghij"), 5, "1234567890", 10, S("abcde1234567890fghij"))); + BOOST_TEST(testI(S("abcdefghij"), 5, "12345678901234567890", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 5, "12345678901234567890", 1, S("abcde1fghij"))); + BOOST_TEST(testI(S("abcdefghij"), 5, "12345678901234567890", 10, S("abcde1234567890fghij"))); + BOOST_TEST(testI(S("abcdefghij"), 5, "12345678901234567890", 19, S("abcde1234567890123456789fghij"))); + BOOST_TEST(testI(S("abcdefghij"), 5, "12345678901234567890", 20, S("abcde12345678901234567890fghij"))); + BOOST_TEST(testI(S("abcdefghij"), 9, "", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 9, "12345", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 9, "12345", 1, S("abcdefghi1j"))); + BOOST_TEST(testI(S("abcdefghij"), 9, "12345", 2, S("abcdefghi12j"))); + BOOST_TEST(testI(S("abcdefghij"), 9, "12345", 4, S("abcdefghi1234j"))); + BOOST_TEST(testI(S("abcdefghij"), 9, "12345", 5, S("abcdefghi12345j"))); + BOOST_TEST(testI(S("abcdefghij"), 9, "1234567890", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 9, "1234567890", 1, S("abcdefghi1j"))); + BOOST_TEST(testI(S("abcdefghij"), 9, "1234567890", 5, S("abcdefghi12345j"))); + BOOST_TEST(testI(S("abcdefghij"), 9, "1234567890", 9, S("abcdefghi123456789j"))); + BOOST_TEST(testI(S("abcdefghij"), 9, "1234567890", 10, S("abcdefghi1234567890j"))); + BOOST_TEST(testI(S("abcdefghij"), 9, "12345678901234567890", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 9, "12345678901234567890", 1, S("abcdefghi1j"))); + BOOST_TEST(testI(S("abcdefghij"), 9, "12345678901234567890", 10, S("abcdefghi1234567890j"))); + BOOST_TEST(testI(S("abcdefghij"), 9, "12345678901234567890", 19, S("abcdefghi1234567890123456789j"))); + BOOST_TEST(testI(S("abcdefghij"), 9, "12345678901234567890", 20, S("abcdefghi12345678901234567890j"))); + BOOST_TEST(testI(S("abcdefghij"), 10, "", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 10, "12345", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 10, "12345", 1, S("abcdefghij1"))); + BOOST_TEST(testI(S("abcdefghij"), 10, "12345", 2, S("abcdefghij12"))); + BOOST_TEST(testI(S("abcdefghij"), 10, "12345", 4, S("abcdefghij1234"))); + BOOST_TEST(testI(S("abcdefghij"), 10, "12345", 5, S("abcdefghij12345"))); + BOOST_TEST(testI(S("abcdefghij"), 10, "1234567890", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 10, "1234567890", 1, S("abcdefghij1"))); + BOOST_TEST(testI(S("abcdefghij"), 10, "1234567890", 5, S("abcdefghij12345"))); + BOOST_TEST(testI(S("abcdefghij"), 10, "1234567890", 9, S("abcdefghij123456789"))); + BOOST_TEST(testI(S("abcdefghij"), 10, "1234567890", 10, S("abcdefghij1234567890"))); + BOOST_TEST(testI(S("abcdefghij"), 10, "12345678901234567890", 0, S("abcdefghij"))); + BOOST_TEST(testI(S("abcdefghij"), 10, "12345678901234567890", 1, S("abcdefghij1"))); + BOOST_TEST(testI(S("abcdefghij"), 10, "12345678901234567890", 10, S("abcdefghij1234567890"))); + BOOST_TEST(testI(S("abcdefghij"), 10, "12345678901234567890", 19, S("abcdefghij1234567890123456789"))); + BOOST_TEST(testI(S("abcdefghij"), 10, "12345678901234567890", 20, S("abcdefghij12345678901234567890"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "", 0, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "12345", 0, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "12345", 1, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "12345", 2, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "12345", 4, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "12345", 5, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "1234567890", 0, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "1234567890", 1, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "1234567890", 5, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "1234567890", 9, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "1234567890", 10, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "12345678901234567890", 0, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "12345678901234567890", 1, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "12345678901234567890", 10, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "12345678901234567890", 19, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "12345678901234567890", 20, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345", 1, S("1abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345", 2, S("12abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345", 4, S("1234abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345", 5, S("12345abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "1234567890", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "1234567890", 1, S("1abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "1234567890", 5, S("12345abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "1234567890", 9, S("123456789abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "1234567890", 10, S("1234567890abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345678901234567890", 1, S("1abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345678901234567890", 10, S("1234567890abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345678901234567890", 19, S("1234567890123456789abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 0, "12345678901234567890", 20, S("12345678901234567890abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345", 1, S("a1bcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345", 2, S("a12bcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345", 4, S("a1234bcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345", 5, S("a12345bcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "1234567890", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "1234567890", 1, S("a1bcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "1234567890", 5, S("a12345bcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "1234567890", 9, S("a123456789bcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "1234567890", 10, S("a1234567890bcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345678901234567890", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345678901234567890", 1, S("a1bcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345678901234567890", 10, S("a1234567890bcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345678901234567890", 19, S("a1234567890123456789bcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 1, "12345678901234567890", 20, S("a12345678901234567890bcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345", 1, S("abcdefghij1klmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345", 2, S("abcdefghij12klmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345", 4, S("abcdefghij1234klmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345", 5, S("abcdefghij12345klmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "1234567890", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "1234567890", 1, S("abcdefghij1klmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "1234567890", 5, S("abcdefghij12345klmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "1234567890", 9, S("abcdefghij123456789klmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "1234567890", 10, S("abcdefghij1234567890klmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345678901234567890", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345678901234567890", 1, S("abcdefghij1klmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345678901234567890", 10, S("abcdefghij1234567890klmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345678901234567890", 19, S("abcdefghij1234567890123456789klmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 10, "12345678901234567890", 20, S("abcdefghij12345678901234567890klmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345", 1, S("abcdefghijklmnopqrs1t"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345", 2, S("abcdefghijklmnopqrs12t"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345", 4, S("abcdefghijklmnopqrs1234t"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345", 5, S("abcdefghijklmnopqrs12345t"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "1234567890", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "1234567890", 1, S("abcdefghijklmnopqrs1t"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "1234567890", 5, S("abcdefghijklmnopqrs12345t"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "1234567890", 9, S("abcdefghijklmnopqrs123456789t"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "1234567890", 10, S("abcdefghijklmnopqrs1234567890t"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345678901234567890", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345678901234567890", 1, S("abcdefghijklmnopqrs1t"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345678901234567890", 10, S("abcdefghijklmnopqrs1234567890t"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345678901234567890", 19, S("abcdefghijklmnopqrs1234567890123456789t"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 19, "12345678901234567890", 20, S("abcdefghijklmnopqrs12345678901234567890t"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345", 1, S("abcdefghijklmnopqrst1"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345", 2, S("abcdefghijklmnopqrst12"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345", 4, S("abcdefghijklmnopqrst1234"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345", 5, S("abcdefghijklmnopqrst12345"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "1234567890", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "1234567890", 1, S("abcdefghijklmnopqrst1"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "1234567890", 5, S("abcdefghijklmnopqrst12345"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "1234567890", 9, S("abcdefghijklmnopqrst123456789"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "1234567890", 10, S("abcdefghijklmnopqrst1234567890"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345678901234567890", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345678901234567890", 1, S("abcdefghijklmnopqrst1"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345678901234567890", 10, S("abcdefghijklmnopqrst1234567890"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345678901234567890", 19, S("abcdefghijklmnopqrst1234567890123456789"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 20, "12345678901234567890", 20, S("abcdefghijklmnopqrst12345678901234567890"))); + BOOST_TEST(testI(S("abcde"), 6, "", 0, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "12345", 0, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "12345", 1, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "12345", 2, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "12345", 4, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "12345", 5, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "1234567890", 0, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "1234567890", 1, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "1234567890", 5, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "1234567890", 9, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "1234567890", 10, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "12345678901234567890", 0, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "12345678901234567890", 1, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "12345678901234567890", 10, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "12345678901234567890", 19, S("can't happen"))); + BOOST_TEST(testI(S("abcde"), 6, "12345678901234567890", 20, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "", 0, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "12345", 0, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "12345", 1, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "12345", 2, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "12345", 4, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "12345", 5, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "1234567890", 0, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "1234567890", 1, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "1234567890", 5, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "1234567890", 9, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "1234567890", 10, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "12345678901234567890", 0, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "12345678901234567890", 1, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "12345678901234567890", 10, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "12345678901234567890", 19, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghij"), 11, "12345678901234567890", 20, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "", 0, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345", 0, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345", 1, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345", 2, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345", 4, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345", 5, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "1234567890", 0, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "1234567890", 1, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "1234567890", 5, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "1234567890", 9, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "1234567890", 10, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345678901234567890", 0, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345678901234567890", 1, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345678901234567890", 10, S("can't happen"))); + BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345678901234567890", 19, S("can't happen"))); BOOST_TEST(testI(S("abcdefghijklmnopqrst"), 21, "12345678901234567890", 20, S("can't happen"))); } @@ -1581,30 +1582,30 @@ void testErase() { // erase(size_type index = 0, size_type count = npos) - BOOST_TEST(fixed_string<3>{"abc"}.erase() == ""); - BOOST_TEST(fixed_string<3>{"abc"}.erase(1) == "a"); - BOOST_TEST(fixed_string<3>{"abc"}.erase(2) == "ab"); - BOOST_TEST(fixed_string<3>{"abc"}.erase(1, 1) == "ac"); - BOOST_TEST(fixed_string<3>{"abc"}.erase(0, 2) == "c"); - BOOST_TEST(fixed_string<3>{"abc"}.erase(3, 0) == "abc"); - BOOST_TEST(fixed_string<3>{"abc"}.erase(3, 4) == "abc"); - BOOST_TEST_THROWS(fixed_string<3>{"abc"}.erase(4, 0), std::out_of_range); + BOOST_TEST(static_string<3>{"abc"}.erase() == ""); + BOOST_TEST(static_string<3>{"abc"}.erase(1) == "a"); + BOOST_TEST(static_string<3>{"abc"}.erase(2) == "ab"); + BOOST_TEST(static_string<3>{"abc"}.erase(1, 1) == "ac"); + BOOST_TEST(static_string<3>{"abc"}.erase(0, 2) == "c"); + BOOST_TEST(static_string<3>{"abc"}.erase(3, 0) == "abc"); + BOOST_TEST(static_string<3>{"abc"}.erase(3, 4) == "abc"); + BOOST_TEST_THROWS(static_string<3>{"abc"}.erase(4, 0), std::out_of_range); // erase(const_iterator pos) { - fixed_string<3> s{"abc"}; + static_string<3> s{"abc"}; BOOST_TEST(s.erase(s.begin() + 1) == s.begin() + 1); BOOST_TEST(s == "ac"); } { - fixed_string<3> s{"abc"}; + static_string<3> s{"abc"}; BOOST_TEST(s.erase(s.begin() + 3) == s.end()); BOOST_TEST(s == "abc"); } // erase(const_iterator first, const_iterator last) { - fixed_string<4> s{"abcd"}; + static_string<4> s{"abcd"}; BOOST_TEST(s.erase(s.begin() + 1, s.begin() + 3) == s.begin() + 1); BOOST_TEST(s == "ad"); } @@ -1612,7 +1613,7 @@ testErase() //--- { - fixed_string<9> s1("123456789"); + static_string<9> s1("123456789"); BOOST_TEST(s1.erase(1, 1) == "13456789"); BOOST_TEST(s1 == "13456789"); BOOST_TEST(*s1.end() == 0); @@ -1624,169 +1625,169 @@ testErase() std::out_of_range); } { - fixed_string<9> s1("123456789"); + static_string<9> s1("123456789"); BOOST_TEST(*s1.erase(s1.begin() + 5) == '7'); BOOST_TEST(s1 == "12345789"); BOOST_TEST(*s1.end() == 0); } { - fixed_string<9> s1("123456789"); + static_string<9> s1("123456789"); BOOST_TEST(*s1.erase( s1.begin() + 5, s1.begin() + 7) == '8'); BOOST_TEST(s1 == "1234589"); BOOST_TEST(*s1.end() == 0); } - using S = fixed_string<400>; + using S = static_string<400>; - BOOST_TEST(testE(S(""), 0, 0, S(""))); - BOOST_TEST(testE(S(""), 0, 1, S(""))); - BOOST_TEST(testE(S(""), 1, 0, S("can't happen"))); - BOOST_TEST(testE(S("abcde"), 0, 0, S("abcde"))); - BOOST_TEST(testE(S("abcde"), 0, 1, S("bcde"))); - BOOST_TEST(testE(S("abcde"), 0, 2, S("cde"))); - BOOST_TEST(testE(S("abcde"), 0, 4, S("e"))); - BOOST_TEST(testE(S("abcde"), 0, 5, S(""))); - BOOST_TEST(testE(S("abcde"), 0, 6, S(""))); - BOOST_TEST(testE(S("abcde"), 1, 0, S("abcde"))); - BOOST_TEST(testE(S("abcde"), 1, 1, S("acde"))); - BOOST_TEST(testE(S("abcde"), 1, 2, S("ade"))); - BOOST_TEST(testE(S("abcde"), 1, 3, S("ae"))); - BOOST_TEST(testE(S("abcde"), 1, 4, S("a"))); - BOOST_TEST(testE(S("abcde"), 1, 5, S("a"))); - BOOST_TEST(testE(S("abcde"), 2, 0, S("abcde"))); - BOOST_TEST(testE(S("abcde"), 2, 1, S("abde"))); - BOOST_TEST(testE(S("abcde"), 2, 2, S("abe"))); - BOOST_TEST(testE(S("abcde"), 2, 3, S("ab"))); - BOOST_TEST(testE(S("abcde"), 2, 4, S("ab"))); - BOOST_TEST(testE(S("abcde"), 4, 0, S("abcde"))); - BOOST_TEST(testE(S("abcde"), 4, 1, S("abcd"))); - BOOST_TEST(testE(S("abcde"), 4, 2, S("abcd"))); - BOOST_TEST(testE(S("abcde"), 5, 0, S("abcde"))); - BOOST_TEST(testE(S("abcde"), 5, 1, S("abcde"))); - BOOST_TEST(testE(S("abcde"), 6, 0, S("can't happen"))); - BOOST_TEST(testE(S("abcdefghij"), 0, 0, S("abcdefghij"))); - BOOST_TEST(testE(S("abcdefghij"), 0, 1, S("bcdefghij"))); - BOOST_TEST(testE(S("abcdefghij"), 0, 5, S("fghij"))); - BOOST_TEST(testE(S("abcdefghij"), 0, 9, S("j"))); - BOOST_TEST(testE(S("abcdefghij"), 0, 10, S(""))); - BOOST_TEST(testE(S("abcdefghij"), 0, 11, S(""))); - BOOST_TEST(testE(S("abcdefghij"), 1, 0, S("abcdefghij"))); - BOOST_TEST(testE(S("abcdefghij"), 1, 1, S("acdefghij"))); - BOOST_TEST(testE(S("abcdefghij"), 1, 4, S("afghij"))); - BOOST_TEST(testE(S("abcdefghij"), 1, 8, S("aj"))); - BOOST_TEST(testE(S("abcdefghij"), 1, 9, S("a"))); - BOOST_TEST(testE(S("abcdefghij"), 1, 10, S("a"))); - BOOST_TEST(testE(S("abcdefghij"), 5, 0, S("abcdefghij"))); - BOOST_TEST(testE(S("abcdefghij"), 5, 1, S("abcdeghij"))); - BOOST_TEST(testE(S("abcdefghij"), 5, 2, S("abcdehij"))); - BOOST_TEST(testE(S("abcdefghij"), 5, 4, S("abcdej"))); - BOOST_TEST(testE(S("abcdefghij"), 5, 5, S("abcde"))); - BOOST_TEST(testE(S("abcdefghij"), 5, 6, S("abcde"))); - BOOST_TEST(testE(S("abcdefghij"), 9, 0, S("abcdefghij"))); - BOOST_TEST(testE(S("abcdefghij"), 9, 1, S("abcdefghi"))); - BOOST_TEST(testE(S("abcdefghij"), 9, 2, S("abcdefghi"))); - BOOST_TEST(testE(S("abcdefghij"), 10, 0, S("abcdefghij"))); - BOOST_TEST(testE(S("abcdefghij"), 10, 1, S("abcdefghij"))); - BOOST_TEST(testE(S("abcdefghij"), 11, 0, S("can't happen"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 0, 1, S("bcdefghijklmnopqrst"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 0, 10, S("klmnopqrst"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 0, 19, S("t"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 0, 20, S(""))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 0, 21, S(""))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 1, 1, S("acdefghijklmnopqrst"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 1, 9, S("aklmnopqrst"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 1, 18, S("at"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 1, 19, S("a"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 1, 20, S("a"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijlmnopqrst"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijpqrst"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijt"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrs"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrs"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 21, 0, S("can't happen"))); - - BOOST_TEST(testE(S(""), 0, 0, S(""))); - BOOST_TEST(testE(S(""), 0, 1, S(""))); - BOOST_TEST(testE(S(""), 1, 0, S("can't happen"))); - BOOST_TEST(testE(S("abcde"), 0, 0, S("abcde"))); - BOOST_TEST(testE(S("abcde"), 0, 1, S("bcde"))); - BOOST_TEST(testE(S("abcde"), 0, 2, S("cde"))); - BOOST_TEST(testE(S("abcde"), 0, 4, S("e"))); - BOOST_TEST(testE(S("abcde"), 0, 5, S(""))); - BOOST_TEST(testE(S("abcde"), 0, 6, S(""))); - BOOST_TEST(testE(S("abcde"), 1, 0, S("abcde"))); - BOOST_TEST(testE(S("abcde"), 1, 1, S("acde"))); - BOOST_TEST(testE(S("abcde"), 1, 2, S("ade"))); - BOOST_TEST(testE(S("abcde"), 1, 3, S("ae"))); - BOOST_TEST(testE(S("abcde"), 1, 4, S("a"))); - BOOST_TEST(testE(S("abcde"), 1, 5, S("a"))); - BOOST_TEST(testE(S("abcde"), 2, 0, S("abcde"))); - BOOST_TEST(testE(S("abcde"), 2, 1, S("abde"))); - BOOST_TEST(testE(S("abcde"), 2, 2, S("abe"))); - BOOST_TEST(testE(S("abcde"), 2, 3, S("ab"))); - BOOST_TEST(testE(S("abcde"), 2, 4, S("ab"))); - BOOST_TEST(testE(S("abcde"), 4, 0, S("abcde"))); - BOOST_TEST(testE(S("abcde"), 4, 1, S("abcd"))); - BOOST_TEST(testE(S("abcde"), 4, 2, S("abcd"))); - BOOST_TEST(testE(S("abcde"), 5, 0, S("abcde"))); - BOOST_TEST(testE(S("abcde"), 5, 1, S("abcde"))); - BOOST_TEST(testE(S("abcde"), 6, 0, S("can't happen"))); - BOOST_TEST(testE(S("abcdefghij"), 0, 0, S("abcdefghij"))); - BOOST_TEST(testE(S("abcdefghij"), 0, 1, S("bcdefghij"))); - BOOST_TEST(testE(S("abcdefghij"), 0, 5, S("fghij"))); - BOOST_TEST(testE(S("abcdefghij"), 0, 9, S("j"))); - BOOST_TEST(testE(S("abcdefghij"), 0, 10, S(""))); - BOOST_TEST(testE(S("abcdefghij"), 0, 11, S(""))); - BOOST_TEST(testE(S("abcdefghij"), 1, 0, S("abcdefghij"))); - BOOST_TEST(testE(S("abcdefghij"), 1, 1, S("acdefghij"))); - BOOST_TEST(testE(S("abcdefghij"), 1, 4, S("afghij"))); - BOOST_TEST(testE(S("abcdefghij"), 1, 8, S("aj"))); - BOOST_TEST(testE(S("abcdefghij"), 1, 9, S("a"))); - BOOST_TEST(testE(S("abcdefghij"), 1, 10, S("a"))); - BOOST_TEST(testE(S("abcdefghij"), 5, 0, S("abcdefghij"))); - BOOST_TEST(testE(S("abcdefghij"), 5, 1, S("abcdeghij"))); - BOOST_TEST(testE(S("abcdefghij"), 5, 2, S("abcdehij"))); - BOOST_TEST(testE(S("abcdefghij"), 5, 4, S("abcdej"))); - BOOST_TEST(testE(S("abcdefghij"), 5, 5, S("abcde"))); - BOOST_TEST(testE(S("abcdefghij"), 5, 6, S("abcde"))); - BOOST_TEST(testE(S("abcdefghij"), 9, 0, S("abcdefghij"))); - BOOST_TEST(testE(S("abcdefghij"), 9, 1, S("abcdefghi"))); - BOOST_TEST(testE(S("abcdefghij"), 9, 2, S("abcdefghi"))); - BOOST_TEST(testE(S("abcdefghij"), 10, 0, S("abcdefghij"))); - BOOST_TEST(testE(S("abcdefghij"), 10, 1, S("abcdefghij"))); - BOOST_TEST(testE(S("abcdefghij"), 11, 0, S("can't happen"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 0, 1, S("bcdefghijklmnopqrst"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 0, 10, S("klmnopqrst"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 0, 19, S("t"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 0, 20, S(""))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 0, 21, S(""))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 1, 1, S("acdefghijklmnopqrst"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 1, 9, S("aklmnopqrst"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 1, 18, S("at"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 1, 19, S("a"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 1, 20, S("a"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijlmnopqrst"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijpqrst"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijt"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrs"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrs"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testE(S(""), 0, 0, S(""))); + BOOST_TEST(testE(S(""), 0, 1, S(""))); + BOOST_TEST(testE(S(""), 1, 0, S("can't happen"))); + BOOST_TEST(testE(S("abcde"), 0, 0, S("abcde"))); + BOOST_TEST(testE(S("abcde"), 0, 1, S("bcde"))); + BOOST_TEST(testE(S("abcde"), 0, 2, S("cde"))); + BOOST_TEST(testE(S("abcde"), 0, 4, S("e"))); + BOOST_TEST(testE(S("abcde"), 0, 5, S(""))); + BOOST_TEST(testE(S("abcde"), 0, 6, S(""))); + BOOST_TEST(testE(S("abcde"), 1, 0, S("abcde"))); + BOOST_TEST(testE(S("abcde"), 1, 1, S("acde"))); + BOOST_TEST(testE(S("abcde"), 1, 2, S("ade"))); + BOOST_TEST(testE(S("abcde"), 1, 3, S("ae"))); + BOOST_TEST(testE(S("abcde"), 1, 4, S("a"))); + BOOST_TEST(testE(S("abcde"), 1, 5, S("a"))); + BOOST_TEST(testE(S("abcde"), 2, 0, S("abcde"))); + BOOST_TEST(testE(S("abcde"), 2, 1, S("abde"))); + BOOST_TEST(testE(S("abcde"), 2, 2, S("abe"))); + BOOST_TEST(testE(S("abcde"), 2, 3, S("ab"))); + BOOST_TEST(testE(S("abcde"), 2, 4, S("ab"))); + BOOST_TEST(testE(S("abcde"), 4, 0, S("abcde"))); + BOOST_TEST(testE(S("abcde"), 4, 1, S("abcd"))); + BOOST_TEST(testE(S("abcde"), 4, 2, S("abcd"))); + BOOST_TEST(testE(S("abcde"), 5, 0, S("abcde"))); + BOOST_TEST(testE(S("abcde"), 5, 1, S("abcde"))); + BOOST_TEST(testE(S("abcde"), 6, 0, S("can't happen"))); + BOOST_TEST(testE(S("abcdefghij"), 0, 0, S("abcdefghij"))); + BOOST_TEST(testE(S("abcdefghij"), 0, 1, S("bcdefghij"))); + BOOST_TEST(testE(S("abcdefghij"), 0, 5, S("fghij"))); + BOOST_TEST(testE(S("abcdefghij"), 0, 9, S("j"))); + BOOST_TEST(testE(S("abcdefghij"), 0, 10, S(""))); + BOOST_TEST(testE(S("abcdefghij"), 0, 11, S(""))); + BOOST_TEST(testE(S("abcdefghij"), 1, 0, S("abcdefghij"))); + BOOST_TEST(testE(S("abcdefghij"), 1, 1, S("acdefghij"))); + BOOST_TEST(testE(S("abcdefghij"), 1, 4, S("afghij"))); + BOOST_TEST(testE(S("abcdefghij"), 1, 8, S("aj"))); + BOOST_TEST(testE(S("abcdefghij"), 1, 9, S("a"))); + BOOST_TEST(testE(S("abcdefghij"), 1, 10, S("a"))); + BOOST_TEST(testE(S("abcdefghij"), 5, 0, S("abcdefghij"))); + BOOST_TEST(testE(S("abcdefghij"), 5, 1, S("abcdeghij"))); + BOOST_TEST(testE(S("abcdefghij"), 5, 2, S("abcdehij"))); + BOOST_TEST(testE(S("abcdefghij"), 5, 4, S("abcdej"))); + BOOST_TEST(testE(S("abcdefghij"), 5, 5, S("abcde"))); + BOOST_TEST(testE(S("abcdefghij"), 5, 6, S("abcde"))); + BOOST_TEST(testE(S("abcdefghij"), 9, 0, S("abcdefghij"))); + BOOST_TEST(testE(S("abcdefghij"), 9, 1, S("abcdefghi"))); + BOOST_TEST(testE(S("abcdefghij"), 9, 2, S("abcdefghi"))); + BOOST_TEST(testE(S("abcdefghij"), 10, 0, S("abcdefghij"))); + BOOST_TEST(testE(S("abcdefghij"), 10, 1, S("abcdefghij"))); + BOOST_TEST(testE(S("abcdefghij"), 11, 0, S("can't happen"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 0, 1, S("bcdefghijklmnopqrst"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 0, 10, S("klmnopqrst"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 0, 19, S("t"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 0, 20, S(""))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 0, 21, S(""))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 1, 1, S("acdefghijklmnopqrst"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 1, 9, S("aklmnopqrst"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 1, 18, S("at"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 1, 19, S("a"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 1, 20, S("a"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijlmnopqrst"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijpqrst"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijt"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrs"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrs"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 21, 0, S("can't happen"))); + + BOOST_TEST(testE(S(""), 0, 0, S(""))); + BOOST_TEST(testE(S(""), 0, 1, S(""))); + BOOST_TEST(testE(S(""), 1, 0, S("can't happen"))); + BOOST_TEST(testE(S("abcde"), 0, 0, S("abcde"))); + BOOST_TEST(testE(S("abcde"), 0, 1, S("bcde"))); + BOOST_TEST(testE(S("abcde"), 0, 2, S("cde"))); + BOOST_TEST(testE(S("abcde"), 0, 4, S("e"))); + BOOST_TEST(testE(S("abcde"), 0, 5, S(""))); + BOOST_TEST(testE(S("abcde"), 0, 6, S(""))); + BOOST_TEST(testE(S("abcde"), 1, 0, S("abcde"))); + BOOST_TEST(testE(S("abcde"), 1, 1, S("acde"))); + BOOST_TEST(testE(S("abcde"), 1, 2, S("ade"))); + BOOST_TEST(testE(S("abcde"), 1, 3, S("ae"))); + BOOST_TEST(testE(S("abcde"), 1, 4, S("a"))); + BOOST_TEST(testE(S("abcde"), 1, 5, S("a"))); + BOOST_TEST(testE(S("abcde"), 2, 0, S("abcde"))); + BOOST_TEST(testE(S("abcde"), 2, 1, S("abde"))); + BOOST_TEST(testE(S("abcde"), 2, 2, S("abe"))); + BOOST_TEST(testE(S("abcde"), 2, 3, S("ab"))); + BOOST_TEST(testE(S("abcde"), 2, 4, S("ab"))); + BOOST_TEST(testE(S("abcde"), 4, 0, S("abcde"))); + BOOST_TEST(testE(S("abcde"), 4, 1, S("abcd"))); + BOOST_TEST(testE(S("abcde"), 4, 2, S("abcd"))); + BOOST_TEST(testE(S("abcde"), 5, 0, S("abcde"))); + BOOST_TEST(testE(S("abcde"), 5, 1, S("abcde"))); + BOOST_TEST(testE(S("abcde"), 6, 0, S("can't happen"))); + BOOST_TEST(testE(S("abcdefghij"), 0, 0, S("abcdefghij"))); + BOOST_TEST(testE(S("abcdefghij"), 0, 1, S("bcdefghij"))); + BOOST_TEST(testE(S("abcdefghij"), 0, 5, S("fghij"))); + BOOST_TEST(testE(S("abcdefghij"), 0, 9, S("j"))); + BOOST_TEST(testE(S("abcdefghij"), 0, 10, S(""))); + BOOST_TEST(testE(S("abcdefghij"), 0, 11, S(""))); + BOOST_TEST(testE(S("abcdefghij"), 1, 0, S("abcdefghij"))); + BOOST_TEST(testE(S("abcdefghij"), 1, 1, S("acdefghij"))); + BOOST_TEST(testE(S("abcdefghij"), 1, 4, S("afghij"))); + BOOST_TEST(testE(S("abcdefghij"), 1, 8, S("aj"))); + BOOST_TEST(testE(S("abcdefghij"), 1, 9, S("a"))); + BOOST_TEST(testE(S("abcdefghij"), 1, 10, S("a"))); + BOOST_TEST(testE(S("abcdefghij"), 5, 0, S("abcdefghij"))); + BOOST_TEST(testE(S("abcdefghij"), 5, 1, S("abcdeghij"))); + BOOST_TEST(testE(S("abcdefghij"), 5, 2, S("abcdehij"))); + BOOST_TEST(testE(S("abcdefghij"), 5, 4, S("abcdej"))); + BOOST_TEST(testE(S("abcdefghij"), 5, 5, S("abcde"))); + BOOST_TEST(testE(S("abcdefghij"), 5, 6, S("abcde"))); + BOOST_TEST(testE(S("abcdefghij"), 9, 0, S("abcdefghij"))); + BOOST_TEST(testE(S("abcdefghij"), 9, 1, S("abcdefghi"))); + BOOST_TEST(testE(S("abcdefghij"), 9, 2, S("abcdefghi"))); + BOOST_TEST(testE(S("abcdefghij"), 10, 0, S("abcdefghij"))); + BOOST_TEST(testE(S("abcdefghij"), 10, 1, S("abcdefghij"))); + BOOST_TEST(testE(S("abcdefghij"), 11, 0, S("can't happen"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 0, 1, S("bcdefghijklmnopqrst"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 0, 10, S("klmnopqrst"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 0, 19, S("t"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 0, 20, S(""))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 0, 21, S(""))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 1, 1, S("acdefghijklmnopqrst"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 1, 9, S("aklmnopqrst"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 1, 18, S("at"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 1, 19, S("a"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 1, 20, S("a"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijlmnopqrst"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijpqrst"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijt"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrs"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrs"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"))); BOOST_TEST(testE(S("abcdefghijklmnopqrst"), 21, 0, S("can't happen"))); } @@ -1797,7 +1798,7 @@ testPushBack() { // push_back(CharT ch); { - fixed_string<2> s; + static_string<2> s; s.push_back('a'); BOOST_TEST(s == "a"); s.push_back('b'); @@ -1808,13 +1809,13 @@ testPushBack() //--- { - fixed_string<3> s1("12"); + static_string<3> s1("12"); s1.push_back('3'); BOOST_TEST(s1 == "123"); BOOST_TEST_THROWS( s1.push_back('4'), std::length_error); - fixed_string<0> s2; + static_string<0> s2; BOOST_TEST_THROWS( s2.push_back('_'), std::length_error); @@ -1828,7 +1829,7 @@ testPopBack() { // pop_back() { - fixed_string<3> s{"abc"}; + static_string<3> s{"abc"}; BOOST_TEST(*s.end() == 0); s.pop_back(); BOOST_TEST(s == "ab"); @@ -1844,7 +1845,7 @@ testPopBack() //--- { - fixed_string<3> s1("123"); + static_string<3> s1("123"); s1.pop_back(); BOOST_TEST(s1 == "12"); BOOST_TEST(*s1.end() == 0); @@ -1862,48 +1863,48 @@ static void testAppend() { - using S = fixed_string<400>; + using S = static_string<400>; using sv = string_view; // append(size_type count, CharT ch) - BOOST_TEST(fixed_string<1>{}.append(1, 'a') == "a"); - BOOST_TEST(fixed_string<2>{}.append(2, 'a') == "aa"); - BOOST_TEST(fixed_string<2>{"a"}.append(1, 'b') == "ab"); - BOOST_TEST_THROWS(fixed_string<2>{"ab"}.append(1, 'c'), std::length_error); + BOOST_TEST(static_string<1>{}.append(1, 'a') == "a"); + BOOST_TEST(static_string<2>{}.append(2, 'a') == "aa"); + BOOST_TEST(static_string<2>{"a"}.append(1, 'b') == "ab"); + BOOST_TEST_THROWS(static_string<2>{"ab"}.append(1, 'c'), std::length_error); // append(string_view_type sv) - BOOST_TEST(fixed_string<3>{"a"}.append(sv{"bc"}) == "abc"); - BOOST_TEST(fixed_string<3>{"ab"}.append(sv{"c"}) == "abc"); - BOOST_TEST_THROWS(fixed_string<3>{"abc"}.append(sv{"*"}), std::length_error); + BOOST_TEST(static_string<3>{"a"}.append(sv{"bc"}) == "abc"); + BOOST_TEST(static_string<3>{"ab"}.append(sv{"c"}) == "abc"); + BOOST_TEST_THROWS(static_string<3>{"abc"}.append(sv{"*"}), std::length_error); // append(string_view_type sv, size_type pos, size_type count = npos) - BOOST_TEST(fixed_string<3>{"a"}.append(sv{"abc"}, 1) == "abc"); - BOOST_TEST(fixed_string<3>{"a"}.append(sv{"abc"}, 1, 2) == "abc"); - BOOST_TEST_THROWS(fixed_string<3>{"abc"}.append(sv{"a"}, 2, 1), std::out_of_range); - BOOST_TEST_THROWS(fixed_string<3>{"abc"}.append(sv{"abcd"}, 1, 2), std::length_error); + BOOST_TEST(static_string<3>{"a"}.append(sv{"abc"}, 1) == "abc"); + BOOST_TEST(static_string<3>{"a"}.append(sv{"abc"}, 1, 2) == "abc"); + BOOST_TEST_THROWS(static_string<3>{"abc"}.append(sv{"a"}, 2, 1), std::out_of_range); + BOOST_TEST_THROWS(static_string<3>{"abc"}.append(sv{"abcd"}, 1, 2), std::length_error); // append(CharT const* s, size_type count) - BOOST_TEST(fixed_string<3>{"a"}.append("bc", 0) == "a"); - BOOST_TEST(fixed_string<3>{"a"}.append("bc", 2) == "abc"); - BOOST_TEST_THROWS(fixed_string<3>{"abc"}.append("bc", 2), std::length_error); + BOOST_TEST(static_string<3>{"a"}.append("bc", 0) == "a"); + BOOST_TEST(static_string<3>{"a"}.append("bc", 2) == "abc"); + BOOST_TEST_THROWS(static_string<3>{"abc"}.append("bc", 2), std::length_error); // append(CharT const* s) - BOOST_TEST(fixed_string<3>{"a"}.append("bc") == "abc"); - BOOST_TEST_THROWS(fixed_string<3>{"abc"}.append("bc"), std::length_error); + BOOST_TEST(static_string<3>{"a"}.append("bc") == "abc"); + BOOST_TEST_THROWS(static_string<3>{"abc"}.append("bc"), std::length_error); // append(InputIt first, InputIt last) { - fixed_string<4> const cs{"abcd"}; - fixed_string<4> s{"ad"}; - BOOST_TEST(fixed_string<4>{"ab"}.append( + static_string<4> const cs{"abcd"}; + static_string<4> s{"ad"}; + BOOST_TEST(static_string<4>{"ab"}.append( cs.begin() + 2, cs.begin() + 4) == "abcd"); - BOOST_TEST_THROWS(fixed_string<2>{"ab"}.append( + BOOST_TEST_THROWS(static_string<2>{"ab"}.append( cs.begin() + 2, cs.begin() + 4), std::length_error); } // append(std::initializer_list ilist) - BOOST_TEST(fixed_string<4>{"ab"}.append({'c', 'd'}) == "abcd"); - BOOST_TEST_THROWS(fixed_string<3>{"ab"}.append({'c', 'd'}), std::length_error); + BOOST_TEST(static_string<4>{"ab"}.append({'c', 'd'}) == "abcd"); + BOOST_TEST_THROWS(static_string<3>{"ab"}.append({'c', 'd'}), std::length_error); // append(T const& t) { @@ -1914,8 +1915,8 @@ testAppend() return "c"; } }; - BOOST_TEST(fixed_string<3>{"ab"}.append(T{}) == "abc"); - BOOST_TEST_THROWS(fixed_string<3>{"abc"}.append(T{}), std::length_error); + BOOST_TEST(static_string<3>{"ab"}.append(T{}) == "abc"); + BOOST_TEST_THROWS(static_string<3>{"abc"}.append(T{}), std::length_error); } // append(T const& t, size_type pos, size_type count = npos) @@ -1927,144 +1928,144 @@ testAppend() return "abcd"; } }; - BOOST_TEST(fixed_string<4>{"ab"}.append(T{}, 2) == "abcd"); - BOOST_TEST(fixed_string<3>{"a"}.append(T{}, 1, 2) == "abc"); - BOOST_TEST_THROWS(fixed_string<4>{"abc"}.append(T{}, 5), std::out_of_range); - BOOST_TEST_THROWS(fixed_string<3>{"abc"}.append(T{}, 3, 1), std::length_error); + BOOST_TEST(static_string<4>{"ab"}.append(T{}, 2) == "abcd"); + BOOST_TEST(static_string<3>{"a"}.append(T{}, 1, 2) == "abc"); + BOOST_TEST_THROWS(static_string<4>{"abc"}.append(T{}, 5), std::out_of_range); + BOOST_TEST_THROWS(static_string<3>{"abc"}.append(T{}, 3, 1), std::length_error); } //--- { - fixed_string<3> s1("1"); + static_string<3> s1("1"); s1.append(2, '_'); BOOST_TEST(s1 == "1__"); BOOST_TEST(*s1.end() == 0); - fixed_string<2> s2("1"); + static_string<2> s2("1"); BOOST_TEST_THROWS( (s2.append(2, '_')), std::length_error); } { - fixed_string<2> s1("__"); - fixed_string<3> s2("1"); + static_string<2> s1("__"); + static_string<3> s2("1"); s2.append(s1); BOOST_TEST(s2 == "1__"); BOOST_TEST(*s2.end() == 0); - fixed_string<2> s3("1"); + static_string<2> s3("1"); BOOST_TEST_THROWS( s3.append(s1), std::length_error); } { - fixed_string<3> s1("XYZ"); - fixed_string<4> s2("12"); + static_string<3> s1("XYZ"); + static_string<4> s2("12"); s2.append(s1, 1); BOOST_TEST(s2 == "12YZ"); BOOST_TEST(*s2.end() == 0); - fixed_string<3> s3("12"); + static_string<3> s3("12"); s3.append(s1, 1, 1); BOOST_TEST(s3 == "12Y"); BOOST_TEST(*s3.end() == 0); - fixed_string<3> s4("12"); + static_string<3> s4("12"); BOOST_TEST_THROWS( (s4.append(s1, 4)), std::out_of_range); - fixed_string<3> s5("12"); + static_string<3> s5("12"); BOOST_TEST_THROWS( (s5.append(s1, 1)), std::length_error); } { - fixed_string<4> s1("12"); + static_string<4> s1("12"); s1.append("XYZ", 2); BOOST_TEST(s1 == "12XY"); BOOST_TEST(*s1.end() == 0); - fixed_string<3> s3("12"); + static_string<3> s3("12"); BOOST_TEST_THROWS( (s3.append("XYZ", 2)), std::length_error); } { - fixed_string<5> s1("12"); + static_string<5> s1("12"); s1.append("XYZ"); BOOST_TEST(s1 == "12XYZ"); BOOST_TEST(*s1.end() == 0); - fixed_string<4> s2("12"); + static_string<4> s2("12"); BOOST_TEST_THROWS( s2.append("XYZ"), std::length_error); } { - fixed_string<3> s1("XYZ"); - fixed_string<5> s2("12"); + static_string<3> s1("XYZ"); + static_string<5> s2("12"); s2.append(s1.begin(), s1.end()); BOOST_TEST(s2 == "12XYZ"); BOOST_TEST(*s2.end() == 0); - fixed_string<4> s3("12"); + static_string<4> s3("12"); BOOST_TEST_THROWS( s3.append(s1.begin(), s1.end()), std::length_error); } { - fixed_string<5> s1("123"); + static_string<5> s1("123"); s1.append({'X', 'Y'}); BOOST_TEST(s1 == "123XY"); BOOST_TEST(*s1.end() == 0); - fixed_string<4> s2("123"); + static_string<4> s2("123"); BOOST_TEST_THROWS( s2.append({'X', 'Y'}), std::length_error); } { string_view s1("XYZ"); - fixed_string<5> s2("12"); + static_string<5> s2("12"); s2.append(s1); BOOST_TEST(s2 == "12XYZ"); BOOST_TEST(*s2.end() == 0); - fixed_string<4> s3("12"); + static_string<4> s3("12"); BOOST_TEST_THROWS( s3.append(s1), std::length_error); } { - fixed_string<6> s1("123"); + static_string<6> s1("123"); s1.append(std::string("UVX"), 1); BOOST_TEST(s1 == "123VX"); BOOST_TEST(*s1.end() == 0); s1.append(std::string("PQR"), 1, 1); BOOST_TEST(s1 == "123VXQ"); BOOST_TEST(*s1.end() == 0); - fixed_string<3> s2("123"); + static_string<3> s2("123"); BOOST_TEST_THROWS( (s2.append(std::string("PQR"), 1, 1)), std::length_error); } - BOOST_TEST(testA(S(), "", 0, S())); - BOOST_TEST(testA(S(), "12345", 3, S("123"))); - BOOST_TEST(testA(S(), "12345", 4, S("1234"))); - BOOST_TEST(testA(S(), "12345678901234567890", 0, S())); - BOOST_TEST(testA(S(), "12345678901234567890", 1, S("1"))); - BOOST_TEST(testA(S(), "12345678901234567890", 3, S("123"))); - BOOST_TEST(testA(S(), "12345678901234567890", 20, S("12345678901234567890"))); - - BOOST_TEST(testA(S("12345"), "", 0, S("12345"))); - BOOST_TEST(testA(S("12345"), "12345", 5, S("1234512345"))); - BOOST_TEST(testA(S("12345"), "1234567890", 10, S("123451234567890"))); - - BOOST_TEST(testA(S("12345678901234567890"), "", 0, S("12345678901234567890"))); - BOOST_TEST(testA(S("12345678901234567890"), "12345", 5, S("1234567890123456789012345"))); - BOOST_TEST(testA(S("12345678901234567890"), "12345678901234567890", 20, + BOOST_TEST(testA(S(), "", 0, S())); + BOOST_TEST(testA(S(), "12345", 3, S("123"))); + BOOST_TEST(testA(S(), "12345", 4, S("1234"))); + BOOST_TEST(testA(S(), "12345678901234567890", 0, S())); + BOOST_TEST(testA(S(), "12345678901234567890", 1, S("1"))); + BOOST_TEST(testA(S(), "12345678901234567890", 3, S("123"))); + BOOST_TEST(testA(S(), "12345678901234567890", 20, S("12345678901234567890"))); + + BOOST_TEST(testA(S("12345"), "", 0, S("12345"))); + BOOST_TEST(testA(S("12345"), "12345", 5, S("1234512345"))); + BOOST_TEST(testA(S("12345"), "1234567890", 10, S("123451234567890"))); + + BOOST_TEST(testA(S("12345678901234567890"), "", 0, S("12345678901234567890"))); + BOOST_TEST(testA(S("12345678901234567890"), "12345", 5, S("1234567890123456789012345"))); + BOOST_TEST(testA(S("12345678901234567890"), "12345678901234567890", 20, S("1234567890123456789012345678901234567890"))); - S s_short = "123/"; - S s_long = "Lorem ipsum dolor sit amet, consectetur/"; - - s_short.append(s_short.data(), s_short.size()); - BOOST_TEST(s_short == "123/123/"); - s_short.append(s_short.data(), s_short.size()); - BOOST_TEST(s_short == "123/123/123/123/"); - s_short.append(s_short.data(), s_short.size()); + S s_short = "123/"; + S s_long = "Lorem ipsum dolor sit amet, consectetur/"; + + s_short.append(s_short.data(), s_short.size()); + BOOST_TEST(s_short == "123/123/"); + s_short.append(s_short.data(), s_short.size()); + BOOST_TEST(s_short == "123/123/123/123/"); + s_short.append(s_short.data(), s_short.size()); BOOST_TEST(s_short == "123/123/123/123/123/123/123/123/"); } @@ -2076,36 +2077,36 @@ testPlusEquals() using sv = string_view; // operator+=(CharT ch) - BOOST_TEST((fixed_string<3>{"ab"} += 'c') == "abc"); - BOOST_TEST_THROWS((fixed_string<3>{"abc"} += '*'), std::length_error); + BOOST_TEST((static_string<3>{"ab"} += 'c') == "abc"); + BOOST_TEST_THROWS((static_string<3>{"abc"} += '*'), std::length_error); // operator+=(CharT const* s) - BOOST_TEST((fixed_string<3>{"a"} += "bc") == "abc"); - BOOST_TEST_THROWS((fixed_string<3>{"abc"} += "*"), std::length_error); + BOOST_TEST((static_string<3>{"a"} += "bc") == "abc"); + BOOST_TEST_THROWS((static_string<3>{"abc"} += "*"), std::length_error); // operator+=(std::initializer_list init) - BOOST_TEST((fixed_string<3>{"a"} += {'b', 'c'}) == "abc"); - BOOST_TEST_THROWS((fixed_string<3>{"abc"} += {'*', '*'}), std::length_error); + BOOST_TEST((static_string<3>{"a"} += {'b', 'c'}) == "abc"); + BOOST_TEST_THROWS((static_string<3>{"abc"} += {'*', '*'}), std::length_error); // operator+=(string_view_type const& s) - BOOST_TEST((fixed_string<3>{"a"} += sv{"bc"}) == "abc"); - BOOST_TEST_THROWS((fixed_string<3>{"abc"} += sv{"*"}), std::length_error); + BOOST_TEST((static_string<3>{"a"} += sv{"bc"}) == "abc"); + BOOST_TEST_THROWS((static_string<3>{"abc"} += sv{"*"}), std::length_error); //--- { - fixed_string<2> s1("__"); - fixed_string<3> s2("1"); + static_string<2> s1("__"); + static_string<3> s2("1"); s2 += s1; BOOST_TEST(s2 == "1__"); BOOST_TEST(*s2.end() == 0); - fixed_string<2> s3("1"); + static_string<2> s3("1"); BOOST_TEST_THROWS( s3 += s1, std::length_error); } { - fixed_string<3> s1("12"); + static_string<3> s1("12"); s1 += '3'; BOOST_TEST(s1 == "123"); BOOST_TEST_THROWS( @@ -2113,7 +2114,7 @@ testPlusEquals() std::length_error); } { - fixed_string<4> s1("12"); + static_string<4> s1("12"); s1 += "34"; BOOST_TEST(s1 == "1234"); BOOST_TEST_THROWS( @@ -2121,7 +2122,7 @@ testPlusEquals() std::length_error); } { - fixed_string<4> s1("12"); + static_string<4> s1("12"); s1 += {'3', '4'}; BOOST_TEST(s1 == "1234"); BOOST_TEST_THROWS( @@ -2130,7 +2131,7 @@ testPlusEquals() } { string_view s1("34"); - fixed_string<4> s2("12"); + static_string<4> s2("12"); s2 += s1; BOOST_TEST(s2 == "1234"); BOOST_TEST_THROWS( @@ -2143,8 +2144,8 @@ testPlusEquals() void testCompare() { - using str1 = fixed_string<1>; - using str2 = fixed_string<2>; + using str1 = static_string<1>; + using str2 = static_string<2>; { str1 s1; str2 s2; @@ -2233,1190 +2234,1190 @@ testCompare() BOOST_TEST(s2 > s1); } - using S = fixed_string<400>; - BOOST_TEST(testC(S(""), 0, 0, "", 0, 0)); - BOOST_TEST(testC(S(""), 0, 0, "abcde", 0, 0)); - BOOST_TEST(testC(S(""), 0, 0, "abcde", 1, -1)); - BOOST_TEST(testC(S(""), 0, 0, "abcde", 2, -2)); - BOOST_TEST(testC(S(""), 0, 0, "abcde", 4, -4)); - BOOST_TEST(testC(S(""), 0, 0, "abcde", 5, -5)); - BOOST_TEST(testC(S(""), 0, 0, "abcdefghij", 0, 0)); - BOOST_TEST(testC(S(""), 0, 0, "abcdefghij", 1, -1)); - BOOST_TEST(testC(S(""), 0, 0, "abcdefghij", 5, -5)); - BOOST_TEST(testC(S(""), 0, 0, "abcdefghij", 9, -9)); - BOOST_TEST(testC(S(""), 0, 0, "abcdefghij", 10, -10)); - BOOST_TEST(testC(S(""), 0, 0, "abcdefghijklmnopqrst", 0, 0)); - BOOST_TEST(testC(S(""), 0, 0, "abcdefghijklmnopqrst", 1, -1)); - BOOST_TEST(testC(S(""), 0, 0, "abcdefghijklmnopqrst", 10, -10)); - BOOST_TEST(testC(S(""), 0, 0, "abcdefghijklmnopqrst", 19, -19)); - BOOST_TEST(testC(S(""), 0, 0, "abcdefghijklmnopqrst", 20, -20)); - BOOST_TEST(testC(S(""), 0, 1, "", 0, 0)); - BOOST_TEST(testC(S(""), 0, 1, "abcde", 0, 0)); - BOOST_TEST(testC(S(""), 0, 1, "abcde", 1, -1)); - BOOST_TEST(testC(S(""), 0, 1, "abcde", 2, -2)); - BOOST_TEST(testC(S(""), 0, 1, "abcde", 4, -4)); - BOOST_TEST(testC(S(""), 0, 1, "abcde", 5, -5)); - BOOST_TEST(testC(S(""), 0, 1, "abcdefghij", 0, 0)); - BOOST_TEST(testC(S(""), 0, 1, "abcdefghij", 1, -1)); - BOOST_TEST(testC(S(""), 0, 1, "abcdefghij", 5, -5)); - BOOST_TEST(testC(S(""), 0, 1, "abcdefghij", 9, -9)); - BOOST_TEST(testC(S(""), 0, 1, "abcdefghij", 10, -10)); - BOOST_TEST(testC(S(""), 0, 1, "abcdefghijklmnopqrst", 0, 0)); - BOOST_TEST(testC(S(""), 0, 1, "abcdefghijklmnopqrst", 1, -1)); - BOOST_TEST(testC(S(""), 0, 1, "abcdefghijklmnopqrst", 10, -10)); - BOOST_TEST(testC(S(""), 0, 1, "abcdefghijklmnopqrst", 19, -19)); - BOOST_TEST(testC(S(""), 0, 1, "abcdefghijklmnopqrst", 20, -20)); - BOOST_TEST(testC(S(""), 1, 0, "", 0, 0)); - BOOST_TEST(testC(S(""), 1, 0, "abcde", 0, 0)); - BOOST_TEST(testC(S(""), 1, 0, "abcde", 1, 0)); - BOOST_TEST(testC(S(""), 1, 0, "abcde", 2, 0)); - BOOST_TEST(testC(S(""), 1, 0, "abcde", 4, 0)); - BOOST_TEST(testC(S(""), 1, 0, "abcde", 5, 0)); - BOOST_TEST(testC(S(""), 1, 0, "abcdefghij", 0, 0)); - BOOST_TEST(testC(S(""), 1, 0, "abcdefghij", 1, 0)); - BOOST_TEST(testC(S(""), 1, 0, "abcdefghij", 5, 0)); - BOOST_TEST(testC(S(""), 1, 0, "abcdefghij", 9, 0)); - BOOST_TEST(testC(S(""), 1, 0, "abcdefghij", 10, 0)); - BOOST_TEST(testC(S(""), 1, 0, "abcdefghijklmnopqrst", 0, 0)); - BOOST_TEST(testC(S(""), 1, 0, "abcdefghijklmnopqrst", 1, 0)); - BOOST_TEST(testC(S(""), 1, 0, "abcdefghijklmnopqrst", 10, 0)); - BOOST_TEST(testC(S(""), 1, 0, "abcdefghijklmnopqrst", 19, 0)); - BOOST_TEST(testC(S(""), 1, 0, "abcdefghijklmnopqrst", 20, 0)); - BOOST_TEST(testC(S("abcde"), 0, 0, "", 0, 0)); - BOOST_TEST(testC(S("abcde"), 0, 0, "abcde", 0, 0)); - BOOST_TEST(testC(S("abcde"), 0, 0, "abcde", 1, -1)); - BOOST_TEST(testC(S("abcde"), 0, 0, "abcde", 2, -2)); - BOOST_TEST(testC(S("abcde"), 0, 0, "abcde", 4, -4)); - BOOST_TEST(testC(S("abcde"), 0, 0, "abcde", 5, -5)); - BOOST_TEST(testC(S("abcde"), 0, 0, "abcdefghij", 0, 0)); - BOOST_TEST(testC(S("abcde"), 0, 0, "abcdefghij", 1, -1)); - BOOST_TEST(testC(S("abcde"), 0, 0, "abcdefghij", 5, -5)); - BOOST_TEST(testC(S("abcde"), 0, 0, "abcdefghij", 9, -9)); - BOOST_TEST(testC(S("abcde"), 0, 0, "abcdefghij", 10, -10)); - BOOST_TEST(testC(S("abcde"), 0, 0, "abcdefghijklmnopqrst", 0, 0)); - BOOST_TEST(testC(S("abcde"), 0, 0, "abcdefghijklmnopqrst", 1, -1)); - BOOST_TEST(testC(S("abcde"), 0, 0, "abcdefghijklmnopqrst", 10, -10)); - BOOST_TEST(testC(S("abcde"), 0, 0, "abcdefghijklmnopqrst", 19, -19)); - BOOST_TEST(testC(S("abcde"), 0, 0, "abcdefghijklmnopqrst", 20, -20)); - BOOST_TEST(testC(S("abcde"), 0, 1, "", 0, 1)); - BOOST_TEST(testC(S("abcde"), 0, 1, "abcde", 0, 1)); - BOOST_TEST(testC(S("abcde"), 0, 1, "abcde", 1, 0)); - BOOST_TEST(testC(S("abcde"), 0, 1, "abcde", 2, -1)); - BOOST_TEST(testC(S("abcde"), 0, 1, "abcde", 4, -3)); - BOOST_TEST(testC(S("abcde"), 0, 1, "abcde", 5, -4)); - BOOST_TEST(testC(S("abcde"), 0, 1, "abcdefghij", 0, 1)); - BOOST_TEST(testC(S("abcde"), 0, 1, "abcdefghij", 1, 0)); - BOOST_TEST(testC(S("abcde"), 0, 1, "abcdefghij", 5, -4)); - BOOST_TEST(testC(S("abcde"), 0, 1, "abcdefghij", 9, -8)); - BOOST_TEST(testC(S("abcde"), 0, 1, "abcdefghij", 10, -9)); - BOOST_TEST(testC(S("abcde"), 0, 1, "abcdefghijklmnopqrst", 0, 1)); - BOOST_TEST(testC(S("abcde"), 0, 1, "abcdefghijklmnopqrst", 1, 0)); - BOOST_TEST(testC(S("abcde"), 0, 1, "abcdefghijklmnopqrst", 10, -9)); - BOOST_TEST(testC(S("abcde"), 0, 1, "abcdefghijklmnopqrst", 19, -18)); - BOOST_TEST(testC(S("abcde"), 0, 1, "abcdefghijklmnopqrst", 20, -19)); - BOOST_TEST(testC(S("abcde"), 0, 2, "", 0, 2)); - BOOST_TEST(testC(S("abcde"), 0, 2, "abcde", 0, 2)); - BOOST_TEST(testC(S("abcde"), 0, 2, "abcde", 1, 1)); - BOOST_TEST(testC(S("abcde"), 0, 2, "abcde", 2, 0)); - BOOST_TEST(testC(S("abcde"), 0, 2, "abcde", 4, -2)); - BOOST_TEST(testC(S("abcde"), 0, 2, "abcde", 5, -3)); - BOOST_TEST(testC(S("abcde"), 0, 2, "abcdefghij", 0, 2)); - BOOST_TEST(testC(S("abcde"), 0, 2, "abcdefghij", 1, 1)); - BOOST_TEST(testC(S("abcde"), 0, 2, "abcdefghij", 5, -3)); - BOOST_TEST(testC(S("abcde"), 0, 2, "abcdefghij", 9, -7)); - BOOST_TEST(testC(S("abcde"), 0, 2, "abcdefghij", 10, -8)); - BOOST_TEST(testC(S("abcde"), 0, 2, "abcdefghijklmnopqrst", 0, 2)); - BOOST_TEST(testC(S("abcde"), 0, 2, "abcdefghijklmnopqrst", 1, 1)); - BOOST_TEST(testC(S("abcde"), 0, 2, "abcdefghijklmnopqrst", 10, -8)); - BOOST_TEST(testC(S("abcde"), 0, 2, "abcdefghijklmnopqrst", 19, -17)); - BOOST_TEST(testC(S("abcde"), 0, 2, "abcdefghijklmnopqrst", 20, -18)); - BOOST_TEST(testC(S("abcde"), 0, 4, "", 0, 4)); - BOOST_TEST(testC(S("abcde"), 0, 4, "abcde", 0, 4)); - BOOST_TEST(testC(S("abcde"), 0, 4, "abcde", 1, 3)); - BOOST_TEST(testC(S("abcde"), 0, 4, "abcde", 2, 2)); - BOOST_TEST(testC(S("abcde"), 0, 4, "abcde", 4, 0)); - BOOST_TEST(testC(S("abcde"), 0, 4, "abcde", 5, -1)); - BOOST_TEST(testC(S("abcde"), 0, 4, "abcdefghij", 0, 4)); - BOOST_TEST(testC(S("abcde"), 0, 4, "abcdefghij", 1, 3)); - BOOST_TEST(testC(S("abcde"), 0, 4, "abcdefghij", 5, -1)); - BOOST_TEST(testC(S("abcde"), 0, 4, "abcdefghij", 9, -5)); - BOOST_TEST(testC(S("abcde"), 0, 4, "abcdefghij", 10, -6)); - BOOST_TEST(testC(S("abcde"), 0, 4, "abcdefghijklmnopqrst", 0, 4)); - BOOST_TEST(testC(S("abcde"), 0, 4, "abcdefghijklmnopqrst", 1, 3)); - BOOST_TEST(testC(S("abcde"), 0, 4, "abcdefghijklmnopqrst", 10, -6)); - BOOST_TEST(testC(S("abcde"), 0, 4, "abcdefghijklmnopqrst", 19, -15)); - BOOST_TEST(testC(S("abcde"), 0, 4, "abcdefghijklmnopqrst", 20, -16)); - BOOST_TEST(testC(S("abcde"), 0, 5, "", 0, 5)); - BOOST_TEST(testC(S("abcde"), 0, 5, "abcde", 0, 5)); - BOOST_TEST(testC(S("abcde"), 0, 5, "abcde", 1, 4)); - BOOST_TEST(testC(S("abcde"), 0, 5, "abcde", 2, 3)); - BOOST_TEST(testC(S("abcde"), 0, 5, "abcde", 4, 1)); - BOOST_TEST(testC(S("abcde"), 0, 5, "abcde", 5, 0)); - BOOST_TEST(testC(S("abcde"), 0, 5, "abcdefghij", 0, 5)); - BOOST_TEST(testC(S("abcde"), 0, 5, "abcdefghij", 1, 4)); - BOOST_TEST(testC(S("abcde"), 0, 5, "abcdefghij", 5, 0)); - BOOST_TEST(testC(S("abcde"), 0, 5, "abcdefghij", 9, -4)); - BOOST_TEST(testC(S("abcde"), 0, 5, "abcdefghij", 10, -5)); - BOOST_TEST(testC(S("abcde"), 0, 5, "abcdefghijklmnopqrst", 0, 5)); - BOOST_TEST(testC(S("abcde"), 0, 5, "abcdefghijklmnopqrst", 1, 4)); - BOOST_TEST(testC(S("abcde"), 0, 5, "abcdefghijklmnopqrst", 10, -5)); - BOOST_TEST(testC(S("abcde"), 0, 5, "abcdefghijklmnopqrst", 19, -14)); - BOOST_TEST(testC(S("abcde"), 0, 5, "abcdefghijklmnopqrst", 20, -15)); - BOOST_TEST(testC(S("abcde"), 0, 6, "", 0, 5)); - BOOST_TEST(testC(S("abcde"), 0, 6, "abcde", 0, 5)); - BOOST_TEST(testC(S("abcde"), 0, 6, "abcde", 1, 4)); - BOOST_TEST(testC(S("abcde"), 0, 6, "abcde", 2, 3)); - BOOST_TEST(testC(S("abcde"), 0, 6, "abcde", 4, 1)); - BOOST_TEST(testC(S("abcde"), 0, 6, "abcde", 5, 0)); - BOOST_TEST(testC(S("abcde"), 0, 6, "abcdefghij", 0, 5)); - BOOST_TEST(testC(S("abcde"), 0, 6, "abcdefghij", 1, 4)); - BOOST_TEST(testC(S("abcde"), 0, 6, "abcdefghij", 5, 0)); - BOOST_TEST(testC(S("abcde"), 0, 6, "abcdefghij", 9, -4)); - BOOST_TEST(testC(S("abcde"), 0, 6, "abcdefghij", 10, -5)); - BOOST_TEST(testC(S("abcde"), 0, 6, "abcdefghijklmnopqrst", 0, 5)); - BOOST_TEST(testC(S("abcde"), 0, 6, "abcdefghijklmnopqrst", 1, 4)); - BOOST_TEST(testC(S("abcde"), 0, 6, "abcdefghijklmnopqrst", 10, -5)); - BOOST_TEST(testC(S("abcde"), 0, 6, "abcdefghijklmnopqrst", 19, -14)); - BOOST_TEST(testC(S("abcde"), 0, 6, "abcdefghijklmnopqrst", 20, -15)); - BOOST_TEST(testC(S("abcde"), 1, 0, "", 0, 0)); - BOOST_TEST(testC(S("abcde"), 1, 0, "abcde", 0, 0)); - BOOST_TEST(testC(S("abcde"), 1, 0, "abcde", 1, -1)); - BOOST_TEST(testC(S("abcde"), 1, 0, "abcde", 2, -2)); - BOOST_TEST(testC(S("abcde"), 1, 0, "abcde", 4, -4)); - BOOST_TEST(testC(S("abcde"), 1, 0, "abcde", 5, -5)); - BOOST_TEST(testC(S("abcde"), 1, 0, "abcdefghij", 0, 0)); - BOOST_TEST(testC(S("abcde"), 1, 0, "abcdefghij", 1, -1)); - BOOST_TEST(testC(S("abcde"), 1, 0, "abcdefghij", 5, -5)); - BOOST_TEST(testC(S("abcde"), 1, 0, "abcdefghij", 9, -9)); - BOOST_TEST(testC(S("abcde"), 1, 0, "abcdefghij", 10, -10)); - BOOST_TEST(testC(S("abcde"), 1, 0, "abcdefghijklmnopqrst", 0, 0)); - BOOST_TEST(testC(S("abcde"), 1, 0, "abcdefghijklmnopqrst", 1, -1)); - BOOST_TEST(testC(S("abcde"), 1, 0, "abcdefghijklmnopqrst", 10, -10)); - BOOST_TEST(testC(S("abcde"), 1, 0, "abcdefghijklmnopqrst", 19, -19)); - BOOST_TEST(testC(S("abcde"), 1, 0, "abcdefghijklmnopqrst", 20, -20)); - BOOST_TEST(testC(S("abcde"), 1, 1, "", 0, 1)); - BOOST_TEST(testC(S("abcde"), 1, 1, "abcde", 0, 1)); - BOOST_TEST(testC(S("abcde"), 1, 1, "abcde", 1, 1)); - BOOST_TEST(testC(S("abcde"), 1, 1, "abcde", 2, 1)); - BOOST_TEST(testC(S("abcde"), 1, 1, "abcde", 4, 1)); - BOOST_TEST(testC(S("abcde"), 1, 1, "abcde", 5, 1)); - BOOST_TEST(testC(S("abcde"), 1, 1, "abcdefghij", 0, 1)); - BOOST_TEST(testC(S("abcde"), 1, 1, "abcdefghij", 1, 1)); - BOOST_TEST(testC(S("abcde"), 1, 1, "abcdefghij", 5, 1)); - BOOST_TEST(testC(S("abcde"), 1, 1, "abcdefghij", 9, 1)); - BOOST_TEST(testC(S("abcde"), 1, 1, "abcdefghij", 10, 1)); - BOOST_TEST(testC(S("abcde"), 1, 1, "abcdefghijklmnopqrst", 0, 1)); - BOOST_TEST(testC(S("abcde"), 1, 1, "abcdefghijklmnopqrst", 1, 1)); - BOOST_TEST(testC(S("abcde"), 1, 1, "abcdefghijklmnopqrst", 10, 1)); - BOOST_TEST(testC(S("abcde"), 1, 1, "abcdefghijklmnopqrst", 19, 1)); - BOOST_TEST(testC(S("abcde"), 1, 1, "abcdefghijklmnopqrst", 20, 1)); - BOOST_TEST(testC(S("abcde"), 1, 2, "", 0, 2)); - BOOST_TEST(testC(S("abcde"), 1, 2, "abcde", 0, 2)); - BOOST_TEST(testC(S("abcde"), 1, 2, "abcde", 1, 1)); - BOOST_TEST(testC(S("abcde"), 1, 2, "abcde", 2, 1)); - BOOST_TEST(testC(S("abcde"), 1, 2, "abcde", 4, 1)); - BOOST_TEST(testC(S("abcde"), 1, 2, "abcde", 5, 1)); - BOOST_TEST(testC(S("abcde"), 1, 2, "abcdefghij", 0, 2)); - BOOST_TEST(testC(S("abcde"), 1, 2, "abcdefghij", 1, 1)); - BOOST_TEST(testC(S("abcde"), 1, 2, "abcdefghij", 5, 1)); - BOOST_TEST(testC(S("abcde"), 1, 2, "abcdefghij", 9, 1)); - BOOST_TEST(testC(S("abcde"), 1, 2, "abcdefghij", 10, 1)); - BOOST_TEST(testC(S("abcde"), 1, 2, "abcdefghijklmnopqrst", 0, 2)); - BOOST_TEST(testC(S("abcde"), 1, 2, "abcdefghijklmnopqrst", 1, 1)); - BOOST_TEST(testC(S("abcde"), 1, 2, "abcdefghijklmnopqrst", 10, 1)); - BOOST_TEST(testC(S("abcde"), 1, 2, "abcdefghijklmnopqrst", 19, 1)); - BOOST_TEST(testC(S("abcde"), 1, 2, "abcdefghijklmnopqrst", 20, 1)); - BOOST_TEST(testC(S("abcde"), 1, 3, "", 0, 3)); - BOOST_TEST(testC(S("abcde"), 1, 3, "abcde", 0, 3)); - BOOST_TEST(testC(S("abcde"), 1, 3, "abcde", 1, 1)); - BOOST_TEST(testC(S("abcde"), 1, 3, "abcde", 2, 1)); - BOOST_TEST(testC(S("abcde"), 1, 3, "abcde", 4, 1)); - BOOST_TEST(testC(S("abcde"), 1, 3, "abcde", 5, 1)); - BOOST_TEST(testC(S("abcde"), 1, 3, "abcdefghij", 0, 3)); - BOOST_TEST(testC(S("abcde"), 1, 3, "abcdefghij", 1, 1)); - BOOST_TEST(testC(S("abcde"), 1, 3, "abcdefghij", 5, 1)); - BOOST_TEST(testC(S("abcde"), 1, 3, "abcdefghij", 9, 1)); - BOOST_TEST(testC(S("abcde"), 1, 3, "abcdefghij", 10, 1)); - BOOST_TEST(testC(S("abcde"), 1, 3, "abcdefghijklmnopqrst", 0, 3)); - BOOST_TEST(testC(S("abcde"), 1, 3, "abcdefghijklmnopqrst", 1, 1)); - BOOST_TEST(testC(S("abcde"), 1, 3, "abcdefghijklmnopqrst", 10, 1)); - BOOST_TEST(testC(S("abcde"), 1, 3, "abcdefghijklmnopqrst", 19, 1)); - BOOST_TEST(testC(S("abcde"), 1, 3, "abcdefghijklmnopqrst", 20, 1)); - BOOST_TEST(testC(S("abcde"), 1, 4, "", 0, 4)); - BOOST_TEST(testC(S("abcde"), 1, 4, "abcde", 0, 4)); - BOOST_TEST(testC(S("abcde"), 1, 4, "abcde", 1, 1)); - BOOST_TEST(testC(S("abcde"), 1, 4, "abcde", 2, 1)); - BOOST_TEST(testC(S("abcde"), 1, 4, "abcde", 4, 1)); - BOOST_TEST(testC(S("abcde"), 1, 4, "abcde", 5, 1)); - BOOST_TEST(testC(S("abcde"), 1, 4, "abcdefghij", 0, 4)); - BOOST_TEST(testC(S("abcde"), 1, 4, "abcdefghij", 1, 1)); - BOOST_TEST(testC(S("abcde"), 1, 4, "abcdefghij", 5, 1)); - BOOST_TEST(testC(S("abcde"), 1, 4, "abcdefghij", 9, 1)); - BOOST_TEST(testC(S("abcde"), 1, 4, "abcdefghij", 10, 1)); - BOOST_TEST(testC(S("abcde"), 1, 4, "abcdefghijklmnopqrst", 0, 4)); - BOOST_TEST(testC(S("abcde"), 1, 4, "abcdefghijklmnopqrst", 1, 1)); - BOOST_TEST(testC(S("abcde"), 1, 4, "abcdefghijklmnopqrst", 10, 1)); - BOOST_TEST(testC(S("abcde"), 1, 4, "abcdefghijklmnopqrst", 19, 1)); - BOOST_TEST(testC(S("abcde"), 1, 4, "abcdefghijklmnopqrst", 20, 1)); - BOOST_TEST(testC(S("abcde"), 1, 5, "", 0, 4)); - BOOST_TEST(testC(S("abcde"), 1, 5, "abcde", 0, 4)); - BOOST_TEST(testC(S("abcde"), 1, 5, "abcde", 1, 1)); - BOOST_TEST(testC(S("abcde"), 1, 5, "abcde", 2, 1)); - BOOST_TEST(testC(S("abcde"), 1, 5, "abcde", 4, 1)); - BOOST_TEST(testC(S("abcde"), 1, 5, "abcde", 5, 1)); - BOOST_TEST(testC(S("abcde"), 1, 5, "abcdefghij", 0, 4)); - BOOST_TEST(testC(S("abcde"), 1, 5, "abcdefghij", 1, 1)); - BOOST_TEST(testC(S("abcde"), 1, 5, "abcdefghij", 5, 1)); - BOOST_TEST(testC(S("abcde"), 1, 5, "abcdefghij", 9, 1)); - BOOST_TEST(testC(S("abcde"), 1, 5, "abcdefghij", 10, 1)); - BOOST_TEST(testC(S("abcde"), 1, 5, "abcdefghijklmnopqrst", 0, 4)); - BOOST_TEST(testC(S("abcde"), 1, 5, "abcdefghijklmnopqrst", 1, 1)); - BOOST_TEST(testC(S("abcde"), 1, 5, "abcdefghijklmnopqrst", 10, 1)); - BOOST_TEST(testC(S("abcde"), 1, 5, "abcdefghijklmnopqrst", 19, 1)); - BOOST_TEST(testC(S("abcde"), 1, 5, "abcdefghijklmnopqrst", 20, 1)); - BOOST_TEST(testC(S("abcde"), 2, 0, "", 0, 0)); - BOOST_TEST(testC(S("abcde"), 2, 0, "abcde", 0, 0)); - BOOST_TEST(testC(S("abcde"), 2, 0, "abcde", 1, -1)); - BOOST_TEST(testC(S("abcde"), 2, 0, "abcde", 2, -2)); - BOOST_TEST(testC(S("abcde"), 2, 0, "abcde", 4, -4)); - BOOST_TEST(testC(S("abcde"), 2, 0, "abcde", 5, -5)); - BOOST_TEST(testC(S("abcde"), 2, 0, "abcdefghij", 0, 0)); - BOOST_TEST(testC(S("abcde"), 2, 0, "abcdefghij", 1, -1)); - BOOST_TEST(testC(S("abcde"), 2, 0, "abcdefghij", 5, -5)); - BOOST_TEST(testC(S("abcde"), 2, 0, "abcdefghij", 9, -9)); - BOOST_TEST(testC(S("abcde"), 2, 0, "abcdefghij", 10, -10)); - BOOST_TEST(testC(S("abcde"), 2, 0, "abcdefghijklmnopqrst", 0, 0)); - BOOST_TEST(testC(S("abcde"), 2, 0, "abcdefghijklmnopqrst", 1, -1)); - BOOST_TEST(testC(S("abcde"), 2, 0, "abcdefghijklmnopqrst", 10, -10)); - BOOST_TEST(testC(S("abcde"), 2, 0, "abcdefghijklmnopqrst", 19, -19)); - BOOST_TEST(testC(S("abcde"), 2, 0, "abcdefghijklmnopqrst", 20, -20)); - BOOST_TEST(testC(S("abcde"), 2, 1, "", 0, 1)); - BOOST_TEST(testC(S("abcde"), 2, 1, "abcde", 0, 1)); - BOOST_TEST(testC(S("abcde"), 2, 1, "abcde", 1, 2)); - BOOST_TEST(testC(S("abcde"), 2, 1, "abcde", 2, 2)); - BOOST_TEST(testC(S("abcde"), 2, 1, "abcde", 4, 2)); - BOOST_TEST(testC(S("abcde"), 2, 1, "abcde", 5, 2)); - BOOST_TEST(testC(S("abcde"), 2, 1, "abcdefghij", 0, 1)); - BOOST_TEST(testC(S("abcde"), 2, 1, "abcdefghij", 1, 2)); - BOOST_TEST(testC(S("abcde"), 2, 1, "abcdefghij", 5, 2)); - BOOST_TEST(testC(S("abcde"), 2, 1, "abcdefghij", 9, 2)); - BOOST_TEST(testC(S("abcde"), 2, 1, "abcdefghij", 10, 2)); - BOOST_TEST(testC(S("abcde"), 2, 1, "abcdefghijklmnopqrst", 0, 1)); - BOOST_TEST(testC(S("abcde"), 2, 1, "abcdefghijklmnopqrst", 1, 2)); - BOOST_TEST(testC(S("abcde"), 2, 1, "abcdefghijklmnopqrst", 10, 2)); - BOOST_TEST(testC(S("abcde"), 2, 1, "abcdefghijklmnopqrst", 19, 2)); - BOOST_TEST(testC(S("abcde"), 2, 1, "abcdefghijklmnopqrst", 20, 2)); - BOOST_TEST(testC(S("abcde"), 2, 2, "", 0, 2)); - BOOST_TEST(testC(S("abcde"), 2, 2, "abcde", 0, 2)); - BOOST_TEST(testC(S("abcde"), 2, 2, "abcde", 1, 2)); - BOOST_TEST(testC(S("abcde"), 2, 2, "abcde", 2, 2)); - BOOST_TEST(testC(S("abcde"), 2, 2, "abcde", 4, 2)); - BOOST_TEST(testC(S("abcde"), 2, 2, "abcde", 5, 2)); - BOOST_TEST(testC(S("abcde"), 2, 2, "abcdefghij", 0, 2)); - BOOST_TEST(testC(S("abcde"), 2, 2, "abcdefghij", 1, 2)); - BOOST_TEST(testC(S("abcde"), 2, 2, "abcdefghij", 5, 2)); - BOOST_TEST(testC(S("abcde"), 2, 2, "abcdefghij", 9, 2)); - BOOST_TEST(testC(S("abcde"), 2, 2, "abcdefghij", 10, 2)); - BOOST_TEST(testC(S("abcde"), 2, 2, "abcdefghijklmnopqrst", 0, 2)); - BOOST_TEST(testC(S("abcde"), 2, 2, "abcdefghijklmnopqrst", 1, 2)); - BOOST_TEST(testC(S("abcde"), 2, 2, "abcdefghijklmnopqrst", 10, 2)); - BOOST_TEST(testC(S("abcde"), 2, 2, "abcdefghijklmnopqrst", 19, 2)); - BOOST_TEST(testC(S("abcde"), 2, 2, "abcdefghijklmnopqrst", 20, 2)); - BOOST_TEST(testC(S("abcde"), 2, 3, "", 0, 3)); - BOOST_TEST(testC(S("abcde"), 2, 3, "abcde", 0, 3)); - BOOST_TEST(testC(S("abcde"), 2, 3, "abcde", 1, 2)); - BOOST_TEST(testC(S("abcde"), 2, 3, "abcde", 2, 2)); - BOOST_TEST(testC(S("abcde"), 2, 3, "abcde", 4, 2)); - BOOST_TEST(testC(S("abcde"), 2, 3, "abcde", 5, 2)); - BOOST_TEST(testC(S("abcde"), 2, 3, "abcdefghij", 0, 3)); - BOOST_TEST(testC(S("abcde"), 2, 3, "abcdefghij", 1, 2)); - BOOST_TEST(testC(S("abcde"), 2, 3, "abcdefghij", 5, 2)); - BOOST_TEST(testC(S("abcde"), 2, 3, "abcdefghij", 9, 2)); - BOOST_TEST(testC(S("abcde"), 2, 3, "abcdefghij", 10, 2)); - BOOST_TEST(testC(S("abcde"), 2, 3, "abcdefghijklmnopqrst", 0, 3)); - BOOST_TEST(testC(S("abcde"), 2, 3, "abcdefghijklmnopqrst", 1, 2)); - BOOST_TEST(testC(S("abcde"), 2, 3, "abcdefghijklmnopqrst", 10, 2)); - BOOST_TEST(testC(S("abcde"), 2, 3, "abcdefghijklmnopqrst", 19, 2)); - BOOST_TEST(testC(S("abcde"), 2, 3, "abcdefghijklmnopqrst", 20, 2)); - BOOST_TEST(testC(S("abcde"), 2, 4, "", 0, 3)); - BOOST_TEST(testC(S("abcde"), 2, 4, "abcde", 0, 3)); - BOOST_TEST(testC(S("abcde"), 2, 4, "abcde", 1, 2)); - BOOST_TEST(testC(S("abcde"), 2, 4, "abcde", 2, 2)); - BOOST_TEST(testC(S("abcde"), 2, 4, "abcde", 4, 2)); - BOOST_TEST(testC(S("abcde"), 2, 4, "abcde", 5, 2)); - BOOST_TEST(testC(S("abcde"), 2, 4, "abcdefghij", 0, 3)); - BOOST_TEST(testC(S("abcde"), 2, 4, "abcdefghij", 1, 2)); - BOOST_TEST(testC(S("abcde"), 2, 4, "abcdefghij", 5, 2)); - BOOST_TEST(testC(S("abcde"), 2, 4, "abcdefghij", 9, 2)); - BOOST_TEST(testC(S("abcde"), 2, 4, "abcdefghij", 10, 2)); - BOOST_TEST(testC(S("abcde"), 2, 4, "abcdefghijklmnopqrst", 0, 3)); - BOOST_TEST(testC(S("abcde"), 2, 4, "abcdefghijklmnopqrst", 1, 2)); - BOOST_TEST(testC(S("abcde"), 2, 4, "abcdefghijklmnopqrst", 10, 2)); - BOOST_TEST(testC(S("abcde"), 2, 4, "abcdefghijklmnopqrst", 19, 2)); - BOOST_TEST(testC(S("abcde"), 2, 4, "abcdefghijklmnopqrst", 20, 2)); - BOOST_TEST(testC(S("abcde"), 4, 0, "", 0, 0)); - BOOST_TEST(testC(S("abcde"), 4, 0, "abcde", 0, 0)); - BOOST_TEST(testC(S("abcde"), 4, 0, "abcde", 1, -1)); - BOOST_TEST(testC(S("abcde"), 4, 0, "abcde", 2, -2)); - BOOST_TEST(testC(S("abcde"), 4, 0, "abcde", 4, -4)); - BOOST_TEST(testC(S("abcde"), 4, 0, "abcde", 5, -5)); - BOOST_TEST(testC(S("abcde"), 4, 0, "abcdefghij", 0, 0)); - BOOST_TEST(testC(S("abcde"), 4, 0, "abcdefghij", 1, -1)); - BOOST_TEST(testC(S("abcde"), 4, 0, "abcdefghij", 5, -5)); - BOOST_TEST(testC(S("abcde"), 4, 0, "abcdefghij", 9, -9)); - BOOST_TEST(testC(S("abcde"), 4, 0, "abcdefghij", 10, -10)); - BOOST_TEST(testC(S("abcde"), 4, 0, "abcdefghijklmnopqrst", 0, 0)); - BOOST_TEST(testC(S("abcde"), 4, 0, "abcdefghijklmnopqrst", 1, -1)); - BOOST_TEST(testC(S("abcde"), 4, 0, "abcdefghijklmnopqrst", 10, -10)); - BOOST_TEST(testC(S("abcde"), 4, 0, "abcdefghijklmnopqrst", 19, -19)); - BOOST_TEST(testC(S("abcde"), 4, 0, "abcdefghijklmnopqrst", 20, -20)); - BOOST_TEST(testC(S("abcde"), 4, 1, "", 0, 1)); - BOOST_TEST(testC(S("abcde"), 4, 1, "abcde", 0, 1)); - BOOST_TEST(testC(S("abcde"), 4, 1, "abcde", 1, 4)); - BOOST_TEST(testC(S("abcde"), 4, 1, "abcde", 2, 4)); - BOOST_TEST(testC(S("abcde"), 4, 1, "abcde", 4, 4)); - BOOST_TEST(testC(S("abcde"), 4, 1, "abcde", 5, 4)); - BOOST_TEST(testC(S("abcde"), 4, 1, "abcdefghij", 0, 1)); - BOOST_TEST(testC(S("abcde"), 4, 1, "abcdefghij", 1, 4)); - BOOST_TEST(testC(S("abcde"), 4, 1, "abcdefghij", 5, 4)); - BOOST_TEST(testC(S("abcde"), 4, 1, "abcdefghij", 9, 4)); - BOOST_TEST(testC(S("abcde"), 4, 1, "abcdefghij", 10, 4)); - BOOST_TEST(testC(S("abcde"), 4, 1, "abcdefghijklmnopqrst", 0, 1)); - BOOST_TEST(testC(S("abcde"), 4, 1, "abcdefghijklmnopqrst", 1, 4)); - BOOST_TEST(testC(S("abcde"), 4, 1, "abcdefghijklmnopqrst", 10, 4)); - BOOST_TEST(testC(S("abcde"), 4, 1, "abcdefghijklmnopqrst", 19, 4)); - BOOST_TEST(testC(S("abcde"), 4, 1, "abcdefghijklmnopqrst", 20, 4)); - BOOST_TEST(testC(S("abcde"), 4, 2, "", 0, 1)); - BOOST_TEST(testC(S("abcde"), 4, 2, "abcde", 0, 1)); - BOOST_TEST(testC(S("abcde"), 4, 2, "abcde", 1, 4)); - BOOST_TEST(testC(S("abcde"), 4, 2, "abcde", 2, 4)); - BOOST_TEST(testC(S("abcde"), 4, 2, "abcde", 4, 4)); - BOOST_TEST(testC(S("abcde"), 4, 2, "abcde", 5, 4)); - BOOST_TEST(testC(S("abcde"), 4, 2, "abcdefghij", 0, 1)); - BOOST_TEST(testC(S("abcde"), 4, 2, "abcdefghij", 1, 4)); - BOOST_TEST(testC(S("abcde"), 4, 2, "abcdefghij", 5, 4)); - BOOST_TEST(testC(S("abcde"), 4, 2, "abcdefghij", 9, 4)); - BOOST_TEST(testC(S("abcde"), 4, 2, "abcdefghij", 10, 4)); - BOOST_TEST(testC(S("abcde"), 4, 2, "abcdefghijklmnopqrst", 0, 1)); - BOOST_TEST(testC(S("abcde"), 4, 2, "abcdefghijklmnopqrst", 1, 4)); - BOOST_TEST(testC(S("abcde"), 4, 2, "abcdefghijklmnopqrst", 10, 4)); - BOOST_TEST(testC(S("abcde"), 4, 2, "abcdefghijklmnopqrst", 19, 4)); - BOOST_TEST(testC(S("abcde"), 4, 2, "abcdefghijklmnopqrst", 20, 4)); - BOOST_TEST(testC(S("abcde"), 5, 0, "", 0, 0)); - BOOST_TEST(testC(S("abcde"), 5, 0, "abcde", 0, 0)); - BOOST_TEST(testC(S("abcde"), 5, 0, "abcde", 1, -1)); - BOOST_TEST(testC(S("abcde"), 5, 0, "abcde", 2, -2)); - BOOST_TEST(testC(S("abcde"), 5, 0, "abcde", 4, -4)); - BOOST_TEST(testC(S("abcde"), 5, 0, "abcde", 5, -5)); - BOOST_TEST(testC(S("abcde"), 5, 0, "abcdefghij", 0, 0)); - BOOST_TEST(testC(S("abcde"), 5, 0, "abcdefghij", 1, -1)); - BOOST_TEST(testC(S("abcde"), 5, 0, "abcdefghij", 5, -5)); - BOOST_TEST(testC(S("abcde"), 5, 0, "abcdefghij", 9, -9)); - BOOST_TEST(testC(S("abcde"), 5, 0, "abcdefghij", 10, -10)); - BOOST_TEST(testC(S("abcde"), 5, 0, "abcdefghijklmnopqrst", 0, 0)); - BOOST_TEST(testC(S("abcde"), 5, 0, "abcdefghijklmnopqrst", 1, -1)); - BOOST_TEST(testC(S("abcde"), 5, 0, "abcdefghijklmnopqrst", 10, -10)); - BOOST_TEST(testC(S("abcde"), 5, 0, "abcdefghijklmnopqrst", 19, -19)); - BOOST_TEST(testC(S("abcde"), 5, 0, "abcdefghijklmnopqrst", 20, -20)); - BOOST_TEST(testC(S("abcde"), 5, 1, "", 0, 0)); - BOOST_TEST(testC(S("abcde"), 5, 1, "abcde", 0, 0)); - BOOST_TEST(testC(S("abcde"), 5, 1, "abcde", 1, -1)); - BOOST_TEST(testC(S("abcde"), 5, 1, "abcde", 2, -2)); - BOOST_TEST(testC(S("abcde"), 5, 1, "abcde", 4, -4)); - BOOST_TEST(testC(S("abcde"), 5, 1, "abcde", 5, -5)); - BOOST_TEST(testC(S("abcde"), 5, 1, "abcdefghij", 0, 0)); - BOOST_TEST(testC(S("abcde"), 5, 1, "abcdefghij", 1, -1)); - BOOST_TEST(testC(S("abcde"), 5, 1, "abcdefghij", 5, -5)); - BOOST_TEST(testC(S("abcde"), 5, 1, "abcdefghij", 9, -9)); - BOOST_TEST(testC(S("abcde"), 5, 1, "abcdefghij", 10, -10)); - BOOST_TEST(testC(S("abcde"), 5, 1, "abcdefghijklmnopqrst", 0, 0)); - BOOST_TEST(testC(S("abcde"), 5, 1, "abcdefghijklmnopqrst", 1, -1)); - BOOST_TEST(testC(S("abcde"), 5, 1, "abcdefghijklmnopqrst", 10, -10)); - BOOST_TEST(testC(S("abcde"), 5, 1, "abcdefghijklmnopqrst", 19, -19)); - BOOST_TEST(testC(S("abcde"), 5, 1, "abcdefghijklmnopqrst", 20, -20)); - BOOST_TEST(testC(S("abcde"), 6, 0, "", 0, 0)); - BOOST_TEST(testC(S("abcde"), 6, 0, "abcde", 0, 0)); - BOOST_TEST(testC(S("abcde"), 6, 0, "abcde", 1, 0)); - BOOST_TEST(testC(S("abcde"), 6, 0, "abcde", 2, 0)); - BOOST_TEST(testC(S("abcde"), 6, 0, "abcde", 4, 0)); - BOOST_TEST(testC(S("abcde"), 6, 0, "abcde", 5, 0)); - BOOST_TEST(testC(S("abcde"), 6, 0, "abcdefghij", 0, 0)); - BOOST_TEST(testC(S("abcde"), 6, 0, "abcdefghij", 1, 0)); - BOOST_TEST(testC(S("abcde"), 6, 0, "abcdefghij", 5, 0)); - BOOST_TEST(testC(S("abcde"), 6, 0, "abcdefghij", 9, 0)); - BOOST_TEST(testC(S("abcde"), 6, 0, "abcdefghij", 10, 0)); - BOOST_TEST(testC(S("abcde"), 6, 0, "abcdefghijklmnopqrst", 0, 0)); - BOOST_TEST(testC(S("abcde"), 6, 0, "abcdefghijklmnopqrst", 1, 0)); - BOOST_TEST(testC(S("abcde"), 6, 0, "abcdefghijklmnopqrst", 10, 0)); - BOOST_TEST(testC(S("abcde"), 6, 0, "abcdefghijklmnopqrst", 19, 0)); - BOOST_TEST(testC(S("abcde"), 6, 0, "abcdefghijklmnopqrst", 20, 0)); - BOOST_TEST(testC(S("abcdefghij"), 0, 0, "", 0, 0)); - BOOST_TEST(testC(S("abcdefghij"), 0, 0, "abcde", 0, 0)); - BOOST_TEST(testC(S("abcdefghij"), 0, 0, "abcde", 1, -1)); - BOOST_TEST(testC(S("abcdefghij"), 0, 0, "abcde", 2, -2)); - BOOST_TEST(testC(S("abcdefghij"), 0, 0, "abcde", 4, -4)); - BOOST_TEST(testC(S("abcdefghij"), 0, 0, "abcde", 5, -5)); - BOOST_TEST(testC(S("abcdefghij"), 0, 0, "abcdefghij", 0, 0)); - BOOST_TEST(testC(S("abcdefghij"), 0, 0, "abcdefghij", 1, -1)); - BOOST_TEST(testC(S("abcdefghij"), 0, 0, "abcdefghij", 5, -5)); - BOOST_TEST(testC(S("abcdefghij"), 0, 0, "abcdefghij", 9, -9)); - BOOST_TEST(testC(S("abcdefghij"), 0, 0, "abcdefghij", 10, -10)); - BOOST_TEST(testC(S("abcdefghij"), 0, 0, "abcdefghijklmnopqrst", 0, 0)); - BOOST_TEST(testC(S("abcdefghij"), 0, 0, "abcdefghijklmnopqrst", 1, -1)); - BOOST_TEST(testC(S("abcdefghij"), 0, 0, "abcdefghijklmnopqrst", 10, -10)); - BOOST_TEST(testC(S("abcdefghij"), 0, 0, "abcdefghijklmnopqrst", 19, -19)); - BOOST_TEST(testC(S("abcdefghij"), 0, 0, "abcdefghijklmnopqrst", 20, -20)); - BOOST_TEST(testC(S("abcdefghij"), 0, 1, "", 0, 1)); - BOOST_TEST(testC(S("abcdefghij"), 0, 1, "abcde", 0, 1)); - BOOST_TEST(testC(S("abcdefghij"), 0, 1, "abcde", 1, 0)); - BOOST_TEST(testC(S("abcdefghij"), 0, 1, "abcde", 2, -1)); - BOOST_TEST(testC(S("abcdefghij"), 0, 1, "abcde", 4, -3)); - BOOST_TEST(testC(S("abcdefghij"), 0, 1, "abcde", 5, -4)); - BOOST_TEST(testC(S("abcdefghij"), 0, 1, "abcdefghij", 0, 1)); - BOOST_TEST(testC(S("abcdefghij"), 0, 1, "abcdefghij", 1, 0)); - BOOST_TEST(testC(S("abcdefghij"), 0, 1, "abcdefghij", 5, -4)); - BOOST_TEST(testC(S("abcdefghij"), 0, 1, "abcdefghij", 9, -8)); - BOOST_TEST(testC(S("abcdefghij"), 0, 1, "abcdefghij", 10, -9)); - BOOST_TEST(testC(S("abcdefghij"), 0, 1, "abcdefghijklmnopqrst", 0, 1)); - BOOST_TEST(testC(S("abcdefghij"), 0, 1, "abcdefghijklmnopqrst", 1, 0)); - BOOST_TEST(testC(S("abcdefghij"), 0, 1, "abcdefghijklmnopqrst", 10, -9)); - BOOST_TEST(testC(S("abcdefghij"), 0, 1, "abcdefghijklmnopqrst", 19, -18)); - BOOST_TEST(testC(S("abcdefghij"), 0, 1, "abcdefghijklmnopqrst", 20, -19)); - BOOST_TEST(testC(S("abcdefghij"), 0, 5, "", 0, 5)); - BOOST_TEST(testC(S("abcdefghij"), 0, 5, "abcde", 0, 5)); - BOOST_TEST(testC(S("abcdefghij"), 0, 5, "abcde", 1, 4)); - BOOST_TEST(testC(S("abcdefghij"), 0, 5, "abcde", 2, 3)); - BOOST_TEST(testC(S("abcdefghij"), 0, 5, "abcde", 4, 1)); - BOOST_TEST(testC(S("abcdefghij"), 0, 5, "abcde", 5, 0)); - BOOST_TEST(testC(S("abcdefghij"), 0, 5, "abcdefghij", 0, 5)); - BOOST_TEST(testC(S("abcdefghij"), 0, 5, "abcdefghij", 1, 4)); - BOOST_TEST(testC(S("abcdefghij"), 0, 5, "abcdefghij", 5, 0)); - BOOST_TEST(testC(S("abcdefghij"), 0, 5, "abcdefghij", 9, -4)); - BOOST_TEST(testC(S("abcdefghij"), 0, 5, "abcdefghij", 10, -5)); - BOOST_TEST(testC(S("abcdefghij"), 0, 5, "abcdefghijklmnopqrst", 0, 5)); - BOOST_TEST(testC(S("abcdefghij"), 0, 5, "abcdefghijklmnopqrst", 1, 4)); - BOOST_TEST(testC(S("abcdefghij"), 0, 5, "abcdefghijklmnopqrst", 10, -5)); - BOOST_TEST(testC(S("abcdefghij"), 0, 5, "abcdefghijklmnopqrst", 19, -14)); - BOOST_TEST(testC(S("abcdefghij"), 0, 5, "abcdefghijklmnopqrst", 20, -15)); - BOOST_TEST(testC(S("abcdefghij"), 0, 9, "", 0, 9)); - BOOST_TEST(testC(S("abcdefghij"), 0, 9, "abcde", 0, 9)); - BOOST_TEST(testC(S("abcdefghij"), 0, 9, "abcde", 1, 8)); - BOOST_TEST(testC(S("abcdefghij"), 0, 9, "abcde", 2, 7)); - BOOST_TEST(testC(S("abcdefghij"), 0, 9, "abcde", 4, 5)); - BOOST_TEST(testC(S("abcdefghij"), 0, 9, "abcde", 5, 4)); - BOOST_TEST(testC(S("abcdefghij"), 0, 9, "abcdefghij", 0, 9)); - BOOST_TEST(testC(S("abcdefghij"), 0, 9, "abcdefghij", 1, 8)); - BOOST_TEST(testC(S("abcdefghij"), 0, 9, "abcdefghij", 5, 4)); - BOOST_TEST(testC(S("abcdefghij"), 0, 9, "abcdefghij", 9, 0)); - BOOST_TEST(testC(S("abcdefghij"), 0, 9, "abcdefghij", 10, -1)); - BOOST_TEST(testC(S("abcdefghij"), 0, 9, "abcdefghijklmnopqrst", 0, 9)); - BOOST_TEST(testC(S("abcdefghij"), 0, 9, "abcdefghijklmnopqrst", 1, 8)); - BOOST_TEST(testC(S("abcdefghij"), 0, 9, "abcdefghijklmnopqrst", 10, -1)); - BOOST_TEST(testC(S("abcdefghij"), 0, 9, "abcdefghijklmnopqrst", 19, -10)); - BOOST_TEST(testC(S("abcdefghij"), 0, 9, "abcdefghijklmnopqrst", 20, -11)); - BOOST_TEST(testC(S("abcdefghij"), 0, 10, "", 0, 10)); - BOOST_TEST(testC(S("abcdefghij"), 0, 10, "abcde", 0, 10)); - BOOST_TEST(testC(S("abcdefghij"), 0, 10, "abcde", 1, 9)); - BOOST_TEST(testC(S("abcdefghij"), 0, 10, "abcde", 2, 8)); - BOOST_TEST(testC(S("abcdefghij"), 0, 10, "abcde", 4, 6)); - BOOST_TEST(testC(S("abcdefghij"), 0, 10, "abcde", 5, 5)); - BOOST_TEST(testC(S("abcdefghij"), 0, 10, "abcdefghij", 0, 10)); - BOOST_TEST(testC(S("abcdefghij"), 0, 10, "abcdefghij", 1, 9)); - BOOST_TEST(testC(S("abcdefghij"), 0, 10, "abcdefghij", 5, 5)); - BOOST_TEST(testC(S("abcdefghij"), 0, 10, "abcdefghij", 9, 1)); - BOOST_TEST(testC(S("abcdefghij"), 0, 10, "abcdefghij", 10, 0)); - BOOST_TEST(testC(S("abcdefghij"), 0, 10, "abcdefghijklmnopqrst", 0, 10)); - BOOST_TEST(testC(S("abcdefghij"), 0, 10, "abcdefghijklmnopqrst", 1, 9)); - BOOST_TEST(testC(S("abcdefghij"), 0, 10, "abcdefghijklmnopqrst", 10, 0)); - BOOST_TEST(testC(S("abcdefghij"), 0, 10, "abcdefghijklmnopqrst", 19, -9)); - BOOST_TEST(testC(S("abcdefghij"), 0, 10, "abcdefghijklmnopqrst", 20, -10)); - BOOST_TEST(testC(S("abcdefghij"), 0, 11, "", 0, 10)); - BOOST_TEST(testC(S("abcdefghij"), 0, 11, "abcde", 0, 10)); - BOOST_TEST(testC(S("abcdefghij"), 0, 11, "abcde", 1, 9)); - BOOST_TEST(testC(S("abcdefghij"), 0, 11, "abcde", 2, 8)); - BOOST_TEST(testC(S("abcdefghij"), 0, 11, "abcde", 4, 6)); - BOOST_TEST(testC(S("abcdefghij"), 0, 11, "abcde", 5, 5)); - BOOST_TEST(testC(S("abcdefghij"), 0, 11, "abcdefghij", 0, 10)); - BOOST_TEST(testC(S("abcdefghij"), 0, 11, "abcdefghij", 1, 9)); - BOOST_TEST(testC(S("abcdefghij"), 0, 11, "abcdefghij", 5, 5)); - BOOST_TEST(testC(S("abcdefghij"), 0, 11, "abcdefghij", 9, 1)); - BOOST_TEST(testC(S("abcdefghij"), 0, 11, "abcdefghij", 10, 0)); - BOOST_TEST(testC(S("abcdefghij"), 0, 11, "abcdefghijklmnopqrst", 0, 10)); - BOOST_TEST(testC(S("abcdefghij"), 0, 11, "abcdefghijklmnopqrst", 1, 9)); - BOOST_TEST(testC(S("abcdefghij"), 0, 11, "abcdefghijklmnopqrst", 10, 0)); - BOOST_TEST(testC(S("abcdefghij"), 0, 11, "abcdefghijklmnopqrst", 19, -9)); - BOOST_TEST(testC(S("abcdefghij"), 0, 11, "abcdefghijklmnopqrst", 20, -10)); - BOOST_TEST(testC(S("abcdefghij"), 1, 0, "", 0, 0)); - BOOST_TEST(testC(S("abcdefghij"), 1, 0, "abcde", 0, 0)); - BOOST_TEST(testC(S("abcdefghij"), 1, 0, "abcde", 1, -1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 0, "abcde", 2, -2)); - BOOST_TEST(testC(S("abcdefghij"), 1, 0, "abcde", 4, -4)); - BOOST_TEST(testC(S("abcdefghij"), 1, 0, "abcde", 5, -5)); - BOOST_TEST(testC(S("abcdefghij"), 1, 0, "abcdefghij", 0, 0)); - BOOST_TEST(testC(S("abcdefghij"), 1, 0, "abcdefghij", 1, -1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 0, "abcdefghij", 5, -5)); - BOOST_TEST(testC(S("abcdefghij"), 1, 0, "abcdefghij", 9, -9)); - BOOST_TEST(testC(S("abcdefghij"), 1, 0, "abcdefghij", 10, -10)); - BOOST_TEST(testC(S("abcdefghij"), 1, 0, "abcdefghijklmnopqrst", 0, 0)); - BOOST_TEST(testC(S("abcdefghij"), 1, 0, "abcdefghijklmnopqrst", 1, -1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 0, "abcdefghijklmnopqrst", 10, -10)); - BOOST_TEST(testC(S("abcdefghij"), 1, 0, "abcdefghijklmnopqrst", 19, -19)); - BOOST_TEST(testC(S("abcdefghij"), 1, 0, "abcdefghijklmnopqrst", 20, -20)); - BOOST_TEST(testC(S("abcdefghij"), 1, 1, "", 0, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 1, "abcde", 0, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 1, "abcde", 1, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 1, "abcde", 2, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 1, "abcde", 4, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 1, "abcde", 5, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 1, "abcdefghij", 0, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 1, "abcdefghij", 1, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 1, "abcdefghij", 5, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 1, "abcdefghij", 9, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 1, "abcdefghij", 10, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 1, "abcdefghijklmnopqrst", 0, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 1, "abcdefghijklmnopqrst", 1, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 1, "abcdefghijklmnopqrst", 10, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 1, "abcdefghijklmnopqrst", 19, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 1, "abcdefghijklmnopqrst", 20, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 4, "", 0, 4)); - BOOST_TEST(testC(S("abcdefghij"), 1, 4, "abcde", 0, 4)); - BOOST_TEST(testC(S("abcdefghij"), 1, 4, "abcde", 1, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 4, "abcde", 2, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 4, "abcde", 4, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 4, "abcde", 5, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 4, "abcdefghij", 0, 4)); - BOOST_TEST(testC(S("abcdefghij"), 1, 4, "abcdefghij", 1, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 4, "abcdefghij", 5, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 4, "abcdefghij", 9, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 4, "abcdefghij", 10, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 4, "abcdefghijklmnopqrst", 0, 4)); - BOOST_TEST(testC(S("abcdefghij"), 1, 4, "abcdefghijklmnopqrst", 1, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 4, "abcdefghijklmnopqrst", 10, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 4, "abcdefghijklmnopqrst", 19, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 4, "abcdefghijklmnopqrst", 20, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 8, "", 0, 8)); - BOOST_TEST(testC(S("abcdefghij"), 1, 8, "abcde", 0, 8)); - BOOST_TEST(testC(S("abcdefghij"), 1, 8, "abcde", 1, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 8, "abcde", 2, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 8, "abcde", 4, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 8, "abcde", 5, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 8, "abcdefghij", 0, 8)); - BOOST_TEST(testC(S("abcdefghij"), 1, 8, "abcdefghij", 1, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 8, "abcdefghij", 5, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 8, "abcdefghij", 9, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 8, "abcdefghij", 10, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 8, "abcdefghijklmnopqrst", 0, 8)); - BOOST_TEST(testC(S("abcdefghij"), 1, 8, "abcdefghijklmnopqrst", 1, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 8, "abcdefghijklmnopqrst", 10, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 8, "abcdefghijklmnopqrst", 19, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 8, "abcdefghijklmnopqrst", 20, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 9, "", 0, 9)); - BOOST_TEST(testC(S("abcdefghij"), 1, 9, "abcde", 0, 9)); - BOOST_TEST(testC(S("abcdefghij"), 1, 9, "abcde", 1, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 9, "abcde", 2, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 9, "abcde", 4, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 9, "abcde", 5, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 9, "abcdefghij", 0, 9)); - BOOST_TEST(testC(S("abcdefghij"), 1, 9, "abcdefghij", 1, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 9, "abcdefghij", 5, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 9, "abcdefghij", 9, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 9, "abcdefghij", 10, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 9, "abcdefghijklmnopqrst", 0, 9)); - BOOST_TEST(testC(S("abcdefghij"), 1, 9, "abcdefghijklmnopqrst", 1, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 9, "abcdefghijklmnopqrst", 10, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 9, "abcdefghijklmnopqrst", 19, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 9, "abcdefghijklmnopqrst", 20, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 10, "", 0, 9)); - BOOST_TEST(testC(S("abcdefghij"), 1, 10, "abcde", 0, 9)); - BOOST_TEST(testC(S("abcdefghij"), 1, 10, "abcde", 1, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 10, "abcde", 2, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 10, "abcde", 4, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 10, "abcde", 5, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 10, "abcdefghij", 0, 9)); - BOOST_TEST(testC(S("abcdefghij"), 1, 10, "abcdefghij", 1, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 10, "abcdefghij", 5, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 10, "abcdefghij", 9, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 10, "abcdefghij", 10, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 10, "abcdefghijklmnopqrst", 0, 9)); - BOOST_TEST(testC(S("abcdefghij"), 1, 10, "abcdefghijklmnopqrst", 1, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 10, "abcdefghijklmnopqrst", 10, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 10, "abcdefghijklmnopqrst", 19, 1)); - BOOST_TEST(testC(S("abcdefghij"), 1, 10, "abcdefghijklmnopqrst", 20, 1)); - BOOST_TEST(testC(S("abcdefghij"), 5, 0, "", 0, 0)); - BOOST_TEST(testC(S("abcdefghij"), 5, 0, "abcde", 0, 0)); - BOOST_TEST(testC(S("abcdefghij"), 5, 0, "abcde", 1, -1)); - BOOST_TEST(testC(S("abcdefghij"), 5, 0, "abcde", 2, -2)); - BOOST_TEST(testC(S("abcdefghij"), 5, 0, "abcde", 4, -4)); - BOOST_TEST(testC(S("abcdefghij"), 5, 0, "abcde", 5, -5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 0, "abcdefghij", 0, 0)); - BOOST_TEST(testC(S("abcdefghij"), 5, 0, "abcdefghij", 1, -1)); - BOOST_TEST(testC(S("abcdefghij"), 5, 0, "abcdefghij", 5, -5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 0, "abcdefghij", 9, -9)); - BOOST_TEST(testC(S("abcdefghij"), 5, 0, "abcdefghij", 10, -10)); - BOOST_TEST(testC(S("abcdefghij"), 5, 0, "abcdefghijklmnopqrst", 0, 0)); - BOOST_TEST(testC(S("abcdefghij"), 5, 0, "abcdefghijklmnopqrst", 1, -1)); - BOOST_TEST(testC(S("abcdefghij"), 5, 0, "abcdefghijklmnopqrst", 10, -10)); - BOOST_TEST(testC(S("abcdefghij"), 5, 0, "abcdefghijklmnopqrst", 19, -19)); - BOOST_TEST(testC(S("abcdefghij"), 5, 0, "abcdefghijklmnopqrst", 20, -20)); - BOOST_TEST(testC(S("abcdefghij"), 5, 1, "", 0, 1)); - BOOST_TEST(testC(S("abcdefghij"), 5, 1, "abcde", 0, 1)); - BOOST_TEST(testC(S("abcdefghij"), 5, 1, "abcde", 1, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 1, "abcde", 2, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 1, "abcde", 4, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 1, "abcde", 5, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 1, "abcdefghij", 0, 1)); - BOOST_TEST(testC(S("abcdefghij"), 5, 1, "abcdefghij", 1, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 1, "abcdefghij", 5, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 1, "abcdefghij", 9, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 1, "abcdefghij", 10, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 1, "abcdefghijklmnopqrst", 0, 1)); - BOOST_TEST(testC(S("abcdefghij"), 5, 1, "abcdefghijklmnopqrst", 1, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 1, "abcdefghijklmnopqrst", 10, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 1, "abcdefghijklmnopqrst", 19, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 1, "abcdefghijklmnopqrst", 20, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 2, "", 0, 2)); - BOOST_TEST(testC(S("abcdefghij"), 5, 2, "abcde", 0, 2)); - BOOST_TEST(testC(S("abcdefghij"), 5, 2, "abcde", 1, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 2, "abcde", 2, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 2, "abcde", 4, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 2, "abcde", 5, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 2, "abcdefghij", 0, 2)); - BOOST_TEST(testC(S("abcdefghij"), 5, 2, "abcdefghij", 1, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 2, "abcdefghij", 5, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 2, "abcdefghij", 9, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 2, "abcdefghij", 10, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 2, "abcdefghijklmnopqrst", 0, 2)); - BOOST_TEST(testC(S("abcdefghij"), 5, 2, "abcdefghijklmnopqrst", 1, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 2, "abcdefghijklmnopqrst", 10, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 2, "abcdefghijklmnopqrst", 19, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 2, "abcdefghijklmnopqrst", 20, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 4, "", 0, 4)); - BOOST_TEST(testC(S("abcdefghij"), 5, 4, "abcde", 0, 4)); - BOOST_TEST(testC(S("abcdefghij"), 5, 4, "abcde", 1, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 4, "abcde", 2, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 4, "abcde", 4, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 4, "abcde", 5, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 4, "abcdefghij", 0, 4)); - BOOST_TEST(testC(S("abcdefghij"), 5, 4, "abcdefghij", 1, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 4, "abcdefghij", 5, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 4, "abcdefghij", 9, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 4, "abcdefghij", 10, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 4, "abcdefghijklmnopqrst", 0, 4)); - BOOST_TEST(testC(S("abcdefghij"), 5, 4, "abcdefghijklmnopqrst", 1, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 4, "abcdefghijklmnopqrst", 10, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 4, "abcdefghijklmnopqrst", 19, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 4, "abcdefghijklmnopqrst", 20, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 5, "", 0, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 5, "abcde", 0, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 5, "abcde", 1, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 5, "abcde", 2, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 5, "abcde", 4, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 5, "abcde", 5, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 5, "abcdefghij", 0, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 5, "abcdefghij", 1, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 5, "abcdefghij", 5, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 5, "abcdefghij", 9, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 5, "abcdefghij", 10, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 5, "abcdefghijklmnopqrst", 0, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 5, "abcdefghijklmnopqrst", 1, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 5, "abcdefghijklmnopqrst", 10, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 5, "abcdefghijklmnopqrst", 19, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 5, "abcdefghijklmnopqrst", 20, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 6, "", 0, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 6, "abcde", 0, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 6, "abcde", 1, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 6, "abcde", 2, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 6, "abcde", 4, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 6, "abcde", 5, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 6, "abcdefghij", 0, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 6, "abcdefghij", 1, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 6, "abcdefghij", 5, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 6, "abcdefghij", 9, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 6, "abcdefghij", 10, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 6, "abcdefghijklmnopqrst", 0, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 6, "abcdefghijklmnopqrst", 1, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 6, "abcdefghijklmnopqrst", 10, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 6, "abcdefghijklmnopqrst", 19, 5)); - BOOST_TEST(testC(S("abcdefghij"), 5, 6, "abcdefghijklmnopqrst", 20, 5)); - BOOST_TEST(testC(S("abcdefghij"), 9, 0, "", 0, 0)); - BOOST_TEST(testC(S("abcdefghij"), 9, 0, "abcde", 0, 0)); - BOOST_TEST(testC(S("abcdefghij"), 9, 0, "abcde", 1, -1)); - BOOST_TEST(testC(S("abcdefghij"), 9, 0, "abcde", 2, -2)); - BOOST_TEST(testC(S("abcdefghij"), 9, 0, "abcde", 4, -4)); - BOOST_TEST(testC(S("abcdefghij"), 9, 0, "abcde", 5, -5)); - BOOST_TEST(testC(S("abcdefghij"), 9, 0, "abcdefghij", 0, 0)); - BOOST_TEST(testC(S("abcdefghij"), 9, 0, "abcdefghij", 1, -1)); - BOOST_TEST(testC(S("abcdefghij"), 9, 0, "abcdefghij", 5, -5)); - BOOST_TEST(testC(S("abcdefghij"), 9, 0, "abcdefghij", 9, -9)); - BOOST_TEST(testC(S("abcdefghij"), 9, 0, "abcdefghij", 10, -10)); - BOOST_TEST(testC(S("abcdefghij"), 9, 0, "abcdefghijklmnopqrst", 0, 0)); - BOOST_TEST(testC(S("abcdefghij"), 9, 0, "abcdefghijklmnopqrst", 1, -1)); - BOOST_TEST(testC(S("abcdefghij"), 9, 0, "abcdefghijklmnopqrst", 10, -10)); - BOOST_TEST(testC(S("abcdefghij"), 9, 0, "abcdefghijklmnopqrst", 19, -19)); - BOOST_TEST(testC(S("abcdefghij"), 9, 0, "abcdefghijklmnopqrst", 20, -20)); - BOOST_TEST(testC(S("abcdefghij"), 9, 1, "", 0, 1)); - BOOST_TEST(testC(S("abcdefghij"), 9, 1, "abcde", 0, 1)); - BOOST_TEST(testC(S("abcdefghij"), 9, 1, "abcde", 1, 9)); - BOOST_TEST(testC(S("abcdefghij"), 9, 1, "abcde", 2, 9)); - BOOST_TEST(testC(S("abcdefghij"), 9, 1, "abcde", 4, 9)); - BOOST_TEST(testC(S("abcdefghij"), 9, 1, "abcde", 5, 9)); - BOOST_TEST(testC(S("abcdefghij"), 9, 1, "abcdefghij", 0, 1)); - BOOST_TEST(testC(S("abcdefghij"), 9, 1, "abcdefghij", 1, 9)); - BOOST_TEST(testC(S("abcdefghij"), 9, 1, "abcdefghij", 5, 9)); - BOOST_TEST(testC(S("abcdefghij"), 9, 1, "abcdefghij", 9, 9)); - BOOST_TEST(testC(S("abcdefghij"), 9, 1, "abcdefghij", 10, 9)); - BOOST_TEST(testC(S("abcdefghij"), 9, 1, "abcdefghijklmnopqrst", 0, 1)); - BOOST_TEST(testC(S("abcdefghij"), 9, 1, "abcdefghijklmnopqrst", 1, 9)); - BOOST_TEST(testC(S("abcdefghij"), 9, 1, "abcdefghijklmnopqrst", 10, 9)); - BOOST_TEST(testC(S("abcdefghij"), 9, 1, "abcdefghijklmnopqrst", 19, 9)); - BOOST_TEST(testC(S("abcdefghij"), 9, 1, "abcdefghijklmnopqrst", 20, 9)); - BOOST_TEST(testC(S("abcdefghij"), 9, 2, "", 0, 1)); - BOOST_TEST(testC(S("abcdefghij"), 9, 2, "abcde", 0, 1)); - BOOST_TEST(testC(S("abcdefghij"), 9, 2, "abcde", 1, 9)); - BOOST_TEST(testC(S("abcdefghij"), 9, 2, "abcde", 2, 9)); - BOOST_TEST(testC(S("abcdefghij"), 9, 2, "abcde", 4, 9)); - BOOST_TEST(testC(S("abcdefghij"), 9, 2, "abcde", 5, 9)); - BOOST_TEST(testC(S("abcdefghij"), 9, 2, "abcdefghij", 0, 1)); - BOOST_TEST(testC(S("abcdefghij"), 9, 2, "abcdefghij", 1, 9)); - BOOST_TEST(testC(S("abcdefghij"), 9, 2, "abcdefghij", 5, 9)); - BOOST_TEST(testC(S("abcdefghij"), 9, 2, "abcdefghij", 9, 9)); - BOOST_TEST(testC(S("abcdefghij"), 9, 2, "abcdefghij", 10, 9)); - BOOST_TEST(testC(S("abcdefghij"), 9, 2, "abcdefghijklmnopqrst", 0, 1)); - BOOST_TEST(testC(S("abcdefghij"), 9, 2, "abcdefghijklmnopqrst", 1, 9)); - BOOST_TEST(testC(S("abcdefghij"), 9, 2, "abcdefghijklmnopqrst", 10, 9)); - BOOST_TEST(testC(S("abcdefghij"), 9, 2, "abcdefghijklmnopqrst", 19, 9)); - BOOST_TEST(testC(S("abcdefghij"), 9, 2, "abcdefghijklmnopqrst", 20, 9)); - BOOST_TEST(testC(S("abcdefghij"), 10, 0, "", 0, 0)); - BOOST_TEST(testC(S("abcdefghij"), 10, 0, "abcde", 0, 0)); - BOOST_TEST(testC(S("abcdefghij"), 10, 0, "abcde", 1, -1)); - BOOST_TEST(testC(S("abcdefghij"), 10, 0, "abcde", 2, -2)); - BOOST_TEST(testC(S("abcdefghij"), 10, 0, "abcde", 4, -4)); - BOOST_TEST(testC(S("abcdefghij"), 10, 0, "abcde", 5, -5)); - BOOST_TEST(testC(S("abcdefghij"), 10, 0, "abcdefghij", 0, 0)); - BOOST_TEST(testC(S("abcdefghij"), 10, 0, "abcdefghij", 1, -1)); - BOOST_TEST(testC(S("abcdefghij"), 10, 0, "abcdefghij", 5, -5)); - BOOST_TEST(testC(S("abcdefghij"), 10, 0, "abcdefghij", 9, -9)); - BOOST_TEST(testC(S("abcdefghij"), 10, 0, "abcdefghij", 10, -10)); - BOOST_TEST(testC(S("abcdefghij"), 10, 0, "abcdefghijklmnopqrst", 0, 0)); - BOOST_TEST(testC(S("abcdefghij"), 10, 0, "abcdefghijklmnopqrst", 1, -1)); - BOOST_TEST(testC(S("abcdefghij"), 10, 0, "abcdefghijklmnopqrst", 10, -10)); - BOOST_TEST(testC(S("abcdefghij"), 10, 0, "abcdefghijklmnopqrst", 19, -19)); - BOOST_TEST(testC(S("abcdefghij"), 10, 0, "abcdefghijklmnopqrst", 20, -20)); - BOOST_TEST(testC(S("abcdefghij"), 10, 1, "", 0, 0)); - BOOST_TEST(testC(S("abcdefghij"), 10, 1, "abcde", 0, 0)); - BOOST_TEST(testC(S("abcdefghij"), 10, 1, "abcde", 1, -1)); - BOOST_TEST(testC(S("abcdefghij"), 10, 1, "abcde", 2, -2)); - BOOST_TEST(testC(S("abcdefghij"), 10, 1, "abcde", 4, -4)); - BOOST_TEST(testC(S("abcdefghij"), 10, 1, "abcde", 5, -5)); - BOOST_TEST(testC(S("abcdefghij"), 10, 1, "abcdefghij", 0, 0)); - BOOST_TEST(testC(S("abcdefghij"), 10, 1, "abcdefghij", 1, -1)); - BOOST_TEST(testC(S("abcdefghij"), 10, 1, "abcdefghij", 5, -5)); - BOOST_TEST(testC(S("abcdefghij"), 10, 1, "abcdefghij", 9, -9)); - BOOST_TEST(testC(S("abcdefghij"), 10, 1, "abcdefghij", 10, -10)); - BOOST_TEST(testC(S("abcdefghij"), 10, 1, "abcdefghijklmnopqrst", 0, 0)); - BOOST_TEST(testC(S("abcdefghij"), 10, 1, "abcdefghijklmnopqrst", 1, -1)); - BOOST_TEST(testC(S("abcdefghij"), 10, 1, "abcdefghijklmnopqrst", 10, -10)); - BOOST_TEST(testC(S("abcdefghij"), 10, 1, "abcdefghijklmnopqrst", 19, -19)); - BOOST_TEST(testC(S("abcdefghij"), 10, 1, "abcdefghijklmnopqrst", 20, -20)); - BOOST_TEST(testC(S("abcdefghij"), 11, 0, "", 0, 0)); - BOOST_TEST(testC(S("abcdefghij"), 11, 0, "abcde", 0, 0)); - BOOST_TEST(testC(S("abcdefghij"), 11, 0, "abcde", 1, 0)); - BOOST_TEST(testC(S("abcdefghij"), 11, 0, "abcde", 2, 0)); - BOOST_TEST(testC(S("abcdefghij"), 11, 0, "abcde", 4, 0)); - BOOST_TEST(testC(S("abcdefghij"), 11, 0, "abcde", 5, 0)); - BOOST_TEST(testC(S("abcdefghij"), 11, 0, "abcdefghij", 0, 0)); - BOOST_TEST(testC(S("abcdefghij"), 11, 0, "abcdefghij", 1, 0)); - BOOST_TEST(testC(S("abcdefghij"), 11, 0, "abcdefghij", 5, 0)); - BOOST_TEST(testC(S("abcdefghij"), 11, 0, "abcdefghij", 9, 0)); - BOOST_TEST(testC(S("abcdefghij"), 11, 0, "abcdefghij", 10, 0)); - BOOST_TEST(testC(S("abcdefghij"), 11, 0, "abcdefghijklmnopqrst", 0, 0)); - BOOST_TEST(testC(S("abcdefghij"), 11, 0, "abcdefghijklmnopqrst", 1, 0)); - BOOST_TEST(testC(S("abcdefghij"), 11, 0, "abcdefghijklmnopqrst", 10, 0)); - BOOST_TEST(testC(S("abcdefghij"), 11, 0, "abcdefghijklmnopqrst", 19, 0)); - BOOST_TEST(testC(S("abcdefghij"), 11, 0, "abcdefghijklmnopqrst", 20, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 0, "", 0, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 0, "abcde", 0, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 0, "abcde", 1, -1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 0, "abcde", 2, -2)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 0, "abcde", 4, -4)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 0, "abcde", 5, -5)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghij", 0, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghij", 1, -1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghij", 5, -5)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghij", 9, -9)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghij", 10, -10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghijklmnopqrst", 0, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghijklmnopqrst", 1, -1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghijklmnopqrst", 10, -10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghijklmnopqrst", 19, -19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghijklmnopqrst", 20, -20)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 1, "", 0, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 1, "abcde", 0, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 1, "abcde", 1, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 1, "abcde", 2, -1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 1, "abcde", 4, -3)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 1, "abcde", 5, -4)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghij", 0, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghij", 1, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghij", 5, -4)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghij", 9, -8)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghij", 10, -9)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghijklmnopqrst", 0, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghijklmnopqrst", 1, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghijklmnopqrst", 10, -9)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghijklmnopqrst", 19, -18)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghijklmnopqrst", 20, -19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 10, "", 0, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 10, "abcde", 0, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 10, "abcde", 1, 9)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 10, "abcde", 2, 8)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 10, "abcde", 4, 6)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 10, "abcde", 5, 5)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghij", 0, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghij", 1, 9)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghij", 5, 5)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghij", 9, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghij", 10, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghijklmnopqrst", 0, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghijklmnopqrst", 1, 9)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghijklmnopqrst", 10, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghijklmnopqrst", 19, -9)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghijklmnopqrst", 20, -10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 19, "", 0, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 19, "abcde", 0, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 19, "abcde", 1, 18)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 19, "abcde", 2, 17)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 19, "abcde", 4, 15)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 19, "abcde", 5, 14)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghij", 0, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghij", 1, 18)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghij", 5, 14)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghij", 9, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghij", 10, 9)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghijklmnopqrst", 0, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghijklmnopqrst", 1, 18)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghijklmnopqrst", 10, 9)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghijklmnopqrst", 19, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghijklmnopqrst", 20, -1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 20, "", 0, 20)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 20, "abcde", 0, 20)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 20, "abcde", 1, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 20, "abcde", 2, 18)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 20, "abcde", 4, 16)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 20, "abcde", 5, 15)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghij", 0, 20)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghij", 1, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghij", 5, 15)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghij", 9, 11)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghij", 10, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghijklmnopqrst", 0, 20)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghijklmnopqrst", 1, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghijklmnopqrst", 10, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghijklmnopqrst", 19, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghijklmnopqrst", 20, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 21, "", 0, 20)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 21, "abcde", 0, 20)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 21, "abcde", 1, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 21, "abcde", 2, 18)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 21, "abcde", 4, 16)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 21, "abcde", 5, 15)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghij", 0, 20)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghij", 1, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghij", 5, 15)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghij", 9, 11)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghij", 10, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghijklmnopqrst", 0, 20)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghijklmnopqrst", 1, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghijklmnopqrst", 10, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghijklmnopqrst", 19, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghijklmnopqrst", 20, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 0, "", 0, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 0, "abcde", 0, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 0, "abcde", 1, -1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 0, "abcde", 2, -2)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 0, "abcde", 4, -4)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 0, "abcde", 5, -5)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghij", 0, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghij", 1, -1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghij", 5, -5)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghij", 9, -9)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghij", 10, -10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghijklmnopqrst", 0, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghijklmnopqrst", 1, -1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghijklmnopqrst", 10, -10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghijklmnopqrst", 19, -19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghijklmnopqrst", 20, -20)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 1, "", 0, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 1, "abcde", 0, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 1, "abcde", 1, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 1, "abcde", 2, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 1, "abcde", 4, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 1, "abcde", 5, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghij", 0, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghij", 1, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghij", 5, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghij", 9, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghij", 10, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghijklmnopqrst", 0, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghijklmnopqrst", 1, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghijklmnopqrst", 10, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghijklmnopqrst", 19, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghijklmnopqrst", 20, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 9, "", 0, 9)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 9, "abcde", 0, 9)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 9, "abcde", 1, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 9, "abcde", 2, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 9, "abcde", 4, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 9, "abcde", 5, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghij", 0, 9)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghij", 1, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghij", 5, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghij", 9, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghij", 10, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghijklmnopqrst", 0, 9)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghijklmnopqrst", 1, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghijklmnopqrst", 10, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghijklmnopqrst", 19, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghijklmnopqrst", 20, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 18, "", 0, 18)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 18, "abcde", 0, 18)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 18, "abcde", 1, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 18, "abcde", 2, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 18, "abcde", 4, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 18, "abcde", 5, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghij", 0, 18)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghij", 1, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghij", 5, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghij", 9, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghij", 10, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghijklmnopqrst", 0, 18)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghijklmnopqrst", 1, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghijklmnopqrst", 10, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghijklmnopqrst", 19, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghijklmnopqrst", 20, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 19, "", 0, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 19, "abcde", 0, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 19, "abcde", 1, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 19, "abcde", 2, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 19, "abcde", 4, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 19, "abcde", 5, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghij", 0, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghij", 1, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghij", 5, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghij", 9, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghij", 10, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghijklmnopqrst", 0, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghijklmnopqrst", 1, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghijklmnopqrst", 10, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghijklmnopqrst", 19, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghijklmnopqrst", 20, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 20, "", 0, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 20, "abcde", 0, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 20, "abcde", 1, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 20, "abcde", 2, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 20, "abcde", 4, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 20, "abcde", 5, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghij", 0, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghij", 1, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghij", 5, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghij", 9, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghij", 10, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghijklmnopqrst", 0, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghijklmnopqrst", 1, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghijklmnopqrst", 10, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghijklmnopqrst", 19, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghijklmnopqrst", 20, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 0, "", 0, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 0, "abcde", 0, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 0, "abcde", 1, -1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 0, "abcde", 2, -2)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 0, "abcde", 4, -4)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 0, "abcde", 5, -5)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghij", 0, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghij", 1, -1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghij", 5, -5)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghij", 9, -9)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghij", 10, -10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghijklmnopqrst", 0, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghijklmnopqrst", 1, -1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghijklmnopqrst", 10, -10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghijklmnopqrst", 19, -19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghijklmnopqrst", 20, -20)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 1, "", 0, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 1, "abcde", 0, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 1, "abcde", 1, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 1, "abcde", 2, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 1, "abcde", 4, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 1, "abcde", 5, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghij", 0, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghij", 1, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghij", 5, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghij", 9, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghij", 10, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghijklmnopqrst", 0, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghijklmnopqrst", 1, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghijklmnopqrst", 10, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghijklmnopqrst", 19, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghijklmnopqrst", 20, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 5, "", 0, 5)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 5, "abcde", 0, 5)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 5, "abcde", 1, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 5, "abcde", 2, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 5, "abcde", 4, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 5, "abcde", 5, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghij", 0, 5)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghij", 1, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghij", 5, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghij", 9, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghij", 10, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghijklmnopqrst", 0, 5)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghijklmnopqrst", 1, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghijklmnopqrst", 10, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghijklmnopqrst", 19, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghijklmnopqrst", 20, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 9, "", 0, 9)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 9, "abcde", 0, 9)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 9, "abcde", 1, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 9, "abcde", 2, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 9, "abcde", 4, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 9, "abcde", 5, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghij", 0, 9)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghij", 1, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghij", 5, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghij", 9, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghij", 10, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghijklmnopqrst", 0, 9)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghijklmnopqrst", 1, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghijklmnopqrst", 10, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghijklmnopqrst", 19, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghijklmnopqrst", 20, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 10, "", 0, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 10, "abcde", 0, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 10, "abcde", 1, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 10, "abcde", 2, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 10, "abcde", 4, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 10, "abcde", 5, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghij", 0, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghij", 1, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghij", 5, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghij", 9, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghij", 10, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghijklmnopqrst", 0, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghijklmnopqrst", 1, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghijklmnopqrst", 10, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghijklmnopqrst", 19, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghijklmnopqrst", 20, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 11, "", 0, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 11, "abcde", 0, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 11, "abcde", 1, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 11, "abcde", 2, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 11, "abcde", 4, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 11, "abcde", 5, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghij", 0, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghij", 1, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghij", 5, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghij", 9, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghij", 10, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghijklmnopqrst", 0, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghijklmnopqrst", 1, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghijklmnopqrst", 10, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghijklmnopqrst", 19, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghijklmnopqrst", 20, 10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 0, "", 0, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 0, "abcde", 0, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 0, "abcde", 1, -1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 0, "abcde", 2, -2)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 0, "abcde", 4, -4)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 0, "abcde", 5, -5)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghij", 0, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghij", 1, -1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghij", 5, -5)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghij", 9, -9)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghij", 10, -10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghijklmnopqrst", 0, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghijklmnopqrst", 1, -1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghijklmnopqrst", 10, -10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghijklmnopqrst", 19, -19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghijklmnopqrst", 20, -20)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 1, "", 0, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 1, "abcde", 0, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 1, "abcde", 1, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 1, "abcde", 2, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 1, "abcde", 4, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 1, "abcde", 5, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghij", 0, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghij", 1, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghij", 5, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghij", 9, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghij", 10, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghijklmnopqrst", 0, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghijklmnopqrst", 1, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghijklmnopqrst", 10, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghijklmnopqrst", 19, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghijklmnopqrst", 20, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 2, "", 0, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 2, "abcde", 0, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 2, "abcde", 1, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 2, "abcde", 2, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 2, "abcde", 4, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 2, "abcde", 5, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghij", 0, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghij", 1, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghij", 5, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghij", 9, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghij", 10, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghijklmnopqrst", 0, 1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghijklmnopqrst", 1, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghijklmnopqrst", 10, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghijklmnopqrst", 19, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghijklmnopqrst", 20, 19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 0, "", 0, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 0, "abcde", 0, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 0, "abcde", 1, -1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 0, "abcde", 2, -2)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 0, "abcde", 4, -4)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 0, "abcde", 5, -5)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghij", 0, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghij", 1, -1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghij", 5, -5)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghij", 9, -9)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghij", 10, -10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghijklmnopqrst", 0, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghijklmnopqrst", 1, -1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghijklmnopqrst", 10, -10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghijklmnopqrst", 19, -19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghijklmnopqrst", 20, -20)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 1, "", 0, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 1, "abcde", 0, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 1, "abcde", 1, -1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 1, "abcde", 2, -2)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 1, "abcde", 4, -4)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 1, "abcde", 5, -5)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghij", 0, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghij", 1, -1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghij", 5, -5)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghij", 9, -9)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghij", 10, -10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghijklmnopqrst", 0, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghijklmnopqrst", 1, -1)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghijklmnopqrst", 10, -10)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghijklmnopqrst", 19, -19)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghijklmnopqrst", 20, -20)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 21, 0, "", 0, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 21, 0, "abcde", 0, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 21, 0, "abcde", 1, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 21, 0, "abcde", 2, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 21, 0, "abcde", 4, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 21, 0, "abcde", 5, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghij", 0, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghij", 1, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghij", 5, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghij", 9, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghij", 10, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghijklmnopqrst", 0, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghijklmnopqrst", 1, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghijklmnopqrst", 10, 0)); - BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghijklmnopqrst", 19, 0)); + using S = static_string<400>; + BOOST_TEST(testC(S(""), 0, 0, "", 0, 0)); + BOOST_TEST(testC(S(""), 0, 0, "abcde", 0, 0)); + BOOST_TEST(testC(S(""), 0, 0, "abcde", 1, -1)); + BOOST_TEST(testC(S(""), 0, 0, "abcde", 2, -2)); + BOOST_TEST(testC(S(""), 0, 0, "abcde", 4, -4)); + BOOST_TEST(testC(S(""), 0, 0, "abcde", 5, -5)); + BOOST_TEST(testC(S(""), 0, 0, "abcdefghij", 0, 0)); + BOOST_TEST(testC(S(""), 0, 0, "abcdefghij", 1, -1)); + BOOST_TEST(testC(S(""), 0, 0, "abcdefghij", 5, -5)); + BOOST_TEST(testC(S(""), 0, 0, "abcdefghij", 9, -9)); + BOOST_TEST(testC(S(""), 0, 0, "abcdefghij", 10, -10)); + BOOST_TEST(testC(S(""), 0, 0, "abcdefghijklmnopqrst", 0, 0)); + BOOST_TEST(testC(S(""), 0, 0, "abcdefghijklmnopqrst", 1, -1)); + BOOST_TEST(testC(S(""), 0, 0, "abcdefghijklmnopqrst", 10, -10)); + BOOST_TEST(testC(S(""), 0, 0, "abcdefghijklmnopqrst", 19, -19)); + BOOST_TEST(testC(S(""), 0, 0, "abcdefghijklmnopqrst", 20, -20)); + BOOST_TEST(testC(S(""), 0, 1, "", 0, 0)); + BOOST_TEST(testC(S(""), 0, 1, "abcde", 0, 0)); + BOOST_TEST(testC(S(""), 0, 1, "abcde", 1, -1)); + BOOST_TEST(testC(S(""), 0, 1, "abcde", 2, -2)); + BOOST_TEST(testC(S(""), 0, 1, "abcde", 4, -4)); + BOOST_TEST(testC(S(""), 0, 1, "abcde", 5, -5)); + BOOST_TEST(testC(S(""), 0, 1, "abcdefghij", 0, 0)); + BOOST_TEST(testC(S(""), 0, 1, "abcdefghij", 1, -1)); + BOOST_TEST(testC(S(""), 0, 1, "abcdefghij", 5, -5)); + BOOST_TEST(testC(S(""), 0, 1, "abcdefghij", 9, -9)); + BOOST_TEST(testC(S(""), 0, 1, "abcdefghij", 10, -10)); + BOOST_TEST(testC(S(""), 0, 1, "abcdefghijklmnopqrst", 0, 0)); + BOOST_TEST(testC(S(""), 0, 1, "abcdefghijklmnopqrst", 1, -1)); + BOOST_TEST(testC(S(""), 0, 1, "abcdefghijklmnopqrst", 10, -10)); + BOOST_TEST(testC(S(""), 0, 1, "abcdefghijklmnopqrst", 19, -19)); + BOOST_TEST(testC(S(""), 0, 1, "abcdefghijklmnopqrst", 20, -20)); + BOOST_TEST(testC(S(""), 1, 0, "", 0, 0)); + BOOST_TEST(testC(S(""), 1, 0, "abcde", 0, 0)); + BOOST_TEST(testC(S(""), 1, 0, "abcde", 1, 0)); + BOOST_TEST(testC(S(""), 1, 0, "abcde", 2, 0)); + BOOST_TEST(testC(S(""), 1, 0, "abcde", 4, 0)); + BOOST_TEST(testC(S(""), 1, 0, "abcde", 5, 0)); + BOOST_TEST(testC(S(""), 1, 0, "abcdefghij", 0, 0)); + BOOST_TEST(testC(S(""), 1, 0, "abcdefghij", 1, 0)); + BOOST_TEST(testC(S(""), 1, 0, "abcdefghij", 5, 0)); + BOOST_TEST(testC(S(""), 1, 0, "abcdefghij", 9, 0)); + BOOST_TEST(testC(S(""), 1, 0, "abcdefghij", 10, 0)); + BOOST_TEST(testC(S(""), 1, 0, "abcdefghijklmnopqrst", 0, 0)); + BOOST_TEST(testC(S(""), 1, 0, "abcdefghijklmnopqrst", 1, 0)); + BOOST_TEST(testC(S(""), 1, 0, "abcdefghijklmnopqrst", 10, 0)); + BOOST_TEST(testC(S(""), 1, 0, "abcdefghijklmnopqrst", 19, 0)); + BOOST_TEST(testC(S(""), 1, 0, "abcdefghijklmnopqrst", 20, 0)); + BOOST_TEST(testC(S("abcde"), 0, 0, "", 0, 0)); + BOOST_TEST(testC(S("abcde"), 0, 0, "abcde", 0, 0)); + BOOST_TEST(testC(S("abcde"), 0, 0, "abcde", 1, -1)); + BOOST_TEST(testC(S("abcde"), 0, 0, "abcde", 2, -2)); + BOOST_TEST(testC(S("abcde"), 0, 0, "abcde", 4, -4)); + BOOST_TEST(testC(S("abcde"), 0, 0, "abcde", 5, -5)); + BOOST_TEST(testC(S("abcde"), 0, 0, "abcdefghij", 0, 0)); + BOOST_TEST(testC(S("abcde"), 0, 0, "abcdefghij", 1, -1)); + BOOST_TEST(testC(S("abcde"), 0, 0, "abcdefghij", 5, -5)); + BOOST_TEST(testC(S("abcde"), 0, 0, "abcdefghij", 9, -9)); + BOOST_TEST(testC(S("abcde"), 0, 0, "abcdefghij", 10, -10)); + BOOST_TEST(testC(S("abcde"), 0, 0, "abcdefghijklmnopqrst", 0, 0)); + BOOST_TEST(testC(S("abcde"), 0, 0, "abcdefghijklmnopqrst", 1, -1)); + BOOST_TEST(testC(S("abcde"), 0, 0, "abcdefghijklmnopqrst", 10, -10)); + BOOST_TEST(testC(S("abcde"), 0, 0, "abcdefghijklmnopqrst", 19, -19)); + BOOST_TEST(testC(S("abcde"), 0, 0, "abcdefghijklmnopqrst", 20, -20)); + BOOST_TEST(testC(S("abcde"), 0, 1, "", 0, 1)); + BOOST_TEST(testC(S("abcde"), 0, 1, "abcde", 0, 1)); + BOOST_TEST(testC(S("abcde"), 0, 1, "abcde", 1, 0)); + BOOST_TEST(testC(S("abcde"), 0, 1, "abcde", 2, -1)); + BOOST_TEST(testC(S("abcde"), 0, 1, "abcde", 4, -3)); + BOOST_TEST(testC(S("abcde"), 0, 1, "abcde", 5, -4)); + BOOST_TEST(testC(S("abcde"), 0, 1, "abcdefghij", 0, 1)); + BOOST_TEST(testC(S("abcde"), 0, 1, "abcdefghij", 1, 0)); + BOOST_TEST(testC(S("abcde"), 0, 1, "abcdefghij", 5, -4)); + BOOST_TEST(testC(S("abcde"), 0, 1, "abcdefghij", 9, -8)); + BOOST_TEST(testC(S("abcde"), 0, 1, "abcdefghij", 10, -9)); + BOOST_TEST(testC(S("abcde"), 0, 1, "abcdefghijklmnopqrst", 0, 1)); + BOOST_TEST(testC(S("abcde"), 0, 1, "abcdefghijklmnopqrst", 1, 0)); + BOOST_TEST(testC(S("abcde"), 0, 1, "abcdefghijklmnopqrst", 10, -9)); + BOOST_TEST(testC(S("abcde"), 0, 1, "abcdefghijklmnopqrst", 19, -18)); + BOOST_TEST(testC(S("abcde"), 0, 1, "abcdefghijklmnopqrst", 20, -19)); + BOOST_TEST(testC(S("abcde"), 0, 2, "", 0, 2)); + BOOST_TEST(testC(S("abcde"), 0, 2, "abcde", 0, 2)); + BOOST_TEST(testC(S("abcde"), 0, 2, "abcde", 1, 1)); + BOOST_TEST(testC(S("abcde"), 0, 2, "abcde", 2, 0)); + BOOST_TEST(testC(S("abcde"), 0, 2, "abcde", 4, -2)); + BOOST_TEST(testC(S("abcde"), 0, 2, "abcde", 5, -3)); + BOOST_TEST(testC(S("abcde"), 0, 2, "abcdefghij", 0, 2)); + BOOST_TEST(testC(S("abcde"), 0, 2, "abcdefghij", 1, 1)); + BOOST_TEST(testC(S("abcde"), 0, 2, "abcdefghij", 5, -3)); + BOOST_TEST(testC(S("abcde"), 0, 2, "abcdefghij", 9, -7)); + BOOST_TEST(testC(S("abcde"), 0, 2, "abcdefghij", 10, -8)); + BOOST_TEST(testC(S("abcde"), 0, 2, "abcdefghijklmnopqrst", 0, 2)); + BOOST_TEST(testC(S("abcde"), 0, 2, "abcdefghijklmnopqrst", 1, 1)); + BOOST_TEST(testC(S("abcde"), 0, 2, "abcdefghijklmnopqrst", 10, -8)); + BOOST_TEST(testC(S("abcde"), 0, 2, "abcdefghijklmnopqrst", 19, -17)); + BOOST_TEST(testC(S("abcde"), 0, 2, "abcdefghijklmnopqrst", 20, -18)); + BOOST_TEST(testC(S("abcde"), 0, 4, "", 0, 4)); + BOOST_TEST(testC(S("abcde"), 0, 4, "abcde", 0, 4)); + BOOST_TEST(testC(S("abcde"), 0, 4, "abcde", 1, 3)); + BOOST_TEST(testC(S("abcde"), 0, 4, "abcde", 2, 2)); + BOOST_TEST(testC(S("abcde"), 0, 4, "abcde", 4, 0)); + BOOST_TEST(testC(S("abcde"), 0, 4, "abcde", 5, -1)); + BOOST_TEST(testC(S("abcde"), 0, 4, "abcdefghij", 0, 4)); + BOOST_TEST(testC(S("abcde"), 0, 4, "abcdefghij", 1, 3)); + BOOST_TEST(testC(S("abcde"), 0, 4, "abcdefghij", 5, -1)); + BOOST_TEST(testC(S("abcde"), 0, 4, "abcdefghij", 9, -5)); + BOOST_TEST(testC(S("abcde"), 0, 4, "abcdefghij", 10, -6)); + BOOST_TEST(testC(S("abcde"), 0, 4, "abcdefghijklmnopqrst", 0, 4)); + BOOST_TEST(testC(S("abcde"), 0, 4, "abcdefghijklmnopqrst", 1, 3)); + BOOST_TEST(testC(S("abcde"), 0, 4, "abcdefghijklmnopqrst", 10, -6)); + BOOST_TEST(testC(S("abcde"), 0, 4, "abcdefghijklmnopqrst", 19, -15)); + BOOST_TEST(testC(S("abcde"), 0, 4, "abcdefghijklmnopqrst", 20, -16)); + BOOST_TEST(testC(S("abcde"), 0, 5, "", 0, 5)); + BOOST_TEST(testC(S("abcde"), 0, 5, "abcde", 0, 5)); + BOOST_TEST(testC(S("abcde"), 0, 5, "abcde", 1, 4)); + BOOST_TEST(testC(S("abcde"), 0, 5, "abcde", 2, 3)); + BOOST_TEST(testC(S("abcde"), 0, 5, "abcde", 4, 1)); + BOOST_TEST(testC(S("abcde"), 0, 5, "abcde", 5, 0)); + BOOST_TEST(testC(S("abcde"), 0, 5, "abcdefghij", 0, 5)); + BOOST_TEST(testC(S("abcde"), 0, 5, "abcdefghij", 1, 4)); + BOOST_TEST(testC(S("abcde"), 0, 5, "abcdefghij", 5, 0)); + BOOST_TEST(testC(S("abcde"), 0, 5, "abcdefghij", 9, -4)); + BOOST_TEST(testC(S("abcde"), 0, 5, "abcdefghij", 10, -5)); + BOOST_TEST(testC(S("abcde"), 0, 5, "abcdefghijklmnopqrst", 0, 5)); + BOOST_TEST(testC(S("abcde"), 0, 5, "abcdefghijklmnopqrst", 1, 4)); + BOOST_TEST(testC(S("abcde"), 0, 5, "abcdefghijklmnopqrst", 10, -5)); + BOOST_TEST(testC(S("abcde"), 0, 5, "abcdefghijklmnopqrst", 19, -14)); + BOOST_TEST(testC(S("abcde"), 0, 5, "abcdefghijklmnopqrst", 20, -15)); + BOOST_TEST(testC(S("abcde"), 0, 6, "", 0, 5)); + BOOST_TEST(testC(S("abcde"), 0, 6, "abcde", 0, 5)); + BOOST_TEST(testC(S("abcde"), 0, 6, "abcde", 1, 4)); + BOOST_TEST(testC(S("abcde"), 0, 6, "abcde", 2, 3)); + BOOST_TEST(testC(S("abcde"), 0, 6, "abcde", 4, 1)); + BOOST_TEST(testC(S("abcde"), 0, 6, "abcde", 5, 0)); + BOOST_TEST(testC(S("abcde"), 0, 6, "abcdefghij", 0, 5)); + BOOST_TEST(testC(S("abcde"), 0, 6, "abcdefghij", 1, 4)); + BOOST_TEST(testC(S("abcde"), 0, 6, "abcdefghij", 5, 0)); + BOOST_TEST(testC(S("abcde"), 0, 6, "abcdefghij", 9, -4)); + BOOST_TEST(testC(S("abcde"), 0, 6, "abcdefghij", 10, -5)); + BOOST_TEST(testC(S("abcde"), 0, 6, "abcdefghijklmnopqrst", 0, 5)); + BOOST_TEST(testC(S("abcde"), 0, 6, "abcdefghijklmnopqrst", 1, 4)); + BOOST_TEST(testC(S("abcde"), 0, 6, "abcdefghijklmnopqrst", 10, -5)); + BOOST_TEST(testC(S("abcde"), 0, 6, "abcdefghijklmnopqrst", 19, -14)); + BOOST_TEST(testC(S("abcde"), 0, 6, "abcdefghijklmnopqrst", 20, -15)); + BOOST_TEST(testC(S("abcde"), 1, 0, "", 0, 0)); + BOOST_TEST(testC(S("abcde"), 1, 0, "abcde", 0, 0)); + BOOST_TEST(testC(S("abcde"), 1, 0, "abcde", 1, -1)); + BOOST_TEST(testC(S("abcde"), 1, 0, "abcde", 2, -2)); + BOOST_TEST(testC(S("abcde"), 1, 0, "abcde", 4, -4)); + BOOST_TEST(testC(S("abcde"), 1, 0, "abcde", 5, -5)); + BOOST_TEST(testC(S("abcde"), 1, 0, "abcdefghij", 0, 0)); + BOOST_TEST(testC(S("abcde"), 1, 0, "abcdefghij", 1, -1)); + BOOST_TEST(testC(S("abcde"), 1, 0, "abcdefghij", 5, -5)); + BOOST_TEST(testC(S("abcde"), 1, 0, "abcdefghij", 9, -9)); + BOOST_TEST(testC(S("abcde"), 1, 0, "abcdefghij", 10, -10)); + BOOST_TEST(testC(S("abcde"), 1, 0, "abcdefghijklmnopqrst", 0, 0)); + BOOST_TEST(testC(S("abcde"), 1, 0, "abcdefghijklmnopqrst", 1, -1)); + BOOST_TEST(testC(S("abcde"), 1, 0, "abcdefghijklmnopqrst", 10, -10)); + BOOST_TEST(testC(S("abcde"), 1, 0, "abcdefghijklmnopqrst", 19, -19)); + BOOST_TEST(testC(S("abcde"), 1, 0, "abcdefghijklmnopqrst", 20, -20)); + BOOST_TEST(testC(S("abcde"), 1, 1, "", 0, 1)); + BOOST_TEST(testC(S("abcde"), 1, 1, "abcde", 0, 1)); + BOOST_TEST(testC(S("abcde"), 1, 1, "abcde", 1, 1)); + BOOST_TEST(testC(S("abcde"), 1, 1, "abcde", 2, 1)); + BOOST_TEST(testC(S("abcde"), 1, 1, "abcde", 4, 1)); + BOOST_TEST(testC(S("abcde"), 1, 1, "abcde", 5, 1)); + BOOST_TEST(testC(S("abcde"), 1, 1, "abcdefghij", 0, 1)); + BOOST_TEST(testC(S("abcde"), 1, 1, "abcdefghij", 1, 1)); + BOOST_TEST(testC(S("abcde"), 1, 1, "abcdefghij", 5, 1)); + BOOST_TEST(testC(S("abcde"), 1, 1, "abcdefghij", 9, 1)); + BOOST_TEST(testC(S("abcde"), 1, 1, "abcdefghij", 10, 1)); + BOOST_TEST(testC(S("abcde"), 1, 1, "abcdefghijklmnopqrst", 0, 1)); + BOOST_TEST(testC(S("abcde"), 1, 1, "abcdefghijklmnopqrst", 1, 1)); + BOOST_TEST(testC(S("abcde"), 1, 1, "abcdefghijklmnopqrst", 10, 1)); + BOOST_TEST(testC(S("abcde"), 1, 1, "abcdefghijklmnopqrst", 19, 1)); + BOOST_TEST(testC(S("abcde"), 1, 1, "abcdefghijklmnopqrst", 20, 1)); + BOOST_TEST(testC(S("abcde"), 1, 2, "", 0, 2)); + BOOST_TEST(testC(S("abcde"), 1, 2, "abcde", 0, 2)); + BOOST_TEST(testC(S("abcde"), 1, 2, "abcde", 1, 1)); + BOOST_TEST(testC(S("abcde"), 1, 2, "abcde", 2, 1)); + BOOST_TEST(testC(S("abcde"), 1, 2, "abcde", 4, 1)); + BOOST_TEST(testC(S("abcde"), 1, 2, "abcde", 5, 1)); + BOOST_TEST(testC(S("abcde"), 1, 2, "abcdefghij", 0, 2)); + BOOST_TEST(testC(S("abcde"), 1, 2, "abcdefghij", 1, 1)); + BOOST_TEST(testC(S("abcde"), 1, 2, "abcdefghij", 5, 1)); + BOOST_TEST(testC(S("abcde"), 1, 2, "abcdefghij", 9, 1)); + BOOST_TEST(testC(S("abcde"), 1, 2, "abcdefghij", 10, 1)); + BOOST_TEST(testC(S("abcde"), 1, 2, "abcdefghijklmnopqrst", 0, 2)); + BOOST_TEST(testC(S("abcde"), 1, 2, "abcdefghijklmnopqrst", 1, 1)); + BOOST_TEST(testC(S("abcde"), 1, 2, "abcdefghijklmnopqrst", 10, 1)); + BOOST_TEST(testC(S("abcde"), 1, 2, "abcdefghijklmnopqrst", 19, 1)); + BOOST_TEST(testC(S("abcde"), 1, 2, "abcdefghijklmnopqrst", 20, 1)); + BOOST_TEST(testC(S("abcde"), 1, 3, "", 0, 3)); + BOOST_TEST(testC(S("abcde"), 1, 3, "abcde", 0, 3)); + BOOST_TEST(testC(S("abcde"), 1, 3, "abcde", 1, 1)); + BOOST_TEST(testC(S("abcde"), 1, 3, "abcde", 2, 1)); + BOOST_TEST(testC(S("abcde"), 1, 3, "abcde", 4, 1)); + BOOST_TEST(testC(S("abcde"), 1, 3, "abcde", 5, 1)); + BOOST_TEST(testC(S("abcde"), 1, 3, "abcdefghij", 0, 3)); + BOOST_TEST(testC(S("abcde"), 1, 3, "abcdefghij", 1, 1)); + BOOST_TEST(testC(S("abcde"), 1, 3, "abcdefghij", 5, 1)); + BOOST_TEST(testC(S("abcde"), 1, 3, "abcdefghij", 9, 1)); + BOOST_TEST(testC(S("abcde"), 1, 3, "abcdefghij", 10, 1)); + BOOST_TEST(testC(S("abcde"), 1, 3, "abcdefghijklmnopqrst", 0, 3)); + BOOST_TEST(testC(S("abcde"), 1, 3, "abcdefghijklmnopqrst", 1, 1)); + BOOST_TEST(testC(S("abcde"), 1, 3, "abcdefghijklmnopqrst", 10, 1)); + BOOST_TEST(testC(S("abcde"), 1, 3, "abcdefghijklmnopqrst", 19, 1)); + BOOST_TEST(testC(S("abcde"), 1, 3, "abcdefghijklmnopqrst", 20, 1)); + BOOST_TEST(testC(S("abcde"), 1, 4, "", 0, 4)); + BOOST_TEST(testC(S("abcde"), 1, 4, "abcde", 0, 4)); + BOOST_TEST(testC(S("abcde"), 1, 4, "abcde", 1, 1)); + BOOST_TEST(testC(S("abcde"), 1, 4, "abcde", 2, 1)); + BOOST_TEST(testC(S("abcde"), 1, 4, "abcde", 4, 1)); + BOOST_TEST(testC(S("abcde"), 1, 4, "abcde", 5, 1)); + BOOST_TEST(testC(S("abcde"), 1, 4, "abcdefghij", 0, 4)); + BOOST_TEST(testC(S("abcde"), 1, 4, "abcdefghij", 1, 1)); + BOOST_TEST(testC(S("abcde"), 1, 4, "abcdefghij", 5, 1)); + BOOST_TEST(testC(S("abcde"), 1, 4, "abcdefghij", 9, 1)); + BOOST_TEST(testC(S("abcde"), 1, 4, "abcdefghij", 10, 1)); + BOOST_TEST(testC(S("abcde"), 1, 4, "abcdefghijklmnopqrst", 0, 4)); + BOOST_TEST(testC(S("abcde"), 1, 4, "abcdefghijklmnopqrst", 1, 1)); + BOOST_TEST(testC(S("abcde"), 1, 4, "abcdefghijklmnopqrst", 10, 1)); + BOOST_TEST(testC(S("abcde"), 1, 4, "abcdefghijklmnopqrst", 19, 1)); + BOOST_TEST(testC(S("abcde"), 1, 4, "abcdefghijklmnopqrst", 20, 1)); + BOOST_TEST(testC(S("abcde"), 1, 5, "", 0, 4)); + BOOST_TEST(testC(S("abcde"), 1, 5, "abcde", 0, 4)); + BOOST_TEST(testC(S("abcde"), 1, 5, "abcde", 1, 1)); + BOOST_TEST(testC(S("abcde"), 1, 5, "abcde", 2, 1)); + BOOST_TEST(testC(S("abcde"), 1, 5, "abcde", 4, 1)); + BOOST_TEST(testC(S("abcde"), 1, 5, "abcde", 5, 1)); + BOOST_TEST(testC(S("abcde"), 1, 5, "abcdefghij", 0, 4)); + BOOST_TEST(testC(S("abcde"), 1, 5, "abcdefghij", 1, 1)); + BOOST_TEST(testC(S("abcde"), 1, 5, "abcdefghij", 5, 1)); + BOOST_TEST(testC(S("abcde"), 1, 5, "abcdefghij", 9, 1)); + BOOST_TEST(testC(S("abcde"), 1, 5, "abcdefghij", 10, 1)); + BOOST_TEST(testC(S("abcde"), 1, 5, "abcdefghijklmnopqrst", 0, 4)); + BOOST_TEST(testC(S("abcde"), 1, 5, "abcdefghijklmnopqrst", 1, 1)); + BOOST_TEST(testC(S("abcde"), 1, 5, "abcdefghijklmnopqrst", 10, 1)); + BOOST_TEST(testC(S("abcde"), 1, 5, "abcdefghijklmnopqrst", 19, 1)); + BOOST_TEST(testC(S("abcde"), 1, 5, "abcdefghijklmnopqrst", 20, 1)); + BOOST_TEST(testC(S("abcde"), 2, 0, "", 0, 0)); + BOOST_TEST(testC(S("abcde"), 2, 0, "abcde", 0, 0)); + BOOST_TEST(testC(S("abcde"), 2, 0, "abcde", 1, -1)); + BOOST_TEST(testC(S("abcde"), 2, 0, "abcde", 2, -2)); + BOOST_TEST(testC(S("abcde"), 2, 0, "abcde", 4, -4)); + BOOST_TEST(testC(S("abcde"), 2, 0, "abcde", 5, -5)); + BOOST_TEST(testC(S("abcde"), 2, 0, "abcdefghij", 0, 0)); + BOOST_TEST(testC(S("abcde"), 2, 0, "abcdefghij", 1, -1)); + BOOST_TEST(testC(S("abcde"), 2, 0, "abcdefghij", 5, -5)); + BOOST_TEST(testC(S("abcde"), 2, 0, "abcdefghij", 9, -9)); + BOOST_TEST(testC(S("abcde"), 2, 0, "abcdefghij", 10, -10)); + BOOST_TEST(testC(S("abcde"), 2, 0, "abcdefghijklmnopqrst", 0, 0)); + BOOST_TEST(testC(S("abcde"), 2, 0, "abcdefghijklmnopqrst", 1, -1)); + BOOST_TEST(testC(S("abcde"), 2, 0, "abcdefghijklmnopqrst", 10, -10)); + BOOST_TEST(testC(S("abcde"), 2, 0, "abcdefghijklmnopqrst", 19, -19)); + BOOST_TEST(testC(S("abcde"), 2, 0, "abcdefghijklmnopqrst", 20, -20)); + BOOST_TEST(testC(S("abcde"), 2, 1, "", 0, 1)); + BOOST_TEST(testC(S("abcde"), 2, 1, "abcde", 0, 1)); + BOOST_TEST(testC(S("abcde"), 2, 1, "abcde", 1, 2)); + BOOST_TEST(testC(S("abcde"), 2, 1, "abcde", 2, 2)); + BOOST_TEST(testC(S("abcde"), 2, 1, "abcde", 4, 2)); + BOOST_TEST(testC(S("abcde"), 2, 1, "abcde", 5, 2)); + BOOST_TEST(testC(S("abcde"), 2, 1, "abcdefghij", 0, 1)); + BOOST_TEST(testC(S("abcde"), 2, 1, "abcdefghij", 1, 2)); + BOOST_TEST(testC(S("abcde"), 2, 1, "abcdefghij", 5, 2)); + BOOST_TEST(testC(S("abcde"), 2, 1, "abcdefghij", 9, 2)); + BOOST_TEST(testC(S("abcde"), 2, 1, "abcdefghij", 10, 2)); + BOOST_TEST(testC(S("abcde"), 2, 1, "abcdefghijklmnopqrst", 0, 1)); + BOOST_TEST(testC(S("abcde"), 2, 1, "abcdefghijklmnopqrst", 1, 2)); + BOOST_TEST(testC(S("abcde"), 2, 1, "abcdefghijklmnopqrst", 10, 2)); + BOOST_TEST(testC(S("abcde"), 2, 1, "abcdefghijklmnopqrst", 19, 2)); + BOOST_TEST(testC(S("abcde"), 2, 1, "abcdefghijklmnopqrst", 20, 2)); + BOOST_TEST(testC(S("abcde"), 2, 2, "", 0, 2)); + BOOST_TEST(testC(S("abcde"), 2, 2, "abcde", 0, 2)); + BOOST_TEST(testC(S("abcde"), 2, 2, "abcde", 1, 2)); + BOOST_TEST(testC(S("abcde"), 2, 2, "abcde", 2, 2)); + BOOST_TEST(testC(S("abcde"), 2, 2, "abcde", 4, 2)); + BOOST_TEST(testC(S("abcde"), 2, 2, "abcde", 5, 2)); + BOOST_TEST(testC(S("abcde"), 2, 2, "abcdefghij", 0, 2)); + BOOST_TEST(testC(S("abcde"), 2, 2, "abcdefghij", 1, 2)); + BOOST_TEST(testC(S("abcde"), 2, 2, "abcdefghij", 5, 2)); + BOOST_TEST(testC(S("abcde"), 2, 2, "abcdefghij", 9, 2)); + BOOST_TEST(testC(S("abcde"), 2, 2, "abcdefghij", 10, 2)); + BOOST_TEST(testC(S("abcde"), 2, 2, "abcdefghijklmnopqrst", 0, 2)); + BOOST_TEST(testC(S("abcde"), 2, 2, "abcdefghijklmnopqrst", 1, 2)); + BOOST_TEST(testC(S("abcde"), 2, 2, "abcdefghijklmnopqrst", 10, 2)); + BOOST_TEST(testC(S("abcde"), 2, 2, "abcdefghijklmnopqrst", 19, 2)); + BOOST_TEST(testC(S("abcde"), 2, 2, "abcdefghijklmnopqrst", 20, 2)); + BOOST_TEST(testC(S("abcde"), 2, 3, "", 0, 3)); + BOOST_TEST(testC(S("abcde"), 2, 3, "abcde", 0, 3)); + BOOST_TEST(testC(S("abcde"), 2, 3, "abcde", 1, 2)); + BOOST_TEST(testC(S("abcde"), 2, 3, "abcde", 2, 2)); + BOOST_TEST(testC(S("abcde"), 2, 3, "abcde", 4, 2)); + BOOST_TEST(testC(S("abcde"), 2, 3, "abcde", 5, 2)); + BOOST_TEST(testC(S("abcde"), 2, 3, "abcdefghij", 0, 3)); + BOOST_TEST(testC(S("abcde"), 2, 3, "abcdefghij", 1, 2)); + BOOST_TEST(testC(S("abcde"), 2, 3, "abcdefghij", 5, 2)); + BOOST_TEST(testC(S("abcde"), 2, 3, "abcdefghij", 9, 2)); + BOOST_TEST(testC(S("abcde"), 2, 3, "abcdefghij", 10, 2)); + BOOST_TEST(testC(S("abcde"), 2, 3, "abcdefghijklmnopqrst", 0, 3)); + BOOST_TEST(testC(S("abcde"), 2, 3, "abcdefghijklmnopqrst", 1, 2)); + BOOST_TEST(testC(S("abcde"), 2, 3, "abcdefghijklmnopqrst", 10, 2)); + BOOST_TEST(testC(S("abcde"), 2, 3, "abcdefghijklmnopqrst", 19, 2)); + BOOST_TEST(testC(S("abcde"), 2, 3, "abcdefghijklmnopqrst", 20, 2)); + BOOST_TEST(testC(S("abcde"), 2, 4, "", 0, 3)); + BOOST_TEST(testC(S("abcde"), 2, 4, "abcde", 0, 3)); + BOOST_TEST(testC(S("abcde"), 2, 4, "abcde", 1, 2)); + BOOST_TEST(testC(S("abcde"), 2, 4, "abcde", 2, 2)); + BOOST_TEST(testC(S("abcde"), 2, 4, "abcde", 4, 2)); + BOOST_TEST(testC(S("abcde"), 2, 4, "abcde", 5, 2)); + BOOST_TEST(testC(S("abcde"), 2, 4, "abcdefghij", 0, 3)); + BOOST_TEST(testC(S("abcde"), 2, 4, "abcdefghij", 1, 2)); + BOOST_TEST(testC(S("abcde"), 2, 4, "abcdefghij", 5, 2)); + BOOST_TEST(testC(S("abcde"), 2, 4, "abcdefghij", 9, 2)); + BOOST_TEST(testC(S("abcde"), 2, 4, "abcdefghij", 10, 2)); + BOOST_TEST(testC(S("abcde"), 2, 4, "abcdefghijklmnopqrst", 0, 3)); + BOOST_TEST(testC(S("abcde"), 2, 4, "abcdefghijklmnopqrst", 1, 2)); + BOOST_TEST(testC(S("abcde"), 2, 4, "abcdefghijklmnopqrst", 10, 2)); + BOOST_TEST(testC(S("abcde"), 2, 4, "abcdefghijklmnopqrst", 19, 2)); + BOOST_TEST(testC(S("abcde"), 2, 4, "abcdefghijklmnopqrst", 20, 2)); + BOOST_TEST(testC(S("abcde"), 4, 0, "", 0, 0)); + BOOST_TEST(testC(S("abcde"), 4, 0, "abcde", 0, 0)); + BOOST_TEST(testC(S("abcde"), 4, 0, "abcde", 1, -1)); + BOOST_TEST(testC(S("abcde"), 4, 0, "abcde", 2, -2)); + BOOST_TEST(testC(S("abcde"), 4, 0, "abcde", 4, -4)); + BOOST_TEST(testC(S("abcde"), 4, 0, "abcde", 5, -5)); + BOOST_TEST(testC(S("abcde"), 4, 0, "abcdefghij", 0, 0)); + BOOST_TEST(testC(S("abcde"), 4, 0, "abcdefghij", 1, -1)); + BOOST_TEST(testC(S("abcde"), 4, 0, "abcdefghij", 5, -5)); + BOOST_TEST(testC(S("abcde"), 4, 0, "abcdefghij", 9, -9)); + BOOST_TEST(testC(S("abcde"), 4, 0, "abcdefghij", 10, -10)); + BOOST_TEST(testC(S("abcde"), 4, 0, "abcdefghijklmnopqrst", 0, 0)); + BOOST_TEST(testC(S("abcde"), 4, 0, "abcdefghijklmnopqrst", 1, -1)); + BOOST_TEST(testC(S("abcde"), 4, 0, "abcdefghijklmnopqrst", 10, -10)); + BOOST_TEST(testC(S("abcde"), 4, 0, "abcdefghijklmnopqrst", 19, -19)); + BOOST_TEST(testC(S("abcde"), 4, 0, "abcdefghijklmnopqrst", 20, -20)); + BOOST_TEST(testC(S("abcde"), 4, 1, "", 0, 1)); + BOOST_TEST(testC(S("abcde"), 4, 1, "abcde", 0, 1)); + BOOST_TEST(testC(S("abcde"), 4, 1, "abcde", 1, 4)); + BOOST_TEST(testC(S("abcde"), 4, 1, "abcde", 2, 4)); + BOOST_TEST(testC(S("abcde"), 4, 1, "abcde", 4, 4)); + BOOST_TEST(testC(S("abcde"), 4, 1, "abcde", 5, 4)); + BOOST_TEST(testC(S("abcde"), 4, 1, "abcdefghij", 0, 1)); + BOOST_TEST(testC(S("abcde"), 4, 1, "abcdefghij", 1, 4)); + BOOST_TEST(testC(S("abcde"), 4, 1, "abcdefghij", 5, 4)); + BOOST_TEST(testC(S("abcde"), 4, 1, "abcdefghij", 9, 4)); + BOOST_TEST(testC(S("abcde"), 4, 1, "abcdefghij", 10, 4)); + BOOST_TEST(testC(S("abcde"), 4, 1, "abcdefghijklmnopqrst", 0, 1)); + BOOST_TEST(testC(S("abcde"), 4, 1, "abcdefghijklmnopqrst", 1, 4)); + BOOST_TEST(testC(S("abcde"), 4, 1, "abcdefghijklmnopqrst", 10, 4)); + BOOST_TEST(testC(S("abcde"), 4, 1, "abcdefghijklmnopqrst", 19, 4)); + BOOST_TEST(testC(S("abcde"), 4, 1, "abcdefghijklmnopqrst", 20, 4)); + BOOST_TEST(testC(S("abcde"), 4, 2, "", 0, 1)); + BOOST_TEST(testC(S("abcde"), 4, 2, "abcde", 0, 1)); + BOOST_TEST(testC(S("abcde"), 4, 2, "abcde", 1, 4)); + BOOST_TEST(testC(S("abcde"), 4, 2, "abcde", 2, 4)); + BOOST_TEST(testC(S("abcde"), 4, 2, "abcde", 4, 4)); + BOOST_TEST(testC(S("abcde"), 4, 2, "abcde", 5, 4)); + BOOST_TEST(testC(S("abcde"), 4, 2, "abcdefghij", 0, 1)); + BOOST_TEST(testC(S("abcde"), 4, 2, "abcdefghij", 1, 4)); + BOOST_TEST(testC(S("abcde"), 4, 2, "abcdefghij", 5, 4)); + BOOST_TEST(testC(S("abcde"), 4, 2, "abcdefghij", 9, 4)); + BOOST_TEST(testC(S("abcde"), 4, 2, "abcdefghij", 10, 4)); + BOOST_TEST(testC(S("abcde"), 4, 2, "abcdefghijklmnopqrst", 0, 1)); + BOOST_TEST(testC(S("abcde"), 4, 2, "abcdefghijklmnopqrst", 1, 4)); + BOOST_TEST(testC(S("abcde"), 4, 2, "abcdefghijklmnopqrst", 10, 4)); + BOOST_TEST(testC(S("abcde"), 4, 2, "abcdefghijklmnopqrst", 19, 4)); + BOOST_TEST(testC(S("abcde"), 4, 2, "abcdefghijklmnopqrst", 20, 4)); + BOOST_TEST(testC(S("abcde"), 5, 0, "", 0, 0)); + BOOST_TEST(testC(S("abcde"), 5, 0, "abcde", 0, 0)); + BOOST_TEST(testC(S("abcde"), 5, 0, "abcde", 1, -1)); + BOOST_TEST(testC(S("abcde"), 5, 0, "abcde", 2, -2)); + BOOST_TEST(testC(S("abcde"), 5, 0, "abcde", 4, -4)); + BOOST_TEST(testC(S("abcde"), 5, 0, "abcde", 5, -5)); + BOOST_TEST(testC(S("abcde"), 5, 0, "abcdefghij", 0, 0)); + BOOST_TEST(testC(S("abcde"), 5, 0, "abcdefghij", 1, -1)); + BOOST_TEST(testC(S("abcde"), 5, 0, "abcdefghij", 5, -5)); + BOOST_TEST(testC(S("abcde"), 5, 0, "abcdefghij", 9, -9)); + BOOST_TEST(testC(S("abcde"), 5, 0, "abcdefghij", 10, -10)); + BOOST_TEST(testC(S("abcde"), 5, 0, "abcdefghijklmnopqrst", 0, 0)); + BOOST_TEST(testC(S("abcde"), 5, 0, "abcdefghijklmnopqrst", 1, -1)); + BOOST_TEST(testC(S("abcde"), 5, 0, "abcdefghijklmnopqrst", 10, -10)); + BOOST_TEST(testC(S("abcde"), 5, 0, "abcdefghijklmnopqrst", 19, -19)); + BOOST_TEST(testC(S("abcde"), 5, 0, "abcdefghijklmnopqrst", 20, -20)); + BOOST_TEST(testC(S("abcde"), 5, 1, "", 0, 0)); + BOOST_TEST(testC(S("abcde"), 5, 1, "abcde", 0, 0)); + BOOST_TEST(testC(S("abcde"), 5, 1, "abcde", 1, -1)); + BOOST_TEST(testC(S("abcde"), 5, 1, "abcde", 2, -2)); + BOOST_TEST(testC(S("abcde"), 5, 1, "abcde", 4, -4)); + BOOST_TEST(testC(S("abcde"), 5, 1, "abcde", 5, -5)); + BOOST_TEST(testC(S("abcde"), 5, 1, "abcdefghij", 0, 0)); + BOOST_TEST(testC(S("abcde"), 5, 1, "abcdefghij", 1, -1)); + BOOST_TEST(testC(S("abcde"), 5, 1, "abcdefghij", 5, -5)); + BOOST_TEST(testC(S("abcde"), 5, 1, "abcdefghij", 9, -9)); + BOOST_TEST(testC(S("abcde"), 5, 1, "abcdefghij", 10, -10)); + BOOST_TEST(testC(S("abcde"), 5, 1, "abcdefghijklmnopqrst", 0, 0)); + BOOST_TEST(testC(S("abcde"), 5, 1, "abcdefghijklmnopqrst", 1, -1)); + BOOST_TEST(testC(S("abcde"), 5, 1, "abcdefghijklmnopqrst", 10, -10)); + BOOST_TEST(testC(S("abcde"), 5, 1, "abcdefghijklmnopqrst", 19, -19)); + BOOST_TEST(testC(S("abcde"), 5, 1, "abcdefghijklmnopqrst", 20, -20)); + BOOST_TEST(testC(S("abcde"), 6, 0, "", 0, 0)); + BOOST_TEST(testC(S("abcde"), 6, 0, "abcde", 0, 0)); + BOOST_TEST(testC(S("abcde"), 6, 0, "abcde", 1, 0)); + BOOST_TEST(testC(S("abcde"), 6, 0, "abcde", 2, 0)); + BOOST_TEST(testC(S("abcde"), 6, 0, "abcde", 4, 0)); + BOOST_TEST(testC(S("abcde"), 6, 0, "abcde", 5, 0)); + BOOST_TEST(testC(S("abcde"), 6, 0, "abcdefghij", 0, 0)); + BOOST_TEST(testC(S("abcde"), 6, 0, "abcdefghij", 1, 0)); + BOOST_TEST(testC(S("abcde"), 6, 0, "abcdefghij", 5, 0)); + BOOST_TEST(testC(S("abcde"), 6, 0, "abcdefghij", 9, 0)); + BOOST_TEST(testC(S("abcde"), 6, 0, "abcdefghij", 10, 0)); + BOOST_TEST(testC(S("abcde"), 6, 0, "abcdefghijklmnopqrst", 0, 0)); + BOOST_TEST(testC(S("abcde"), 6, 0, "abcdefghijklmnopqrst", 1, 0)); + BOOST_TEST(testC(S("abcde"), 6, 0, "abcdefghijklmnopqrst", 10, 0)); + BOOST_TEST(testC(S("abcde"), 6, 0, "abcdefghijklmnopqrst", 19, 0)); + BOOST_TEST(testC(S("abcde"), 6, 0, "abcdefghijklmnopqrst", 20, 0)); + BOOST_TEST(testC(S("abcdefghij"), 0, 0, "", 0, 0)); + BOOST_TEST(testC(S("abcdefghij"), 0, 0, "abcde", 0, 0)); + BOOST_TEST(testC(S("abcdefghij"), 0, 0, "abcde", 1, -1)); + BOOST_TEST(testC(S("abcdefghij"), 0, 0, "abcde", 2, -2)); + BOOST_TEST(testC(S("abcdefghij"), 0, 0, "abcde", 4, -4)); + BOOST_TEST(testC(S("abcdefghij"), 0, 0, "abcde", 5, -5)); + BOOST_TEST(testC(S("abcdefghij"), 0, 0, "abcdefghij", 0, 0)); + BOOST_TEST(testC(S("abcdefghij"), 0, 0, "abcdefghij", 1, -1)); + BOOST_TEST(testC(S("abcdefghij"), 0, 0, "abcdefghij", 5, -5)); + BOOST_TEST(testC(S("abcdefghij"), 0, 0, "abcdefghij", 9, -9)); + BOOST_TEST(testC(S("abcdefghij"), 0, 0, "abcdefghij", 10, -10)); + BOOST_TEST(testC(S("abcdefghij"), 0, 0, "abcdefghijklmnopqrst", 0, 0)); + BOOST_TEST(testC(S("abcdefghij"), 0, 0, "abcdefghijklmnopqrst", 1, -1)); + BOOST_TEST(testC(S("abcdefghij"), 0, 0, "abcdefghijklmnopqrst", 10, -10)); + BOOST_TEST(testC(S("abcdefghij"), 0, 0, "abcdefghijklmnopqrst", 19, -19)); + BOOST_TEST(testC(S("abcdefghij"), 0, 0, "abcdefghijklmnopqrst", 20, -20)); + BOOST_TEST(testC(S("abcdefghij"), 0, 1, "", 0, 1)); + BOOST_TEST(testC(S("abcdefghij"), 0, 1, "abcde", 0, 1)); + BOOST_TEST(testC(S("abcdefghij"), 0, 1, "abcde", 1, 0)); + BOOST_TEST(testC(S("abcdefghij"), 0, 1, "abcde", 2, -1)); + BOOST_TEST(testC(S("abcdefghij"), 0, 1, "abcde", 4, -3)); + BOOST_TEST(testC(S("abcdefghij"), 0, 1, "abcde", 5, -4)); + BOOST_TEST(testC(S("abcdefghij"), 0, 1, "abcdefghij", 0, 1)); + BOOST_TEST(testC(S("abcdefghij"), 0, 1, "abcdefghij", 1, 0)); + BOOST_TEST(testC(S("abcdefghij"), 0, 1, "abcdefghij", 5, -4)); + BOOST_TEST(testC(S("abcdefghij"), 0, 1, "abcdefghij", 9, -8)); + BOOST_TEST(testC(S("abcdefghij"), 0, 1, "abcdefghij", 10, -9)); + BOOST_TEST(testC(S("abcdefghij"), 0, 1, "abcdefghijklmnopqrst", 0, 1)); + BOOST_TEST(testC(S("abcdefghij"), 0, 1, "abcdefghijklmnopqrst", 1, 0)); + BOOST_TEST(testC(S("abcdefghij"), 0, 1, "abcdefghijklmnopqrst", 10, -9)); + BOOST_TEST(testC(S("abcdefghij"), 0, 1, "abcdefghijklmnopqrst", 19, -18)); + BOOST_TEST(testC(S("abcdefghij"), 0, 1, "abcdefghijklmnopqrst", 20, -19)); + BOOST_TEST(testC(S("abcdefghij"), 0, 5, "", 0, 5)); + BOOST_TEST(testC(S("abcdefghij"), 0, 5, "abcde", 0, 5)); + BOOST_TEST(testC(S("abcdefghij"), 0, 5, "abcde", 1, 4)); + BOOST_TEST(testC(S("abcdefghij"), 0, 5, "abcde", 2, 3)); + BOOST_TEST(testC(S("abcdefghij"), 0, 5, "abcde", 4, 1)); + BOOST_TEST(testC(S("abcdefghij"), 0, 5, "abcde", 5, 0)); + BOOST_TEST(testC(S("abcdefghij"), 0, 5, "abcdefghij", 0, 5)); + BOOST_TEST(testC(S("abcdefghij"), 0, 5, "abcdefghij", 1, 4)); + BOOST_TEST(testC(S("abcdefghij"), 0, 5, "abcdefghij", 5, 0)); + BOOST_TEST(testC(S("abcdefghij"), 0, 5, "abcdefghij", 9, -4)); + BOOST_TEST(testC(S("abcdefghij"), 0, 5, "abcdefghij", 10, -5)); + BOOST_TEST(testC(S("abcdefghij"), 0, 5, "abcdefghijklmnopqrst", 0, 5)); + BOOST_TEST(testC(S("abcdefghij"), 0, 5, "abcdefghijklmnopqrst", 1, 4)); + BOOST_TEST(testC(S("abcdefghij"), 0, 5, "abcdefghijklmnopqrst", 10, -5)); + BOOST_TEST(testC(S("abcdefghij"), 0, 5, "abcdefghijklmnopqrst", 19, -14)); + BOOST_TEST(testC(S("abcdefghij"), 0, 5, "abcdefghijklmnopqrst", 20, -15)); + BOOST_TEST(testC(S("abcdefghij"), 0, 9, "", 0, 9)); + BOOST_TEST(testC(S("abcdefghij"), 0, 9, "abcde", 0, 9)); + BOOST_TEST(testC(S("abcdefghij"), 0, 9, "abcde", 1, 8)); + BOOST_TEST(testC(S("abcdefghij"), 0, 9, "abcde", 2, 7)); + BOOST_TEST(testC(S("abcdefghij"), 0, 9, "abcde", 4, 5)); + BOOST_TEST(testC(S("abcdefghij"), 0, 9, "abcde", 5, 4)); + BOOST_TEST(testC(S("abcdefghij"), 0, 9, "abcdefghij", 0, 9)); + BOOST_TEST(testC(S("abcdefghij"), 0, 9, "abcdefghij", 1, 8)); + BOOST_TEST(testC(S("abcdefghij"), 0, 9, "abcdefghij", 5, 4)); + BOOST_TEST(testC(S("abcdefghij"), 0, 9, "abcdefghij", 9, 0)); + BOOST_TEST(testC(S("abcdefghij"), 0, 9, "abcdefghij", 10, -1)); + BOOST_TEST(testC(S("abcdefghij"), 0, 9, "abcdefghijklmnopqrst", 0, 9)); + BOOST_TEST(testC(S("abcdefghij"), 0, 9, "abcdefghijklmnopqrst", 1, 8)); + BOOST_TEST(testC(S("abcdefghij"), 0, 9, "abcdefghijklmnopqrst", 10, -1)); + BOOST_TEST(testC(S("abcdefghij"), 0, 9, "abcdefghijklmnopqrst", 19, -10)); + BOOST_TEST(testC(S("abcdefghij"), 0, 9, "abcdefghijklmnopqrst", 20, -11)); + BOOST_TEST(testC(S("abcdefghij"), 0, 10, "", 0, 10)); + BOOST_TEST(testC(S("abcdefghij"), 0, 10, "abcde", 0, 10)); + BOOST_TEST(testC(S("abcdefghij"), 0, 10, "abcde", 1, 9)); + BOOST_TEST(testC(S("abcdefghij"), 0, 10, "abcde", 2, 8)); + BOOST_TEST(testC(S("abcdefghij"), 0, 10, "abcde", 4, 6)); + BOOST_TEST(testC(S("abcdefghij"), 0, 10, "abcde", 5, 5)); + BOOST_TEST(testC(S("abcdefghij"), 0, 10, "abcdefghij", 0, 10)); + BOOST_TEST(testC(S("abcdefghij"), 0, 10, "abcdefghij", 1, 9)); + BOOST_TEST(testC(S("abcdefghij"), 0, 10, "abcdefghij", 5, 5)); + BOOST_TEST(testC(S("abcdefghij"), 0, 10, "abcdefghij", 9, 1)); + BOOST_TEST(testC(S("abcdefghij"), 0, 10, "abcdefghij", 10, 0)); + BOOST_TEST(testC(S("abcdefghij"), 0, 10, "abcdefghijklmnopqrst", 0, 10)); + BOOST_TEST(testC(S("abcdefghij"), 0, 10, "abcdefghijklmnopqrst", 1, 9)); + BOOST_TEST(testC(S("abcdefghij"), 0, 10, "abcdefghijklmnopqrst", 10, 0)); + BOOST_TEST(testC(S("abcdefghij"), 0, 10, "abcdefghijklmnopqrst", 19, -9)); + BOOST_TEST(testC(S("abcdefghij"), 0, 10, "abcdefghijklmnopqrst", 20, -10)); + BOOST_TEST(testC(S("abcdefghij"), 0, 11, "", 0, 10)); + BOOST_TEST(testC(S("abcdefghij"), 0, 11, "abcde", 0, 10)); + BOOST_TEST(testC(S("abcdefghij"), 0, 11, "abcde", 1, 9)); + BOOST_TEST(testC(S("abcdefghij"), 0, 11, "abcde", 2, 8)); + BOOST_TEST(testC(S("abcdefghij"), 0, 11, "abcde", 4, 6)); + BOOST_TEST(testC(S("abcdefghij"), 0, 11, "abcde", 5, 5)); + BOOST_TEST(testC(S("abcdefghij"), 0, 11, "abcdefghij", 0, 10)); + BOOST_TEST(testC(S("abcdefghij"), 0, 11, "abcdefghij", 1, 9)); + BOOST_TEST(testC(S("abcdefghij"), 0, 11, "abcdefghij", 5, 5)); + BOOST_TEST(testC(S("abcdefghij"), 0, 11, "abcdefghij", 9, 1)); + BOOST_TEST(testC(S("abcdefghij"), 0, 11, "abcdefghij", 10, 0)); + BOOST_TEST(testC(S("abcdefghij"), 0, 11, "abcdefghijklmnopqrst", 0, 10)); + BOOST_TEST(testC(S("abcdefghij"), 0, 11, "abcdefghijklmnopqrst", 1, 9)); + BOOST_TEST(testC(S("abcdefghij"), 0, 11, "abcdefghijklmnopqrst", 10, 0)); + BOOST_TEST(testC(S("abcdefghij"), 0, 11, "abcdefghijklmnopqrst", 19, -9)); + BOOST_TEST(testC(S("abcdefghij"), 0, 11, "abcdefghijklmnopqrst", 20, -10)); + BOOST_TEST(testC(S("abcdefghij"), 1, 0, "", 0, 0)); + BOOST_TEST(testC(S("abcdefghij"), 1, 0, "abcde", 0, 0)); + BOOST_TEST(testC(S("abcdefghij"), 1, 0, "abcde", 1, -1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 0, "abcde", 2, -2)); + BOOST_TEST(testC(S("abcdefghij"), 1, 0, "abcde", 4, -4)); + BOOST_TEST(testC(S("abcdefghij"), 1, 0, "abcde", 5, -5)); + BOOST_TEST(testC(S("abcdefghij"), 1, 0, "abcdefghij", 0, 0)); + BOOST_TEST(testC(S("abcdefghij"), 1, 0, "abcdefghij", 1, -1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 0, "abcdefghij", 5, -5)); + BOOST_TEST(testC(S("abcdefghij"), 1, 0, "abcdefghij", 9, -9)); + BOOST_TEST(testC(S("abcdefghij"), 1, 0, "abcdefghij", 10, -10)); + BOOST_TEST(testC(S("abcdefghij"), 1, 0, "abcdefghijklmnopqrst", 0, 0)); + BOOST_TEST(testC(S("abcdefghij"), 1, 0, "abcdefghijklmnopqrst", 1, -1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 0, "abcdefghijklmnopqrst", 10, -10)); + BOOST_TEST(testC(S("abcdefghij"), 1, 0, "abcdefghijklmnopqrst", 19, -19)); + BOOST_TEST(testC(S("abcdefghij"), 1, 0, "abcdefghijklmnopqrst", 20, -20)); + BOOST_TEST(testC(S("abcdefghij"), 1, 1, "", 0, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 1, "abcde", 0, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 1, "abcde", 1, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 1, "abcde", 2, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 1, "abcde", 4, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 1, "abcde", 5, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 1, "abcdefghij", 0, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 1, "abcdefghij", 1, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 1, "abcdefghij", 5, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 1, "abcdefghij", 9, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 1, "abcdefghij", 10, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 1, "abcdefghijklmnopqrst", 0, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 1, "abcdefghijklmnopqrst", 1, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 1, "abcdefghijklmnopqrst", 10, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 1, "abcdefghijklmnopqrst", 19, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 1, "abcdefghijklmnopqrst", 20, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 4, "", 0, 4)); + BOOST_TEST(testC(S("abcdefghij"), 1, 4, "abcde", 0, 4)); + BOOST_TEST(testC(S("abcdefghij"), 1, 4, "abcde", 1, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 4, "abcde", 2, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 4, "abcde", 4, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 4, "abcde", 5, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 4, "abcdefghij", 0, 4)); + BOOST_TEST(testC(S("abcdefghij"), 1, 4, "abcdefghij", 1, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 4, "abcdefghij", 5, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 4, "abcdefghij", 9, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 4, "abcdefghij", 10, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 4, "abcdefghijklmnopqrst", 0, 4)); + BOOST_TEST(testC(S("abcdefghij"), 1, 4, "abcdefghijklmnopqrst", 1, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 4, "abcdefghijklmnopqrst", 10, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 4, "abcdefghijklmnopqrst", 19, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 4, "abcdefghijklmnopqrst", 20, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 8, "", 0, 8)); + BOOST_TEST(testC(S("abcdefghij"), 1, 8, "abcde", 0, 8)); + BOOST_TEST(testC(S("abcdefghij"), 1, 8, "abcde", 1, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 8, "abcde", 2, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 8, "abcde", 4, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 8, "abcde", 5, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 8, "abcdefghij", 0, 8)); + BOOST_TEST(testC(S("abcdefghij"), 1, 8, "abcdefghij", 1, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 8, "abcdefghij", 5, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 8, "abcdefghij", 9, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 8, "abcdefghij", 10, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 8, "abcdefghijklmnopqrst", 0, 8)); + BOOST_TEST(testC(S("abcdefghij"), 1, 8, "abcdefghijklmnopqrst", 1, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 8, "abcdefghijklmnopqrst", 10, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 8, "abcdefghijklmnopqrst", 19, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 8, "abcdefghijklmnopqrst", 20, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 9, "", 0, 9)); + BOOST_TEST(testC(S("abcdefghij"), 1, 9, "abcde", 0, 9)); + BOOST_TEST(testC(S("abcdefghij"), 1, 9, "abcde", 1, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 9, "abcde", 2, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 9, "abcde", 4, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 9, "abcde", 5, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 9, "abcdefghij", 0, 9)); + BOOST_TEST(testC(S("abcdefghij"), 1, 9, "abcdefghij", 1, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 9, "abcdefghij", 5, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 9, "abcdefghij", 9, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 9, "abcdefghij", 10, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 9, "abcdefghijklmnopqrst", 0, 9)); + BOOST_TEST(testC(S("abcdefghij"), 1, 9, "abcdefghijklmnopqrst", 1, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 9, "abcdefghijklmnopqrst", 10, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 9, "abcdefghijklmnopqrst", 19, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 9, "abcdefghijklmnopqrst", 20, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 10, "", 0, 9)); + BOOST_TEST(testC(S("abcdefghij"), 1, 10, "abcde", 0, 9)); + BOOST_TEST(testC(S("abcdefghij"), 1, 10, "abcde", 1, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 10, "abcde", 2, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 10, "abcde", 4, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 10, "abcde", 5, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 10, "abcdefghij", 0, 9)); + BOOST_TEST(testC(S("abcdefghij"), 1, 10, "abcdefghij", 1, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 10, "abcdefghij", 5, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 10, "abcdefghij", 9, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 10, "abcdefghij", 10, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 10, "abcdefghijklmnopqrst", 0, 9)); + BOOST_TEST(testC(S("abcdefghij"), 1, 10, "abcdefghijklmnopqrst", 1, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 10, "abcdefghijklmnopqrst", 10, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 10, "abcdefghijklmnopqrst", 19, 1)); + BOOST_TEST(testC(S("abcdefghij"), 1, 10, "abcdefghijklmnopqrst", 20, 1)); + BOOST_TEST(testC(S("abcdefghij"), 5, 0, "", 0, 0)); + BOOST_TEST(testC(S("abcdefghij"), 5, 0, "abcde", 0, 0)); + BOOST_TEST(testC(S("abcdefghij"), 5, 0, "abcde", 1, -1)); + BOOST_TEST(testC(S("abcdefghij"), 5, 0, "abcde", 2, -2)); + BOOST_TEST(testC(S("abcdefghij"), 5, 0, "abcde", 4, -4)); + BOOST_TEST(testC(S("abcdefghij"), 5, 0, "abcde", 5, -5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 0, "abcdefghij", 0, 0)); + BOOST_TEST(testC(S("abcdefghij"), 5, 0, "abcdefghij", 1, -1)); + BOOST_TEST(testC(S("abcdefghij"), 5, 0, "abcdefghij", 5, -5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 0, "abcdefghij", 9, -9)); + BOOST_TEST(testC(S("abcdefghij"), 5, 0, "abcdefghij", 10, -10)); + BOOST_TEST(testC(S("abcdefghij"), 5, 0, "abcdefghijklmnopqrst", 0, 0)); + BOOST_TEST(testC(S("abcdefghij"), 5, 0, "abcdefghijklmnopqrst", 1, -1)); + BOOST_TEST(testC(S("abcdefghij"), 5, 0, "abcdefghijklmnopqrst", 10, -10)); + BOOST_TEST(testC(S("abcdefghij"), 5, 0, "abcdefghijklmnopqrst", 19, -19)); + BOOST_TEST(testC(S("abcdefghij"), 5, 0, "abcdefghijklmnopqrst", 20, -20)); + BOOST_TEST(testC(S("abcdefghij"), 5, 1, "", 0, 1)); + BOOST_TEST(testC(S("abcdefghij"), 5, 1, "abcde", 0, 1)); + BOOST_TEST(testC(S("abcdefghij"), 5, 1, "abcde", 1, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 1, "abcde", 2, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 1, "abcde", 4, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 1, "abcde", 5, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 1, "abcdefghij", 0, 1)); + BOOST_TEST(testC(S("abcdefghij"), 5, 1, "abcdefghij", 1, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 1, "abcdefghij", 5, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 1, "abcdefghij", 9, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 1, "abcdefghij", 10, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 1, "abcdefghijklmnopqrst", 0, 1)); + BOOST_TEST(testC(S("abcdefghij"), 5, 1, "abcdefghijklmnopqrst", 1, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 1, "abcdefghijklmnopqrst", 10, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 1, "abcdefghijklmnopqrst", 19, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 1, "abcdefghijklmnopqrst", 20, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 2, "", 0, 2)); + BOOST_TEST(testC(S("abcdefghij"), 5, 2, "abcde", 0, 2)); + BOOST_TEST(testC(S("abcdefghij"), 5, 2, "abcde", 1, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 2, "abcde", 2, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 2, "abcde", 4, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 2, "abcde", 5, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 2, "abcdefghij", 0, 2)); + BOOST_TEST(testC(S("abcdefghij"), 5, 2, "abcdefghij", 1, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 2, "abcdefghij", 5, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 2, "abcdefghij", 9, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 2, "abcdefghij", 10, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 2, "abcdefghijklmnopqrst", 0, 2)); + BOOST_TEST(testC(S("abcdefghij"), 5, 2, "abcdefghijklmnopqrst", 1, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 2, "abcdefghijklmnopqrst", 10, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 2, "abcdefghijklmnopqrst", 19, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 2, "abcdefghijklmnopqrst", 20, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 4, "", 0, 4)); + BOOST_TEST(testC(S("abcdefghij"), 5, 4, "abcde", 0, 4)); + BOOST_TEST(testC(S("abcdefghij"), 5, 4, "abcde", 1, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 4, "abcde", 2, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 4, "abcde", 4, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 4, "abcde", 5, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 4, "abcdefghij", 0, 4)); + BOOST_TEST(testC(S("abcdefghij"), 5, 4, "abcdefghij", 1, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 4, "abcdefghij", 5, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 4, "abcdefghij", 9, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 4, "abcdefghij", 10, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 4, "abcdefghijklmnopqrst", 0, 4)); + BOOST_TEST(testC(S("abcdefghij"), 5, 4, "abcdefghijklmnopqrst", 1, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 4, "abcdefghijklmnopqrst", 10, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 4, "abcdefghijklmnopqrst", 19, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 4, "abcdefghijklmnopqrst", 20, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 5, "", 0, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 5, "abcde", 0, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 5, "abcde", 1, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 5, "abcde", 2, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 5, "abcde", 4, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 5, "abcde", 5, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 5, "abcdefghij", 0, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 5, "abcdefghij", 1, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 5, "abcdefghij", 5, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 5, "abcdefghij", 9, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 5, "abcdefghij", 10, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 5, "abcdefghijklmnopqrst", 0, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 5, "abcdefghijklmnopqrst", 1, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 5, "abcdefghijklmnopqrst", 10, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 5, "abcdefghijklmnopqrst", 19, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 5, "abcdefghijklmnopqrst", 20, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 6, "", 0, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 6, "abcde", 0, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 6, "abcde", 1, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 6, "abcde", 2, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 6, "abcde", 4, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 6, "abcde", 5, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 6, "abcdefghij", 0, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 6, "abcdefghij", 1, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 6, "abcdefghij", 5, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 6, "abcdefghij", 9, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 6, "abcdefghij", 10, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 6, "abcdefghijklmnopqrst", 0, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 6, "abcdefghijklmnopqrst", 1, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 6, "abcdefghijklmnopqrst", 10, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 6, "abcdefghijklmnopqrst", 19, 5)); + BOOST_TEST(testC(S("abcdefghij"), 5, 6, "abcdefghijklmnopqrst", 20, 5)); + BOOST_TEST(testC(S("abcdefghij"), 9, 0, "", 0, 0)); + BOOST_TEST(testC(S("abcdefghij"), 9, 0, "abcde", 0, 0)); + BOOST_TEST(testC(S("abcdefghij"), 9, 0, "abcde", 1, -1)); + BOOST_TEST(testC(S("abcdefghij"), 9, 0, "abcde", 2, -2)); + BOOST_TEST(testC(S("abcdefghij"), 9, 0, "abcde", 4, -4)); + BOOST_TEST(testC(S("abcdefghij"), 9, 0, "abcde", 5, -5)); + BOOST_TEST(testC(S("abcdefghij"), 9, 0, "abcdefghij", 0, 0)); + BOOST_TEST(testC(S("abcdefghij"), 9, 0, "abcdefghij", 1, -1)); + BOOST_TEST(testC(S("abcdefghij"), 9, 0, "abcdefghij", 5, -5)); + BOOST_TEST(testC(S("abcdefghij"), 9, 0, "abcdefghij", 9, -9)); + BOOST_TEST(testC(S("abcdefghij"), 9, 0, "abcdefghij", 10, -10)); + BOOST_TEST(testC(S("abcdefghij"), 9, 0, "abcdefghijklmnopqrst", 0, 0)); + BOOST_TEST(testC(S("abcdefghij"), 9, 0, "abcdefghijklmnopqrst", 1, -1)); + BOOST_TEST(testC(S("abcdefghij"), 9, 0, "abcdefghijklmnopqrst", 10, -10)); + BOOST_TEST(testC(S("abcdefghij"), 9, 0, "abcdefghijklmnopqrst", 19, -19)); + BOOST_TEST(testC(S("abcdefghij"), 9, 0, "abcdefghijklmnopqrst", 20, -20)); + BOOST_TEST(testC(S("abcdefghij"), 9, 1, "", 0, 1)); + BOOST_TEST(testC(S("abcdefghij"), 9, 1, "abcde", 0, 1)); + BOOST_TEST(testC(S("abcdefghij"), 9, 1, "abcde", 1, 9)); + BOOST_TEST(testC(S("abcdefghij"), 9, 1, "abcde", 2, 9)); + BOOST_TEST(testC(S("abcdefghij"), 9, 1, "abcde", 4, 9)); + BOOST_TEST(testC(S("abcdefghij"), 9, 1, "abcde", 5, 9)); + BOOST_TEST(testC(S("abcdefghij"), 9, 1, "abcdefghij", 0, 1)); + BOOST_TEST(testC(S("abcdefghij"), 9, 1, "abcdefghij", 1, 9)); + BOOST_TEST(testC(S("abcdefghij"), 9, 1, "abcdefghij", 5, 9)); + BOOST_TEST(testC(S("abcdefghij"), 9, 1, "abcdefghij", 9, 9)); + BOOST_TEST(testC(S("abcdefghij"), 9, 1, "abcdefghij", 10, 9)); + BOOST_TEST(testC(S("abcdefghij"), 9, 1, "abcdefghijklmnopqrst", 0, 1)); + BOOST_TEST(testC(S("abcdefghij"), 9, 1, "abcdefghijklmnopqrst", 1, 9)); + BOOST_TEST(testC(S("abcdefghij"), 9, 1, "abcdefghijklmnopqrst", 10, 9)); + BOOST_TEST(testC(S("abcdefghij"), 9, 1, "abcdefghijklmnopqrst", 19, 9)); + BOOST_TEST(testC(S("abcdefghij"), 9, 1, "abcdefghijklmnopqrst", 20, 9)); + BOOST_TEST(testC(S("abcdefghij"), 9, 2, "", 0, 1)); + BOOST_TEST(testC(S("abcdefghij"), 9, 2, "abcde", 0, 1)); + BOOST_TEST(testC(S("abcdefghij"), 9, 2, "abcde", 1, 9)); + BOOST_TEST(testC(S("abcdefghij"), 9, 2, "abcde", 2, 9)); + BOOST_TEST(testC(S("abcdefghij"), 9, 2, "abcde", 4, 9)); + BOOST_TEST(testC(S("abcdefghij"), 9, 2, "abcde", 5, 9)); + BOOST_TEST(testC(S("abcdefghij"), 9, 2, "abcdefghij", 0, 1)); + BOOST_TEST(testC(S("abcdefghij"), 9, 2, "abcdefghij", 1, 9)); + BOOST_TEST(testC(S("abcdefghij"), 9, 2, "abcdefghij", 5, 9)); + BOOST_TEST(testC(S("abcdefghij"), 9, 2, "abcdefghij", 9, 9)); + BOOST_TEST(testC(S("abcdefghij"), 9, 2, "abcdefghij", 10, 9)); + BOOST_TEST(testC(S("abcdefghij"), 9, 2, "abcdefghijklmnopqrst", 0, 1)); + BOOST_TEST(testC(S("abcdefghij"), 9, 2, "abcdefghijklmnopqrst", 1, 9)); + BOOST_TEST(testC(S("abcdefghij"), 9, 2, "abcdefghijklmnopqrst", 10, 9)); + BOOST_TEST(testC(S("abcdefghij"), 9, 2, "abcdefghijklmnopqrst", 19, 9)); + BOOST_TEST(testC(S("abcdefghij"), 9, 2, "abcdefghijklmnopqrst", 20, 9)); + BOOST_TEST(testC(S("abcdefghij"), 10, 0, "", 0, 0)); + BOOST_TEST(testC(S("abcdefghij"), 10, 0, "abcde", 0, 0)); + BOOST_TEST(testC(S("abcdefghij"), 10, 0, "abcde", 1, -1)); + BOOST_TEST(testC(S("abcdefghij"), 10, 0, "abcde", 2, -2)); + BOOST_TEST(testC(S("abcdefghij"), 10, 0, "abcde", 4, -4)); + BOOST_TEST(testC(S("abcdefghij"), 10, 0, "abcde", 5, -5)); + BOOST_TEST(testC(S("abcdefghij"), 10, 0, "abcdefghij", 0, 0)); + BOOST_TEST(testC(S("abcdefghij"), 10, 0, "abcdefghij", 1, -1)); + BOOST_TEST(testC(S("abcdefghij"), 10, 0, "abcdefghij", 5, -5)); + BOOST_TEST(testC(S("abcdefghij"), 10, 0, "abcdefghij", 9, -9)); + BOOST_TEST(testC(S("abcdefghij"), 10, 0, "abcdefghij", 10, -10)); + BOOST_TEST(testC(S("abcdefghij"), 10, 0, "abcdefghijklmnopqrst", 0, 0)); + BOOST_TEST(testC(S("abcdefghij"), 10, 0, "abcdefghijklmnopqrst", 1, -1)); + BOOST_TEST(testC(S("abcdefghij"), 10, 0, "abcdefghijklmnopqrst", 10, -10)); + BOOST_TEST(testC(S("abcdefghij"), 10, 0, "abcdefghijklmnopqrst", 19, -19)); + BOOST_TEST(testC(S("abcdefghij"), 10, 0, "abcdefghijklmnopqrst", 20, -20)); + BOOST_TEST(testC(S("abcdefghij"), 10, 1, "", 0, 0)); + BOOST_TEST(testC(S("abcdefghij"), 10, 1, "abcde", 0, 0)); + BOOST_TEST(testC(S("abcdefghij"), 10, 1, "abcde", 1, -1)); + BOOST_TEST(testC(S("abcdefghij"), 10, 1, "abcde", 2, -2)); + BOOST_TEST(testC(S("abcdefghij"), 10, 1, "abcde", 4, -4)); + BOOST_TEST(testC(S("abcdefghij"), 10, 1, "abcde", 5, -5)); + BOOST_TEST(testC(S("abcdefghij"), 10, 1, "abcdefghij", 0, 0)); + BOOST_TEST(testC(S("abcdefghij"), 10, 1, "abcdefghij", 1, -1)); + BOOST_TEST(testC(S("abcdefghij"), 10, 1, "abcdefghij", 5, -5)); + BOOST_TEST(testC(S("abcdefghij"), 10, 1, "abcdefghij", 9, -9)); + BOOST_TEST(testC(S("abcdefghij"), 10, 1, "abcdefghij", 10, -10)); + BOOST_TEST(testC(S("abcdefghij"), 10, 1, "abcdefghijklmnopqrst", 0, 0)); + BOOST_TEST(testC(S("abcdefghij"), 10, 1, "abcdefghijklmnopqrst", 1, -1)); + BOOST_TEST(testC(S("abcdefghij"), 10, 1, "abcdefghijklmnopqrst", 10, -10)); + BOOST_TEST(testC(S("abcdefghij"), 10, 1, "abcdefghijklmnopqrst", 19, -19)); + BOOST_TEST(testC(S("abcdefghij"), 10, 1, "abcdefghijklmnopqrst", 20, -20)); + BOOST_TEST(testC(S("abcdefghij"), 11, 0, "", 0, 0)); + BOOST_TEST(testC(S("abcdefghij"), 11, 0, "abcde", 0, 0)); + BOOST_TEST(testC(S("abcdefghij"), 11, 0, "abcde", 1, 0)); + BOOST_TEST(testC(S("abcdefghij"), 11, 0, "abcde", 2, 0)); + BOOST_TEST(testC(S("abcdefghij"), 11, 0, "abcde", 4, 0)); + BOOST_TEST(testC(S("abcdefghij"), 11, 0, "abcde", 5, 0)); + BOOST_TEST(testC(S("abcdefghij"), 11, 0, "abcdefghij", 0, 0)); + BOOST_TEST(testC(S("abcdefghij"), 11, 0, "abcdefghij", 1, 0)); + BOOST_TEST(testC(S("abcdefghij"), 11, 0, "abcdefghij", 5, 0)); + BOOST_TEST(testC(S("abcdefghij"), 11, 0, "abcdefghij", 9, 0)); + BOOST_TEST(testC(S("abcdefghij"), 11, 0, "abcdefghij", 10, 0)); + BOOST_TEST(testC(S("abcdefghij"), 11, 0, "abcdefghijklmnopqrst", 0, 0)); + BOOST_TEST(testC(S("abcdefghij"), 11, 0, "abcdefghijklmnopqrst", 1, 0)); + BOOST_TEST(testC(S("abcdefghij"), 11, 0, "abcdefghijklmnopqrst", 10, 0)); + BOOST_TEST(testC(S("abcdefghij"), 11, 0, "abcdefghijklmnopqrst", 19, 0)); + BOOST_TEST(testC(S("abcdefghij"), 11, 0, "abcdefghijklmnopqrst", 20, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 0, "", 0, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 0, "abcde", 0, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 0, "abcde", 1, -1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 0, "abcde", 2, -2)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 0, "abcde", 4, -4)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 0, "abcde", 5, -5)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghij", 0, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghij", 1, -1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghij", 5, -5)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghij", 9, -9)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghij", 10, -10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghijklmnopqrst", 0, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghijklmnopqrst", 1, -1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghijklmnopqrst", 10, -10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghijklmnopqrst", 19, -19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghijklmnopqrst", 20, -20)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 1, "", 0, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 1, "abcde", 0, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 1, "abcde", 1, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 1, "abcde", 2, -1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 1, "abcde", 4, -3)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 1, "abcde", 5, -4)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghij", 0, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghij", 1, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghij", 5, -4)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghij", 9, -8)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghij", 10, -9)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghijklmnopqrst", 0, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghijklmnopqrst", 1, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghijklmnopqrst", 10, -9)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghijklmnopqrst", 19, -18)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghijklmnopqrst", 20, -19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 10, "", 0, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 10, "abcde", 0, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 10, "abcde", 1, 9)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 10, "abcde", 2, 8)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 10, "abcde", 4, 6)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 10, "abcde", 5, 5)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghij", 0, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghij", 1, 9)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghij", 5, 5)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghij", 9, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghij", 10, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghijklmnopqrst", 0, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghijklmnopqrst", 1, 9)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghijklmnopqrst", 10, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghijklmnopqrst", 19, -9)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghijklmnopqrst", 20, -10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 19, "", 0, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 19, "abcde", 0, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 19, "abcde", 1, 18)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 19, "abcde", 2, 17)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 19, "abcde", 4, 15)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 19, "abcde", 5, 14)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghij", 0, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghij", 1, 18)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghij", 5, 14)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghij", 9, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghij", 10, 9)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghijklmnopqrst", 0, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghijklmnopqrst", 1, 18)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghijklmnopqrst", 10, 9)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghijklmnopqrst", 19, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghijklmnopqrst", 20, -1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 20, "", 0, 20)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 20, "abcde", 0, 20)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 20, "abcde", 1, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 20, "abcde", 2, 18)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 20, "abcde", 4, 16)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 20, "abcde", 5, 15)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghij", 0, 20)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghij", 1, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghij", 5, 15)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghij", 9, 11)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghij", 10, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghijklmnopqrst", 0, 20)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghijklmnopqrst", 1, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghijklmnopqrst", 10, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghijklmnopqrst", 19, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghijklmnopqrst", 20, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 21, "", 0, 20)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 21, "abcde", 0, 20)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 21, "abcde", 1, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 21, "abcde", 2, 18)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 21, "abcde", 4, 16)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 21, "abcde", 5, 15)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghij", 0, 20)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghij", 1, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghij", 5, 15)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghij", 9, 11)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghij", 10, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghijklmnopqrst", 0, 20)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghijklmnopqrst", 1, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghijklmnopqrst", 10, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghijklmnopqrst", 19, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghijklmnopqrst", 20, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 0, "", 0, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 0, "abcde", 0, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 0, "abcde", 1, -1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 0, "abcde", 2, -2)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 0, "abcde", 4, -4)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 0, "abcde", 5, -5)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghij", 0, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghij", 1, -1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghij", 5, -5)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghij", 9, -9)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghij", 10, -10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghijklmnopqrst", 0, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghijklmnopqrst", 1, -1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghijklmnopqrst", 10, -10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghijklmnopqrst", 19, -19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghijklmnopqrst", 20, -20)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 1, "", 0, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 1, "abcde", 0, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 1, "abcde", 1, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 1, "abcde", 2, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 1, "abcde", 4, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 1, "abcde", 5, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghij", 0, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghij", 1, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghij", 5, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghij", 9, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghij", 10, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghijklmnopqrst", 0, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghijklmnopqrst", 1, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghijklmnopqrst", 10, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghijklmnopqrst", 19, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghijklmnopqrst", 20, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 9, "", 0, 9)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 9, "abcde", 0, 9)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 9, "abcde", 1, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 9, "abcde", 2, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 9, "abcde", 4, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 9, "abcde", 5, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghij", 0, 9)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghij", 1, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghij", 5, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghij", 9, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghij", 10, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghijklmnopqrst", 0, 9)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghijklmnopqrst", 1, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghijklmnopqrst", 10, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghijklmnopqrst", 19, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghijklmnopqrst", 20, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 18, "", 0, 18)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 18, "abcde", 0, 18)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 18, "abcde", 1, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 18, "abcde", 2, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 18, "abcde", 4, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 18, "abcde", 5, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghij", 0, 18)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghij", 1, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghij", 5, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghij", 9, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghij", 10, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghijklmnopqrst", 0, 18)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghijklmnopqrst", 1, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghijklmnopqrst", 10, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghijklmnopqrst", 19, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghijklmnopqrst", 20, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 19, "", 0, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 19, "abcde", 0, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 19, "abcde", 1, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 19, "abcde", 2, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 19, "abcde", 4, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 19, "abcde", 5, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghij", 0, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghij", 1, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghij", 5, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghij", 9, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghij", 10, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghijklmnopqrst", 0, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghijklmnopqrst", 1, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghijklmnopqrst", 10, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghijklmnopqrst", 19, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghijklmnopqrst", 20, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 20, "", 0, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 20, "abcde", 0, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 20, "abcde", 1, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 20, "abcde", 2, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 20, "abcde", 4, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 20, "abcde", 5, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghij", 0, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghij", 1, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghij", 5, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghij", 9, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghij", 10, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghijklmnopqrst", 0, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghijklmnopqrst", 1, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghijklmnopqrst", 10, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghijklmnopqrst", 19, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghijklmnopqrst", 20, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 0, "", 0, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 0, "abcde", 0, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 0, "abcde", 1, -1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 0, "abcde", 2, -2)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 0, "abcde", 4, -4)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 0, "abcde", 5, -5)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghij", 0, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghij", 1, -1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghij", 5, -5)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghij", 9, -9)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghij", 10, -10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghijklmnopqrst", 0, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghijklmnopqrst", 1, -1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghijklmnopqrst", 10, -10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghijklmnopqrst", 19, -19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghijklmnopqrst", 20, -20)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 1, "", 0, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 1, "abcde", 0, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 1, "abcde", 1, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 1, "abcde", 2, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 1, "abcde", 4, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 1, "abcde", 5, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghij", 0, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghij", 1, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghij", 5, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghij", 9, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghij", 10, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghijklmnopqrst", 0, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghijklmnopqrst", 1, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghijklmnopqrst", 10, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghijklmnopqrst", 19, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghijklmnopqrst", 20, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 5, "", 0, 5)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 5, "abcde", 0, 5)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 5, "abcde", 1, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 5, "abcde", 2, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 5, "abcde", 4, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 5, "abcde", 5, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghij", 0, 5)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghij", 1, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghij", 5, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghij", 9, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghij", 10, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghijklmnopqrst", 0, 5)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghijklmnopqrst", 1, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghijklmnopqrst", 10, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghijklmnopqrst", 19, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghijklmnopqrst", 20, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 9, "", 0, 9)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 9, "abcde", 0, 9)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 9, "abcde", 1, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 9, "abcde", 2, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 9, "abcde", 4, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 9, "abcde", 5, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghij", 0, 9)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghij", 1, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghij", 5, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghij", 9, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghij", 10, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghijklmnopqrst", 0, 9)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghijklmnopqrst", 1, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghijklmnopqrst", 10, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghijklmnopqrst", 19, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghijklmnopqrst", 20, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 10, "", 0, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 10, "abcde", 0, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 10, "abcde", 1, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 10, "abcde", 2, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 10, "abcde", 4, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 10, "abcde", 5, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghij", 0, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghij", 1, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghij", 5, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghij", 9, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghij", 10, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghijklmnopqrst", 0, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghijklmnopqrst", 1, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghijklmnopqrst", 10, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghijklmnopqrst", 19, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghijklmnopqrst", 20, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 11, "", 0, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 11, "abcde", 0, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 11, "abcde", 1, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 11, "abcde", 2, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 11, "abcde", 4, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 11, "abcde", 5, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghij", 0, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghij", 1, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghij", 5, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghij", 9, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghij", 10, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghijklmnopqrst", 0, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghijklmnopqrst", 1, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghijklmnopqrst", 10, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghijklmnopqrst", 19, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghijklmnopqrst", 20, 10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 0, "", 0, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 0, "abcde", 0, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 0, "abcde", 1, -1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 0, "abcde", 2, -2)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 0, "abcde", 4, -4)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 0, "abcde", 5, -5)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghij", 0, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghij", 1, -1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghij", 5, -5)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghij", 9, -9)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghij", 10, -10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghijklmnopqrst", 0, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghijklmnopqrst", 1, -1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghijklmnopqrst", 10, -10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghijklmnopqrst", 19, -19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghijklmnopqrst", 20, -20)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 1, "", 0, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 1, "abcde", 0, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 1, "abcde", 1, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 1, "abcde", 2, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 1, "abcde", 4, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 1, "abcde", 5, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghij", 0, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghij", 1, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghij", 5, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghij", 9, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghij", 10, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghijklmnopqrst", 0, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghijklmnopqrst", 1, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghijklmnopqrst", 10, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghijklmnopqrst", 19, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghijklmnopqrst", 20, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 2, "", 0, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 2, "abcde", 0, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 2, "abcde", 1, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 2, "abcde", 2, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 2, "abcde", 4, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 2, "abcde", 5, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghij", 0, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghij", 1, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghij", 5, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghij", 9, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghij", 10, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghijklmnopqrst", 0, 1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghijklmnopqrst", 1, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghijklmnopqrst", 10, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghijklmnopqrst", 19, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghijklmnopqrst", 20, 19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 0, "", 0, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 0, "abcde", 0, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 0, "abcde", 1, -1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 0, "abcde", 2, -2)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 0, "abcde", 4, -4)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 0, "abcde", 5, -5)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghij", 0, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghij", 1, -1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghij", 5, -5)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghij", 9, -9)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghij", 10, -10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghijklmnopqrst", 0, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghijklmnopqrst", 1, -1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghijklmnopqrst", 10, -10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghijklmnopqrst", 19, -19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghijklmnopqrst", 20, -20)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 1, "", 0, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 1, "abcde", 0, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 1, "abcde", 1, -1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 1, "abcde", 2, -2)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 1, "abcde", 4, -4)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 1, "abcde", 5, -5)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghij", 0, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghij", 1, -1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghij", 5, -5)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghij", 9, -9)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghij", 10, -10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghijklmnopqrst", 0, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghijklmnopqrst", 1, -1)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghijklmnopqrst", 10, -10)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghijklmnopqrst", 19, -19)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghijklmnopqrst", 20, -20)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 21, 0, "", 0, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 21, 0, "abcde", 0, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 21, 0, "abcde", 1, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 21, 0, "abcde", 2, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 21, 0, "abcde", 4, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 21, 0, "abcde", 5, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghij", 0, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghij", 1, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghij", 5, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghij", 9, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghij", 10, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghijklmnopqrst", 0, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghijklmnopqrst", 1, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghijklmnopqrst", 10, 0)); + BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghijklmnopqrst", 19, 0)); BOOST_TEST(testC(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghijklmnopqrst", 20, 0)); } @@ -3425,14 +3426,14 @@ void testSwap() { { - fixed_string<3> s1("123"); - fixed_string<3> s2("XYZ"); + static_string<3> s1("123"); + static_string<3> s2("XYZ"); swap(s1, s2); BOOST_TEST(s1 == "XYZ"); BOOST_TEST(*s1.end() == 0); BOOST_TEST(s2 == "123"); BOOST_TEST(*s2.end() == 0); - fixed_string<3> s3("UV"); + static_string<3> s3("UV"); swap(s2, s3); BOOST_TEST(s2 == "UV"); BOOST_TEST(*s2.end() == 0); @@ -3440,29 +3441,29 @@ testSwap() BOOST_TEST(*s3.end() == 0); } { - fixed_string<5> s1("123"); - fixed_string<7> s2("XYZ"); + static_string<5> s1("123"); + static_string<7> s2("XYZ"); swap(s1, s2); BOOST_TEST(s1 == "XYZ"); BOOST_TEST(*s1.end() == 0); BOOST_TEST(s2 == "123"); BOOST_TEST(*s2.end() == 0); - fixed_string<3> s3("UV"); + static_string<3> s3("UV"); swap(s2, s3); BOOST_TEST(s2 == "UV"); BOOST_TEST(*s2.end() == 0); BOOST_TEST(s3 == "123"); BOOST_TEST(*s3.end() == 0); { - fixed_string<5> s4("12345"); - fixed_string<3> s5("XYZ"); + static_string<5> s4("12345"); + static_string<3> s5("XYZ"); BOOST_TEST_THROWS( (swap(s4, s5)), std::length_error); } { - fixed_string<3> s4("XYZ"); - fixed_string<5> s5("12345"); + static_string<3> s4("XYZ"); + static_string<5> s5("12345"); BOOST_TEST_THROWS( (swap(s4, s5)), std::length_error); @@ -3473,8 +3474,8 @@ testSwap() void testGeneral() { - using str1 = fixed_string<1>; - using str2 = fixed_string<2>; + using str1 = static_string<1>; + using str2 = static_string<2>; { str1 s1; BOOST_TEST(s1 == ""); @@ -3585,22 +3586,22 @@ testGeneral() void testToStaticString() { - BOOST_TEST(to_fixed_string(0) == "0"); - BOOST_TEST(to_fixed_string(1) == "1"); - BOOST_TEST(to_fixed_string(0xffff) == "65535"); - BOOST_TEST(to_fixed_string(0x10000) == "65536"); - BOOST_TEST(to_fixed_string(0xffffffff) == "4294967295"); + BOOST_TEST(to_static_string(0) == "0"); + BOOST_TEST(to_static_string(1) == "1"); + BOOST_TEST(to_static_string(0xffff) == "65535"); + BOOST_TEST(to_static_string(0x10000) == "65536"); + BOOST_TEST(to_static_string(0xffffffff) == "4294967295"); - BOOST_TEST(to_fixed_string(-1) == "-1"); - BOOST_TEST(to_fixed_string(-65535) == "-65535"); - BOOST_TEST(to_fixed_string(-65536) == "-65536"); - BOOST_TEST(to_fixed_string(-4294967295ll) == "-4294967295"); + BOOST_TEST(to_static_string(-1) == "-1"); + BOOST_TEST(to_static_string(-65535) == "-65535"); + BOOST_TEST(to_static_string(-65536) == "-65536"); + BOOST_TEST(to_static_string(-4294967295ll) == "-4294967295"); - BOOST_TEST(to_fixed_string(0) == "0"); - BOOST_TEST(to_fixed_string(1) == "1"); - BOOST_TEST(to_fixed_string(0xffff) == "65535"); - BOOST_TEST(to_fixed_string(0x10000) == "65536"); - BOOST_TEST(to_fixed_string(0xffffffff) == "4294967295"); + BOOST_TEST(to_static_string(0) == "0"); + BOOST_TEST(to_static_string(1) == "1"); + BOOST_TEST(to_static_string(0xffff) == "65535"); + BOOST_TEST(to_static_string(0x10000) == "65536"); + BOOST_TEST(to_static_string(0xffffffff) == "4294967295"); } // done @@ -3611,9 +3612,9 @@ testFind() const char* cs2 = "2345"; string_view v1 = cs1; string_view v2 = cs2; - fixed_string<5> fs1 = cs1; - fixed_string<4> fs2 = cs2; - using S = fixed_string<400>; + static_string<5> fs1 = cs1; + static_string<4> fs2 = cs2; + using S = static_string<400>; // find @@ -3636,305 +3637,305 @@ testFind() BOOST_TEST(fs1.find('1') == 0); BOOST_TEST(fs1.find('1', 4) == -1); - BOOST_TEST(testF(S(""), "", 0, 0, 0)); - BOOST_TEST(testF(S(""), "abcde", 0, 0, 0)); - BOOST_TEST(testF(S(""), "abcde", 0, 1, S::npos)); - BOOST_TEST(testF(S(""), "abcde", 0, 2, S::npos)); - BOOST_TEST(testF(S(""), "abcde", 0, 4, S::npos)); - BOOST_TEST(testF(S(""), "abcde", 0, 5, S::npos)); - BOOST_TEST(testF(S(""), "abcdeabcde", 0, 0, 0)); - BOOST_TEST(testF(S(""), "abcdeabcde", 0, 1, S::npos)); - BOOST_TEST(testF(S(""), "abcdeabcde", 0, 5, S::npos)); - BOOST_TEST(testF(S(""), "abcdeabcde", 0, 9, S::npos)); - BOOST_TEST(testF(S(""), "abcdeabcde", 0, 10, S::npos)); - BOOST_TEST(testF(S(""), "abcdeabcdeabcdeabcde", 0, 0, 0)); - BOOST_TEST(testF(S(""), "abcdeabcdeabcdeabcde", 0, 1, S::npos)); - BOOST_TEST(testF(S(""), "abcdeabcdeabcdeabcde", 0, 10, S::npos)); - BOOST_TEST(testF(S(""), "abcdeabcdeabcdeabcde", 0, 19, S::npos)); - BOOST_TEST(testF(S(""), "abcdeabcdeabcdeabcde", 0, 20, S::npos)); - BOOST_TEST(testF(S(""), "", 1, 0, S::npos)); - BOOST_TEST(testF(S(""), "abcde", 1, 0, S::npos)); - BOOST_TEST(testF(S(""), "abcde", 1, 1, S::npos)); - BOOST_TEST(testF(S(""), "abcde", 1, 2, S::npos)); - BOOST_TEST(testF(S(""), "abcde", 1, 4, S::npos)); - BOOST_TEST(testF(S(""), "abcde", 1, 5, S::npos)); - BOOST_TEST(testF(S(""), "abcdeabcde", 1, 0, S::npos)); - BOOST_TEST(testF(S(""), "abcdeabcde", 1, 1, S::npos)); - BOOST_TEST(testF(S(""), "abcdeabcde", 1, 5, S::npos)); - BOOST_TEST(testF(S(""), "abcdeabcde", 1, 9, S::npos)); - BOOST_TEST(testF(S(""), "abcdeabcde", 1, 10, S::npos)); - BOOST_TEST(testF(S(""), "abcdeabcdeabcdeabcde", 1, 0, S::npos)); - BOOST_TEST(testF(S(""), "abcdeabcdeabcdeabcde", 1, 1, S::npos)); - BOOST_TEST(testF(S(""), "abcdeabcdeabcdeabcde", 1, 10, S::npos)); - BOOST_TEST(testF(S(""), "abcdeabcdeabcdeabcde", 1, 19, S::npos)); - BOOST_TEST(testF(S(""), "abcdeabcdeabcdeabcde", 1, 20, S::npos)); - BOOST_TEST(testF(S("abcde"), "", 0, 0, 0)); - BOOST_TEST(testF(S("abcde"), "abcde", 0, 0, 0)); - BOOST_TEST(testF(S("abcde"), "abcde", 0, 1, 0)); - BOOST_TEST(testF(S("abcde"), "abcde", 0, 2, 0)); - BOOST_TEST(testF(S("abcde"), "abcde", 0, 4, 0)); - BOOST_TEST(testF(S("abcde"), "abcde", 0, 5, 0)); - BOOST_TEST(testF(S("abcde"), "abcdeabcde", 0, 0, 0)); - BOOST_TEST(testF(S("abcde"), "abcdeabcde", 0, 1, 0)); - BOOST_TEST(testF(S("abcde"), "abcdeabcde", 0, 5, 0)); - BOOST_TEST(testF(S("abcde"), "abcdeabcde", 0, 9, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcde", 0, 10, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 0, 0, 0)); - BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 0, 1, 0)); - BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 0, 10, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 0, 19, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 0, 20, S::npos)); - BOOST_TEST(testF(S("abcde"), "", 1, 0, 1)); - BOOST_TEST(testF(S("abcde"), "abcde", 1, 0, 1)); - BOOST_TEST(testF(S("abcde"), "abcde", 1, 1, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcde", 1, 2, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcde", 1, 4, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcde", 1, 5, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcde", 1, 0, 1)); - BOOST_TEST(testF(S("abcde"), "abcdeabcde", 1, 1, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcde", 1, 5, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcde", 1, 9, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcde", 1, 10, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 1, 0, 1)); - BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 1, 1, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 1, 10, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 1, 19, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 1, 20, S::npos)); - BOOST_TEST(testF(S("abcde"), "", 2, 0, 2)); - BOOST_TEST(testF(S("abcde"), "abcde", 2, 0, 2)); - BOOST_TEST(testF(S("abcde"), "abcde", 2, 1, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcde", 2, 2, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcde", 2, 4, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcde", 2, 5, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcde", 2, 0, 2)); - BOOST_TEST(testF(S("abcde"), "abcdeabcde", 2, 1, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcde", 2, 5, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcde", 2, 9, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcde", 2, 10, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 2, 0, 2)); - BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 2, 1, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 2, 10, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 2, 19, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 2, 20, S::npos)); - BOOST_TEST(testF(S("abcde"), "", 4, 0, 4)); - BOOST_TEST(testF(S("abcde"), "abcde", 4, 0, 4)); - BOOST_TEST(testF(S("abcde"), "abcde", 4, 1, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcde", 4, 2, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcde", 4, 4, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcde", 4, 5, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcde", 4, 0, 4)); - BOOST_TEST(testF(S("abcde"), "abcdeabcde", 4, 1, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcde", 4, 5, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcde", 4, 9, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcde", 4, 10, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 4, 0, 4)); - BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 4, 1, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 4, 10, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 4, 19, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 4, 20, S::npos)); - BOOST_TEST(testF(S("abcde"), "", 5, 0, 5)); - BOOST_TEST(testF(S("abcde"), "abcde", 5, 0, 5)); - BOOST_TEST(testF(S("abcde"), "abcde", 5, 1, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcde", 5, 2, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcde", 5, 4, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcde", 5, 5, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcde", 5, 0, 5)); - BOOST_TEST(testF(S("abcde"), "abcdeabcde", 5, 1, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcde", 5, 5, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcde", 5, 9, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcde", 5, 10, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 5, 0, 5)); - BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 5, 1, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 5, 10, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 5, 19, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 5, 20, S::npos)); - BOOST_TEST(testF(S("abcde"), "", 6, 0, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcde", 6, 0, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcde", 6, 1, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcde", 6, 2, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcde", 6, 4, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcde", 6, 5, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcde", 6, 0, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcde", 6, 1, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcde", 6, 5, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcde", 6, 9, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcde", 6, 10, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 6, 0, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 6, 1, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 6, 10, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 6, 19, S::npos)); - BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 6, 20, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "", 0, 0, 0)); - BOOST_TEST(testF(S("abcdeabcde"), "abcde", 0, 0, 0)); - BOOST_TEST(testF(S("abcdeabcde"), "abcde", 0, 1, 0)); - BOOST_TEST(testF(S("abcdeabcde"), "abcde", 0, 2, 0)); - BOOST_TEST(testF(S("abcdeabcde"), "abcde", 0, 4, 0)); - BOOST_TEST(testF(S("abcdeabcde"), "abcde", 0, 5, 0)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 0, 0, 0)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 0, 1, 0)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 0, 5, 0)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 0, 9, 0)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 0, 10, 0)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 0, 0)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 1, 0)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 10, 0)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 19, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 20, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "", 1, 0, 1)); - BOOST_TEST(testF(S("abcdeabcde"), "abcde", 1, 0, 1)); - BOOST_TEST(testF(S("abcdeabcde"), "abcde", 1, 1, 5)); - BOOST_TEST(testF(S("abcdeabcde"), "abcde", 1, 2, 5)); - BOOST_TEST(testF(S("abcdeabcde"), "abcde", 1, 4, 5)); - BOOST_TEST(testF(S("abcdeabcde"), "abcde", 1, 5, 5)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 1, 0, 1)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 1, 1, 5)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 1, 5, 5)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 1, 9, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 1, 10, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 0, 1)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 1, 5)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 10, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 19, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 20, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "", 5, 0, 5)); - BOOST_TEST(testF(S("abcdeabcde"), "abcde", 5, 0, 5)); - BOOST_TEST(testF(S("abcdeabcde"), "abcde", 5, 1, 5)); - BOOST_TEST(testF(S("abcdeabcde"), "abcde", 5, 2, 5)); - BOOST_TEST(testF(S("abcdeabcde"), "abcde", 5, 4, 5)); - BOOST_TEST(testF(S("abcdeabcde"), "abcde", 5, 5, 5)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 5, 0, 5)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 5, 1, 5)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 5, 5, 5)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 5, 9, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 5, 10, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 0, 5)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 1, 5)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 10, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 19, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 20, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "", 9, 0, 9)); - BOOST_TEST(testF(S("abcdeabcde"), "abcde", 9, 0, 9)); - BOOST_TEST(testF(S("abcdeabcde"), "abcde", 9, 1, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcde", 9, 2, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcde", 9, 4, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcde", 9, 5, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 9, 0, 9)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 9, 1, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 9, 5, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 9, 9, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 9, 10, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 0, 9)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 1, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 10, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 19, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 20, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "", 10, 0, 10)); - BOOST_TEST(testF(S("abcdeabcde"), "abcde", 10, 0, 10)); - BOOST_TEST(testF(S("abcdeabcde"), "abcde", 10, 1, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcde", 10, 2, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcde", 10, 4, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcde", 10, 5, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 10, 0, 10)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 10, 1, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 10, 5, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 10, 9, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 10, 10, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 0, 10)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 1, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 10, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 19, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 20, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "", 11, 0, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcde", 11, 0, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcde", 11, 1, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcde", 11, 2, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcde", 11, 4, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcde", 11, 5, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 11, 0, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 11, 1, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 11, 5, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 11, 9, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 11, 10, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 0, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 1, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 10, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 19, S::npos)); - BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 20, S::npos)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "", 0, 0, 0)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 0, 0, 0)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 0, 1, 0)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 0, 2, 0)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 0, 4, 0)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 0, 5, 0)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 0, 0)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 1, 0)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 5, 0)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 9, 0)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 10, 0)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 0, 0)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 1, 0)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 10, 0)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 19, 0)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 20, 0)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "", 1, 0, 1)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 1, 0, 1)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 1, 1, 5)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 1, 2, 5)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 1, 4, 5)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 1, 5, 5)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 0, 1)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 1, 5)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 5, 5)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 9, 5)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 10, 5)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 0, 1)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 1, 5)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 10, 5)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 19, S::npos)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 20, S::npos)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "", 10, 0, 10)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 10, 0, 10)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 10, 1, 10)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 10, 2, 10)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 10, 4, 10)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 10, 5, 10)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 0, 10)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 1, 10)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 5, 10)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 9, 10)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 10, 10)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 0, 10)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 1, 10)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 10, 10)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 19, S::npos)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 20, S::npos)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "", 19, 0, 19)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 19, 0, 19)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 19, 1, S::npos)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 19, 2, S::npos)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 19, 4, S::npos)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 19, 5, S::npos)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 0, 19)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 1, S::npos)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 5, S::npos)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 9, S::npos)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 10, S::npos)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 0, 19)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 1, S::npos)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 10, S::npos)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 19, S::npos)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 20, S::npos)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "", 20, 0, 20)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 20, 0, 20)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 20, 1, S::npos)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 20, 2, S::npos)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 20, 4, S::npos)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 20, 5, S::npos)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 0, 20)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 1, S::npos)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 5, S::npos)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 9, S::npos)); - BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 10, S::npos)); + BOOST_TEST(testF(S(""), "", 0, 0, 0)); + BOOST_TEST(testF(S(""), "abcde", 0, 0, 0)); + BOOST_TEST(testF(S(""), "abcde", 0, 1, S::npos)); + BOOST_TEST(testF(S(""), "abcde", 0, 2, S::npos)); + BOOST_TEST(testF(S(""), "abcde", 0, 4, S::npos)); + BOOST_TEST(testF(S(""), "abcde", 0, 5, S::npos)); + BOOST_TEST(testF(S(""), "abcdeabcde", 0, 0, 0)); + BOOST_TEST(testF(S(""), "abcdeabcde", 0, 1, S::npos)); + BOOST_TEST(testF(S(""), "abcdeabcde", 0, 5, S::npos)); + BOOST_TEST(testF(S(""), "abcdeabcde", 0, 9, S::npos)); + BOOST_TEST(testF(S(""), "abcdeabcde", 0, 10, S::npos)); + BOOST_TEST(testF(S(""), "abcdeabcdeabcdeabcde", 0, 0, 0)); + BOOST_TEST(testF(S(""), "abcdeabcdeabcdeabcde", 0, 1, S::npos)); + BOOST_TEST(testF(S(""), "abcdeabcdeabcdeabcde", 0, 10, S::npos)); + BOOST_TEST(testF(S(""), "abcdeabcdeabcdeabcde", 0, 19, S::npos)); + BOOST_TEST(testF(S(""), "abcdeabcdeabcdeabcde", 0, 20, S::npos)); + BOOST_TEST(testF(S(""), "", 1, 0, S::npos)); + BOOST_TEST(testF(S(""), "abcde", 1, 0, S::npos)); + BOOST_TEST(testF(S(""), "abcde", 1, 1, S::npos)); + BOOST_TEST(testF(S(""), "abcde", 1, 2, S::npos)); + BOOST_TEST(testF(S(""), "abcde", 1, 4, S::npos)); + BOOST_TEST(testF(S(""), "abcde", 1, 5, S::npos)); + BOOST_TEST(testF(S(""), "abcdeabcde", 1, 0, S::npos)); + BOOST_TEST(testF(S(""), "abcdeabcde", 1, 1, S::npos)); + BOOST_TEST(testF(S(""), "abcdeabcde", 1, 5, S::npos)); + BOOST_TEST(testF(S(""), "abcdeabcde", 1, 9, S::npos)); + BOOST_TEST(testF(S(""), "abcdeabcde", 1, 10, S::npos)); + BOOST_TEST(testF(S(""), "abcdeabcdeabcdeabcde", 1, 0, S::npos)); + BOOST_TEST(testF(S(""), "abcdeabcdeabcdeabcde", 1, 1, S::npos)); + BOOST_TEST(testF(S(""), "abcdeabcdeabcdeabcde", 1, 10, S::npos)); + BOOST_TEST(testF(S(""), "abcdeabcdeabcdeabcde", 1, 19, S::npos)); + BOOST_TEST(testF(S(""), "abcdeabcdeabcdeabcde", 1, 20, S::npos)); + BOOST_TEST(testF(S("abcde"), "", 0, 0, 0)); + BOOST_TEST(testF(S("abcde"), "abcde", 0, 0, 0)); + BOOST_TEST(testF(S("abcde"), "abcde", 0, 1, 0)); + BOOST_TEST(testF(S("abcde"), "abcde", 0, 2, 0)); + BOOST_TEST(testF(S("abcde"), "abcde", 0, 4, 0)); + BOOST_TEST(testF(S("abcde"), "abcde", 0, 5, 0)); + BOOST_TEST(testF(S("abcde"), "abcdeabcde", 0, 0, 0)); + BOOST_TEST(testF(S("abcde"), "abcdeabcde", 0, 1, 0)); + BOOST_TEST(testF(S("abcde"), "abcdeabcde", 0, 5, 0)); + BOOST_TEST(testF(S("abcde"), "abcdeabcde", 0, 9, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcde", 0, 10, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 0, 0, 0)); + BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 0, 1, 0)); + BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 0, 10, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 0, 19, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 0, 20, S::npos)); + BOOST_TEST(testF(S("abcde"), "", 1, 0, 1)); + BOOST_TEST(testF(S("abcde"), "abcde", 1, 0, 1)); + BOOST_TEST(testF(S("abcde"), "abcde", 1, 1, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcde", 1, 2, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcde", 1, 4, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcde", 1, 5, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcde", 1, 0, 1)); + BOOST_TEST(testF(S("abcde"), "abcdeabcde", 1, 1, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcde", 1, 5, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcde", 1, 9, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcde", 1, 10, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 1, 0, 1)); + BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 1, 1, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 1, 10, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 1, 19, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 1, 20, S::npos)); + BOOST_TEST(testF(S("abcde"), "", 2, 0, 2)); + BOOST_TEST(testF(S("abcde"), "abcde", 2, 0, 2)); + BOOST_TEST(testF(S("abcde"), "abcde", 2, 1, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcde", 2, 2, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcde", 2, 4, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcde", 2, 5, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcde", 2, 0, 2)); + BOOST_TEST(testF(S("abcde"), "abcdeabcde", 2, 1, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcde", 2, 5, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcde", 2, 9, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcde", 2, 10, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 2, 0, 2)); + BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 2, 1, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 2, 10, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 2, 19, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 2, 20, S::npos)); + BOOST_TEST(testF(S("abcde"), "", 4, 0, 4)); + BOOST_TEST(testF(S("abcde"), "abcde", 4, 0, 4)); + BOOST_TEST(testF(S("abcde"), "abcde", 4, 1, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcde", 4, 2, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcde", 4, 4, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcde", 4, 5, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcde", 4, 0, 4)); + BOOST_TEST(testF(S("abcde"), "abcdeabcde", 4, 1, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcde", 4, 5, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcde", 4, 9, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcde", 4, 10, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 4, 0, 4)); + BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 4, 1, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 4, 10, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 4, 19, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 4, 20, S::npos)); + BOOST_TEST(testF(S("abcde"), "", 5, 0, 5)); + BOOST_TEST(testF(S("abcde"), "abcde", 5, 0, 5)); + BOOST_TEST(testF(S("abcde"), "abcde", 5, 1, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcde", 5, 2, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcde", 5, 4, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcde", 5, 5, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcde", 5, 0, 5)); + BOOST_TEST(testF(S("abcde"), "abcdeabcde", 5, 1, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcde", 5, 5, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcde", 5, 9, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcde", 5, 10, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 5, 0, 5)); + BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 5, 1, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 5, 10, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 5, 19, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 5, 20, S::npos)); + BOOST_TEST(testF(S("abcde"), "", 6, 0, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcde", 6, 0, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcde", 6, 1, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcde", 6, 2, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcde", 6, 4, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcde", 6, 5, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcde", 6, 0, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcde", 6, 1, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcde", 6, 5, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcde", 6, 9, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcde", 6, 10, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 6, 0, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 6, 1, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 6, 10, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 6, 19, S::npos)); + BOOST_TEST(testF(S("abcde"), "abcdeabcdeabcdeabcde", 6, 20, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "", 0, 0, 0)); + BOOST_TEST(testF(S("abcdeabcde"), "abcde", 0, 0, 0)); + BOOST_TEST(testF(S("abcdeabcde"), "abcde", 0, 1, 0)); + BOOST_TEST(testF(S("abcdeabcde"), "abcde", 0, 2, 0)); + BOOST_TEST(testF(S("abcdeabcde"), "abcde", 0, 4, 0)); + BOOST_TEST(testF(S("abcdeabcde"), "abcde", 0, 5, 0)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 0, 0, 0)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 0, 1, 0)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 0, 5, 0)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 0, 9, 0)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 0, 10, 0)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 0, 0)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 1, 0)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 10, 0)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 19, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 20, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "", 1, 0, 1)); + BOOST_TEST(testF(S("abcdeabcde"), "abcde", 1, 0, 1)); + BOOST_TEST(testF(S("abcdeabcde"), "abcde", 1, 1, 5)); + BOOST_TEST(testF(S("abcdeabcde"), "abcde", 1, 2, 5)); + BOOST_TEST(testF(S("abcdeabcde"), "abcde", 1, 4, 5)); + BOOST_TEST(testF(S("abcdeabcde"), "abcde", 1, 5, 5)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 1, 0, 1)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 1, 1, 5)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 1, 5, 5)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 1, 9, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 1, 10, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 0, 1)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 1, 5)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 10, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 19, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 20, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "", 5, 0, 5)); + BOOST_TEST(testF(S("abcdeabcde"), "abcde", 5, 0, 5)); + BOOST_TEST(testF(S("abcdeabcde"), "abcde", 5, 1, 5)); + BOOST_TEST(testF(S("abcdeabcde"), "abcde", 5, 2, 5)); + BOOST_TEST(testF(S("abcdeabcde"), "abcde", 5, 4, 5)); + BOOST_TEST(testF(S("abcdeabcde"), "abcde", 5, 5, 5)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 5, 0, 5)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 5, 1, 5)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 5, 5, 5)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 5, 9, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 5, 10, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 0, 5)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 1, 5)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 10, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 19, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 20, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "", 9, 0, 9)); + BOOST_TEST(testF(S("abcdeabcde"), "abcde", 9, 0, 9)); + BOOST_TEST(testF(S("abcdeabcde"), "abcde", 9, 1, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcde", 9, 2, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcde", 9, 4, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcde", 9, 5, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 9, 0, 9)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 9, 1, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 9, 5, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 9, 9, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 9, 10, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 0, 9)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 1, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 10, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 19, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 20, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "", 10, 0, 10)); + BOOST_TEST(testF(S("abcdeabcde"), "abcde", 10, 0, 10)); + BOOST_TEST(testF(S("abcdeabcde"), "abcde", 10, 1, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcde", 10, 2, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcde", 10, 4, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcde", 10, 5, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 10, 0, 10)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 10, 1, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 10, 5, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 10, 9, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 10, 10, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 0, 10)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 1, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 10, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 19, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 20, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "", 11, 0, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcde", 11, 0, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcde", 11, 1, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcde", 11, 2, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcde", 11, 4, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcde", 11, 5, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 11, 0, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 11, 1, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 11, 5, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 11, 9, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcde", 11, 10, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 0, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 1, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 10, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 19, S::npos)); + BOOST_TEST(testF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 20, S::npos)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "", 0, 0, 0)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 0, 0, 0)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 0, 1, 0)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 0, 2, 0)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 0, 4, 0)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 0, 5, 0)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 0, 0)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 1, 0)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 5, 0)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 9, 0)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 10, 0)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 0, 0)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 1, 0)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 10, 0)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 19, 0)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 20, 0)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "", 1, 0, 1)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 1, 0, 1)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 1, 1, 5)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 1, 2, 5)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 1, 4, 5)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 1, 5, 5)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 0, 1)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 1, 5)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 5, 5)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 9, 5)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 10, 5)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 0, 1)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 1, 5)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 10, 5)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 19, S::npos)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 20, S::npos)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "", 10, 0, 10)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 10, 0, 10)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 10, 1, 10)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 10, 2, 10)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 10, 4, 10)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 10, 5, 10)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 0, 10)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 1, 10)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 5, 10)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 9, 10)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 10, 10)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 0, 10)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 1, 10)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 10, 10)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 19, S::npos)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 20, S::npos)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "", 19, 0, 19)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 19, 0, 19)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 19, 1, S::npos)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 19, 2, S::npos)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 19, 4, S::npos)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 19, 5, S::npos)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 0, 19)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 1, S::npos)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 5, S::npos)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 9, S::npos)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 10, S::npos)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 0, 19)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 1, S::npos)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 10, S::npos)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 19, S::npos)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 20, S::npos)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "", 20, 0, 20)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 20, 0, 20)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 20, 1, S::npos)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 20, 2, S::npos)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 20, 4, S::npos)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcde", 20, 5, S::npos)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 0, 20)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 1, S::npos)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 5, S::npos)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 9, S::npos)); + BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 10, S::npos)); BOOST_TEST(testF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 0, 20)); @@ -3974,305 +3975,305 @@ testFind() BOOST_TEST(fs1.rfind('1', 4) == 0); - BOOST_TEST(testRF(S(""), "", 0, 0, 0)); - BOOST_TEST(testRF(S(""), "abcde", 0, 0, 0)); - BOOST_TEST(testRF(S(""), "abcde", 0, 1, S::npos)); - BOOST_TEST(testRF(S(""), "abcde", 0, 2, S::npos)); - BOOST_TEST(testRF(S(""), "abcde", 0, 4, S::npos)); - BOOST_TEST(testRF(S(""), "abcde", 0, 5, S::npos)); - BOOST_TEST(testRF(S(""), "abcdeabcde", 0, 0, 0)); - BOOST_TEST(testRF(S(""), "abcdeabcde", 0, 1, S::npos)); - BOOST_TEST(testRF(S(""), "abcdeabcde", 0, 5, S::npos)); - BOOST_TEST(testRF(S(""), "abcdeabcde", 0, 9, S::npos)); - BOOST_TEST(testRF(S(""), "abcdeabcde", 0, 10, S::npos)); - BOOST_TEST(testRF(S(""), "abcdeabcdeabcdeabcde", 0, 0, 0)); - BOOST_TEST(testRF(S(""), "abcdeabcdeabcdeabcde", 0, 1, S::npos)); - BOOST_TEST(testRF(S(""), "abcdeabcdeabcdeabcde", 0, 10, S::npos)); - BOOST_TEST(testRF(S(""), "abcdeabcdeabcdeabcde", 0, 19, S::npos)); - BOOST_TEST(testRF(S(""), "abcdeabcdeabcdeabcde", 0, 20, S::npos)); - BOOST_TEST(testRF(S(""), "", 1, 0, 0)); - BOOST_TEST(testRF(S(""), "abcde", 1, 0, 0)); - BOOST_TEST(testRF(S(""), "abcde", 1, 1, S::npos)); - BOOST_TEST(testRF(S(""), "abcde", 1, 2, S::npos)); - BOOST_TEST(testRF(S(""), "abcde", 1, 4, S::npos)); - BOOST_TEST(testRF(S(""), "abcde", 1, 5, S::npos)); - BOOST_TEST(testRF(S(""), "abcdeabcde", 1, 0, 0)); - BOOST_TEST(testRF(S(""), "abcdeabcde", 1, 1, S::npos)); - BOOST_TEST(testRF(S(""), "abcdeabcde", 1, 5, S::npos)); - BOOST_TEST(testRF(S(""), "abcdeabcde", 1, 9, S::npos)); - BOOST_TEST(testRF(S(""), "abcdeabcde", 1, 10, S::npos)); - BOOST_TEST(testRF(S(""), "abcdeabcdeabcdeabcde", 1, 0, 0)); - BOOST_TEST(testRF(S(""), "abcdeabcdeabcdeabcde", 1, 1, S::npos)); - BOOST_TEST(testRF(S(""), "abcdeabcdeabcdeabcde", 1, 10, S::npos)); - BOOST_TEST(testRF(S(""), "abcdeabcdeabcdeabcde", 1, 19, S::npos)); - BOOST_TEST(testRF(S(""), "abcdeabcdeabcdeabcde", 1, 20, S::npos)); - BOOST_TEST(testRF(S("abcde"), "", 0, 0, 0)); - BOOST_TEST(testRF(S("abcde"), "abcde", 0, 0, 0)); - BOOST_TEST(testRF(S("abcde"), "abcde", 0, 1, 0)); - BOOST_TEST(testRF(S("abcde"), "abcde", 0, 2, 0)); - BOOST_TEST(testRF(S("abcde"), "abcde", 0, 4, 0)); - BOOST_TEST(testRF(S("abcde"), "abcde", 0, 5, 0)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 0, 0, 0)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 0, 1, 0)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 0, 5, 0)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 0, 9, S::npos)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 0, 10, S::npos)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 0, 0, 0)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 0, 1, 0)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 0, 10, S::npos)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 0, 19, S::npos)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 0, 20, S::npos)); - BOOST_TEST(testRF(S("abcde"), "", 1, 0, 1)); - BOOST_TEST(testRF(S("abcde"), "abcde", 1, 0, 1)); - BOOST_TEST(testRF(S("abcde"), "abcde", 1, 1, 0)); - BOOST_TEST(testRF(S("abcde"), "abcde", 1, 2, 0)); - BOOST_TEST(testRF(S("abcde"), "abcde", 1, 4, 0)); - BOOST_TEST(testRF(S("abcde"), "abcde", 1, 5, 0)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 1, 0, 1)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 1, 1, 0)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 1, 5, 0)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 1, 9, S::npos)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 1, 10, S::npos)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 1, 0, 1)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 1, 1, 0)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 1, 10, S::npos)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 1, 19, S::npos)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 1, 20, S::npos)); - BOOST_TEST(testRF(S("abcde"), "", 2, 0, 2)); - BOOST_TEST(testRF(S("abcde"), "abcde", 2, 0, 2)); - BOOST_TEST(testRF(S("abcde"), "abcde", 2, 1, 0)); - BOOST_TEST(testRF(S("abcde"), "abcde", 2, 2, 0)); - BOOST_TEST(testRF(S("abcde"), "abcde", 2, 4, 0)); - BOOST_TEST(testRF(S("abcde"), "abcde", 2, 5, 0)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 2, 0, 2)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 2, 1, 0)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 2, 5, 0)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 2, 9, S::npos)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 2, 10, S::npos)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 2, 0, 2)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 2, 1, 0)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 2, 10, S::npos)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 2, 19, S::npos)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 2, 20, S::npos)); - BOOST_TEST(testRF(S("abcde"), "", 4, 0, 4)); - BOOST_TEST(testRF(S("abcde"), "abcde", 4, 0, 4)); - BOOST_TEST(testRF(S("abcde"), "abcde", 4, 1, 0)); - BOOST_TEST(testRF(S("abcde"), "abcde", 4, 2, 0)); - BOOST_TEST(testRF(S("abcde"), "abcde", 4, 4, 0)); - BOOST_TEST(testRF(S("abcde"), "abcde", 4, 5, 0)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 4, 0, 4)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 4, 1, 0)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 4, 5, 0)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 4, 9, S::npos)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 4, 10, S::npos)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 4, 0, 4)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 4, 1, 0)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 4, 10, S::npos)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 4, 19, S::npos)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 4, 20, S::npos)); - BOOST_TEST(testRF(S("abcde"), "", 5, 0, 5)); - BOOST_TEST(testRF(S("abcde"), "abcde", 5, 0, 5)); - BOOST_TEST(testRF(S("abcde"), "abcde", 5, 1, 0)); - BOOST_TEST(testRF(S("abcde"), "abcde", 5, 2, 0)); - BOOST_TEST(testRF(S("abcde"), "abcde", 5, 4, 0)); - BOOST_TEST(testRF(S("abcde"), "abcde", 5, 5, 0)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 5, 0, 5)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 5, 1, 0)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 5, 5, 0)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 5, 9, S::npos)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 5, 10, S::npos)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 5, 0, 5)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 5, 1, 0)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 5, 10, S::npos)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 5, 19, S::npos)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 5, 20, S::npos)); - BOOST_TEST(testRF(S("abcde"), "", 6, 0, 5)); - BOOST_TEST(testRF(S("abcde"), "abcde", 6, 0, 5)); - BOOST_TEST(testRF(S("abcde"), "abcde", 6, 1, 0)); - BOOST_TEST(testRF(S("abcde"), "abcde", 6, 2, 0)); - BOOST_TEST(testRF(S("abcde"), "abcde", 6, 4, 0)); - BOOST_TEST(testRF(S("abcde"), "abcde", 6, 5, 0)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 6, 0, 5)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 6, 1, 0)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 6, 5, 0)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 6, 9, S::npos)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 6, 10, S::npos)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 6, 0, 5)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 6, 1, 0)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 6, 10, S::npos)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 6, 19, S::npos)); - BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 6, 20, S::npos)); - BOOST_TEST(testRF(S("abcdeabcde"), "", 0, 0, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 0, 0, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 0, 1, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 0, 2, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 0, 4, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 0, 5, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 0, 0, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 0, 1, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 0, 5, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 0, 9, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 0, 10, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 0, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 1, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 10, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 19, S::npos)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 20, S::npos)); - BOOST_TEST(testRF(S("abcdeabcde"), "", 1, 0, 1)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 1, 0, 1)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 1, 1, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 1, 2, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 1, 4, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 1, 5, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 1, 0, 1)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 1, 1, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 1, 5, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 1, 9, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 1, 10, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 0, 1)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 1, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 10, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 19, S::npos)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 20, S::npos)); - BOOST_TEST(testRF(S("abcdeabcde"), "", 5, 0, 5)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 5, 0, 5)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 5, 1, 5)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 5, 2, 5)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 5, 4, 5)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 5, 5, 5)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 5, 0, 5)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 5, 1, 5)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 5, 5, 5)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 5, 9, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 5, 10, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 0, 5)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 1, 5)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 10, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 19, S::npos)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 20, S::npos)); - BOOST_TEST(testRF(S("abcdeabcde"), "", 9, 0, 9)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 9, 0, 9)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 9, 1, 5)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 9, 2, 5)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 9, 4, 5)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 9, 5, 5)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 9, 0, 9)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 9, 1, 5)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 9, 5, 5)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 9, 9, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 9, 10, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 0, 9)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 1, 5)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 10, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 19, S::npos)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 20, S::npos)); - BOOST_TEST(testRF(S("abcdeabcde"), "", 10, 0, 10)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 10, 0, 10)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 10, 1, 5)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 10, 2, 5)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 10, 4, 5)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 10, 5, 5)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 10, 0, 10)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 10, 1, 5)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 10, 5, 5)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 10, 9, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 10, 10, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 0, 10)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 1, 5)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 10, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 19, S::npos)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 20, S::npos)); - BOOST_TEST(testRF(S("abcdeabcde"), "", 11, 0, 10)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 11, 0, 10)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 11, 1, 5)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 11, 2, 5)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 11, 4, 5)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 11, 5, 5)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 11, 0, 10)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 11, 1, 5)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 11, 5, 5)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 11, 9, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 11, 10, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 0, 10)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 1, 5)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 10, 0)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 19, S::npos)); - BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 20, S::npos)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "", 0, 0, 0)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 0, 0, 0)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 0, 1, 0)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 0, 2, 0)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 0, 4, 0)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 0, 5, 0)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 0, 0)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 1, 0)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 5, 0)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 9, 0)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 10, 0)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 0, 0)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 1, 0)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 10, 0)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 19, 0)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 20, 0)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "", 1, 0, 1)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 1, 0, 1)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 1, 1, 0)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 1, 2, 0)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 1, 4, 0)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 1, 5, 0)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 0, 1)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 1, 0)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 5, 0)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 9, 0)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 10, 0)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 0, 1)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 1, 0)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 10, 0)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 19, 0)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 20, 0)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "", 10, 0, 10)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 10, 0, 10)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 10, 1, 10)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 10, 2, 10)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 10, 4, 10)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 10, 5, 10)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 0, 10)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 1, 10)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 5, 10)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 9, 10)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 10, 10)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 0, 10)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 1, 10)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 10, 10)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 19, 0)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 20, 0)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "", 19, 0, 19)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 19, 0, 19)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 19, 1, 15)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 19, 2, 15)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 19, 4, 15)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 19, 5, 15)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 0, 19)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 1, 15)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 5, 15)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 9, 10)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 10, 10)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 0, 19)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 1, 15)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 10, 10)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 19, 0)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 20, 0)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "", 20, 0, 20)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 20, 0, 20)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 20, 1, 15)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 20, 2, 15)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 20, 4, 15)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 20, 5, 15)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 0, 20)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 1, 15)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 5, 15)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 9, 10)); - BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 10, 10)); + BOOST_TEST(testRF(S(""), "", 0, 0, 0)); + BOOST_TEST(testRF(S(""), "abcde", 0, 0, 0)); + BOOST_TEST(testRF(S(""), "abcde", 0, 1, S::npos)); + BOOST_TEST(testRF(S(""), "abcde", 0, 2, S::npos)); + BOOST_TEST(testRF(S(""), "abcde", 0, 4, S::npos)); + BOOST_TEST(testRF(S(""), "abcde", 0, 5, S::npos)); + BOOST_TEST(testRF(S(""), "abcdeabcde", 0, 0, 0)); + BOOST_TEST(testRF(S(""), "abcdeabcde", 0, 1, S::npos)); + BOOST_TEST(testRF(S(""), "abcdeabcde", 0, 5, S::npos)); + BOOST_TEST(testRF(S(""), "abcdeabcde", 0, 9, S::npos)); + BOOST_TEST(testRF(S(""), "abcdeabcde", 0, 10, S::npos)); + BOOST_TEST(testRF(S(""), "abcdeabcdeabcdeabcde", 0, 0, 0)); + BOOST_TEST(testRF(S(""), "abcdeabcdeabcdeabcde", 0, 1, S::npos)); + BOOST_TEST(testRF(S(""), "abcdeabcdeabcdeabcde", 0, 10, S::npos)); + BOOST_TEST(testRF(S(""), "abcdeabcdeabcdeabcde", 0, 19, S::npos)); + BOOST_TEST(testRF(S(""), "abcdeabcdeabcdeabcde", 0, 20, S::npos)); + BOOST_TEST(testRF(S(""), "", 1, 0, 0)); + BOOST_TEST(testRF(S(""), "abcde", 1, 0, 0)); + BOOST_TEST(testRF(S(""), "abcde", 1, 1, S::npos)); + BOOST_TEST(testRF(S(""), "abcde", 1, 2, S::npos)); + BOOST_TEST(testRF(S(""), "abcde", 1, 4, S::npos)); + BOOST_TEST(testRF(S(""), "abcde", 1, 5, S::npos)); + BOOST_TEST(testRF(S(""), "abcdeabcde", 1, 0, 0)); + BOOST_TEST(testRF(S(""), "abcdeabcde", 1, 1, S::npos)); + BOOST_TEST(testRF(S(""), "abcdeabcde", 1, 5, S::npos)); + BOOST_TEST(testRF(S(""), "abcdeabcde", 1, 9, S::npos)); + BOOST_TEST(testRF(S(""), "abcdeabcde", 1, 10, S::npos)); + BOOST_TEST(testRF(S(""), "abcdeabcdeabcdeabcde", 1, 0, 0)); + BOOST_TEST(testRF(S(""), "abcdeabcdeabcdeabcde", 1, 1, S::npos)); + BOOST_TEST(testRF(S(""), "abcdeabcdeabcdeabcde", 1, 10, S::npos)); + BOOST_TEST(testRF(S(""), "abcdeabcdeabcdeabcde", 1, 19, S::npos)); + BOOST_TEST(testRF(S(""), "abcdeabcdeabcdeabcde", 1, 20, S::npos)); + BOOST_TEST(testRF(S("abcde"), "", 0, 0, 0)); + BOOST_TEST(testRF(S("abcde"), "abcde", 0, 0, 0)); + BOOST_TEST(testRF(S("abcde"), "abcde", 0, 1, 0)); + BOOST_TEST(testRF(S("abcde"), "abcde", 0, 2, 0)); + BOOST_TEST(testRF(S("abcde"), "abcde", 0, 4, 0)); + BOOST_TEST(testRF(S("abcde"), "abcde", 0, 5, 0)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 0, 0, 0)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 0, 1, 0)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 0, 5, 0)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 0, 9, S::npos)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 0, 10, S::npos)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 0, 0, 0)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 0, 1, 0)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 0, 10, S::npos)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 0, 19, S::npos)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 0, 20, S::npos)); + BOOST_TEST(testRF(S("abcde"), "", 1, 0, 1)); + BOOST_TEST(testRF(S("abcde"), "abcde", 1, 0, 1)); + BOOST_TEST(testRF(S("abcde"), "abcde", 1, 1, 0)); + BOOST_TEST(testRF(S("abcde"), "abcde", 1, 2, 0)); + BOOST_TEST(testRF(S("abcde"), "abcde", 1, 4, 0)); + BOOST_TEST(testRF(S("abcde"), "abcde", 1, 5, 0)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 1, 0, 1)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 1, 1, 0)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 1, 5, 0)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 1, 9, S::npos)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 1, 10, S::npos)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 1, 0, 1)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 1, 1, 0)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 1, 10, S::npos)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 1, 19, S::npos)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 1, 20, S::npos)); + BOOST_TEST(testRF(S("abcde"), "", 2, 0, 2)); + BOOST_TEST(testRF(S("abcde"), "abcde", 2, 0, 2)); + BOOST_TEST(testRF(S("abcde"), "abcde", 2, 1, 0)); + BOOST_TEST(testRF(S("abcde"), "abcde", 2, 2, 0)); + BOOST_TEST(testRF(S("abcde"), "abcde", 2, 4, 0)); + BOOST_TEST(testRF(S("abcde"), "abcde", 2, 5, 0)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 2, 0, 2)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 2, 1, 0)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 2, 5, 0)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 2, 9, S::npos)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 2, 10, S::npos)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 2, 0, 2)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 2, 1, 0)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 2, 10, S::npos)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 2, 19, S::npos)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 2, 20, S::npos)); + BOOST_TEST(testRF(S("abcde"), "", 4, 0, 4)); + BOOST_TEST(testRF(S("abcde"), "abcde", 4, 0, 4)); + BOOST_TEST(testRF(S("abcde"), "abcde", 4, 1, 0)); + BOOST_TEST(testRF(S("abcde"), "abcde", 4, 2, 0)); + BOOST_TEST(testRF(S("abcde"), "abcde", 4, 4, 0)); + BOOST_TEST(testRF(S("abcde"), "abcde", 4, 5, 0)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 4, 0, 4)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 4, 1, 0)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 4, 5, 0)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 4, 9, S::npos)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 4, 10, S::npos)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 4, 0, 4)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 4, 1, 0)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 4, 10, S::npos)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 4, 19, S::npos)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 4, 20, S::npos)); + BOOST_TEST(testRF(S("abcde"), "", 5, 0, 5)); + BOOST_TEST(testRF(S("abcde"), "abcde", 5, 0, 5)); + BOOST_TEST(testRF(S("abcde"), "abcde", 5, 1, 0)); + BOOST_TEST(testRF(S("abcde"), "abcde", 5, 2, 0)); + BOOST_TEST(testRF(S("abcde"), "abcde", 5, 4, 0)); + BOOST_TEST(testRF(S("abcde"), "abcde", 5, 5, 0)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 5, 0, 5)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 5, 1, 0)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 5, 5, 0)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 5, 9, S::npos)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 5, 10, S::npos)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 5, 0, 5)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 5, 1, 0)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 5, 10, S::npos)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 5, 19, S::npos)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 5, 20, S::npos)); + BOOST_TEST(testRF(S("abcde"), "", 6, 0, 5)); + BOOST_TEST(testRF(S("abcde"), "abcde", 6, 0, 5)); + BOOST_TEST(testRF(S("abcde"), "abcde", 6, 1, 0)); + BOOST_TEST(testRF(S("abcde"), "abcde", 6, 2, 0)); + BOOST_TEST(testRF(S("abcde"), "abcde", 6, 4, 0)); + BOOST_TEST(testRF(S("abcde"), "abcde", 6, 5, 0)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 6, 0, 5)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 6, 1, 0)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 6, 5, 0)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 6, 9, S::npos)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcde", 6, 10, S::npos)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 6, 0, 5)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 6, 1, 0)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 6, 10, S::npos)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 6, 19, S::npos)); + BOOST_TEST(testRF(S("abcde"), "abcdeabcdeabcdeabcde", 6, 20, S::npos)); + BOOST_TEST(testRF(S("abcdeabcde"), "", 0, 0, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 0, 0, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 0, 1, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 0, 2, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 0, 4, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 0, 5, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 0, 0, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 0, 1, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 0, 5, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 0, 9, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 0, 10, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 0, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 1, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 10, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 19, S::npos)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 20, S::npos)); + BOOST_TEST(testRF(S("abcdeabcde"), "", 1, 0, 1)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 1, 0, 1)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 1, 1, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 1, 2, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 1, 4, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 1, 5, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 1, 0, 1)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 1, 1, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 1, 5, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 1, 9, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 1, 10, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 0, 1)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 1, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 10, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 19, S::npos)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 20, S::npos)); + BOOST_TEST(testRF(S("abcdeabcde"), "", 5, 0, 5)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 5, 0, 5)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 5, 1, 5)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 5, 2, 5)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 5, 4, 5)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 5, 5, 5)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 5, 0, 5)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 5, 1, 5)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 5, 5, 5)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 5, 9, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 5, 10, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 0, 5)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 1, 5)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 10, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 19, S::npos)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 20, S::npos)); + BOOST_TEST(testRF(S("abcdeabcde"), "", 9, 0, 9)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 9, 0, 9)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 9, 1, 5)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 9, 2, 5)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 9, 4, 5)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 9, 5, 5)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 9, 0, 9)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 9, 1, 5)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 9, 5, 5)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 9, 9, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 9, 10, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 0, 9)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 1, 5)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 10, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 19, S::npos)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 20, S::npos)); + BOOST_TEST(testRF(S("abcdeabcde"), "", 10, 0, 10)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 10, 0, 10)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 10, 1, 5)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 10, 2, 5)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 10, 4, 5)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 10, 5, 5)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 10, 0, 10)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 10, 1, 5)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 10, 5, 5)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 10, 9, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 10, 10, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 0, 10)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 1, 5)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 10, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 19, S::npos)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 20, S::npos)); + BOOST_TEST(testRF(S("abcdeabcde"), "", 11, 0, 10)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 11, 0, 10)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 11, 1, 5)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 11, 2, 5)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 11, 4, 5)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcde", 11, 5, 5)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 11, 0, 10)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 11, 1, 5)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 11, 5, 5)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 11, 9, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcde", 11, 10, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 0, 10)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 1, 5)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 10, 0)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 19, S::npos)); + BOOST_TEST(testRF(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 20, S::npos)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "", 0, 0, 0)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 0, 0, 0)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 0, 1, 0)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 0, 2, 0)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 0, 4, 0)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 0, 5, 0)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 0, 0)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 1, 0)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 5, 0)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 9, 0)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 10, 0)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 0, 0)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 1, 0)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 10, 0)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 19, 0)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 20, 0)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "", 1, 0, 1)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 1, 0, 1)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 1, 1, 0)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 1, 2, 0)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 1, 4, 0)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 1, 5, 0)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 0, 1)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 1, 0)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 5, 0)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 9, 0)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 10, 0)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 0, 1)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 1, 0)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 10, 0)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 19, 0)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 20, 0)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "", 10, 0, 10)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 10, 0, 10)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 10, 1, 10)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 10, 2, 10)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 10, 4, 10)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 10, 5, 10)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 0, 10)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 1, 10)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 5, 10)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 9, 10)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 10, 10)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 0, 10)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 1, 10)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 10, 10)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 19, 0)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 20, 0)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "", 19, 0, 19)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 19, 0, 19)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 19, 1, 15)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 19, 2, 15)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 19, 4, 15)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 19, 5, 15)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 0, 19)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 1, 15)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 5, 15)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 9, 10)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 10, 10)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 0, 19)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 1, 15)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 10, 10)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 19, 0)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 20, 0)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "", 20, 0, 20)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 20, 0, 20)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 20, 1, 15)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 20, 2, 15)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 20, 4, 15)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcde", 20, 5, 15)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 0, 20)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 1, 15)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 5, 15)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 9, 10)); + BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 10, 10)); BOOST_TEST(testRF(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 0, 20)); @@ -4305,305 +4306,305 @@ testFind() BOOST_TEST(fs1.find_first_of('1') == 0); BOOST_TEST(fs1.find_first_of('1', 4) == -1); - BOOST_TEST(testFF(S(""), "", 0, 0, S::npos)); - BOOST_TEST(testFF(S(""), "irkhs", 0, 0, S::npos)); - BOOST_TEST(testFF(S(""), "kante", 0, 1, S::npos)); - BOOST_TEST(testFF(S(""), "oknlr", 0, 2, S::npos)); - BOOST_TEST(testFF(S(""), "pcdro", 0, 4, S::npos)); - BOOST_TEST(testFF(S(""), "bnrpe", 0, 5, S::npos)); - BOOST_TEST(testFF(S(""), "jtdaefblso", 0, 0, S::npos)); - BOOST_TEST(testFF(S(""), "oselktgbca", 0, 1, S::npos)); - BOOST_TEST(testFF(S(""), "eqgaplhckj", 0, 5, S::npos)); - BOOST_TEST(testFF(S(""), "bjahtcmnlp", 0, 9, S::npos)); - BOOST_TEST(testFF(S(""), "hjlcmgpket", 0, 10, S::npos)); - BOOST_TEST(testFF(S(""), "htaobedqikfplcgjsmrn", 0, 0, S::npos)); - BOOST_TEST(testFF(S(""), "hpqiarojkcdlsgnmfetb", 0, 1, S::npos)); - BOOST_TEST(testFF(S(""), "dfkaprhjloqetcsimnbg", 0, 10, S::npos)); - BOOST_TEST(testFF(S(""), "ihqrfebgadntlpmjksoc", 0, 19, S::npos)); - BOOST_TEST(testFF(S(""), "ngtjfcalbseiqrphmkdo", 0, 20, S::npos)); - BOOST_TEST(testFF(S(""), "", 1, 0, S::npos)); - BOOST_TEST(testFF(S(""), "lbtqd", 1, 0, S::npos)); - BOOST_TEST(testFF(S(""), "tboim", 1, 1, S::npos)); - BOOST_TEST(testFF(S(""), "slcer", 1, 2, S::npos)); - BOOST_TEST(testFF(S(""), "cbjfs", 1, 4, S::npos)); - BOOST_TEST(testFF(S(""), "aqibs", 1, 5, S::npos)); - BOOST_TEST(testFF(S(""), "gtfblmqinc", 1, 0, S::npos)); - BOOST_TEST(testFF(S(""), "mkqpbtdalg", 1, 1, S::npos)); - BOOST_TEST(testFF(S(""), "kphatlimcd", 1, 5, S::npos)); - BOOST_TEST(testFF(S(""), "pblasqogic", 1, 9, S::npos)); - BOOST_TEST(testFF(S(""), "arosdhcfme", 1, 10, S::npos)); - BOOST_TEST(testFF(S(""), "blkhjeogicatqfnpdmsr", 1, 0, S::npos)); - BOOST_TEST(testFF(S(""), "bmhineprjcoadgstflqk", 1, 1, S::npos)); - BOOST_TEST(testFF(S(""), "djkqcmetslnghpbarfoi", 1, 10, S::npos)); - BOOST_TEST(testFF(S(""), "lgokshjtpbemarcdqnfi", 1, 19, S::npos)); - BOOST_TEST(testFF(S(""), "bqjhtkfepimcnsgrlado", 1, 20, S::npos)); - BOOST_TEST(testFF(S("eaint"), "", 0, 0, S::npos)); - BOOST_TEST(testFF(S("binja"), "gfsrt", 0, 0, S::npos)); - BOOST_TEST(testFF(S("latkm"), "pfsoc", 0, 1, S::npos)); - BOOST_TEST(testFF(S("lecfr"), "tpflm", 0, 2, S::npos)); - BOOST_TEST(testFF(S("eqkst"), "sgkec", 0, 4, 0)); - BOOST_TEST(testFF(S("cdafr"), "romds", 0, 5, 1)); - BOOST_TEST(testFF(S("prbhe"), "qhjistlgmr", 0, 0, S::npos)); - BOOST_TEST(testFF(S("lbisk"), "pedfirsglo", 0, 1, S::npos)); - BOOST_TEST(testFF(S("hrlpd"), "aqcoslgrmk", 0, 5, S::npos)); - BOOST_TEST(testFF(S("ehmja"), "dabckmepqj", 0, 9, 0)); - BOOST_TEST(testFF(S("mhqgd"), "pqscrjthli", 0, 10, 1)); - BOOST_TEST(testFF(S("tgklq"), "kfphdcsjqmobliagtren", 0, 0, S::npos)); - BOOST_TEST(testFF(S("bocjs"), "rokpefncljibsdhqtagm", 0, 1, S::npos)); - BOOST_TEST(testFF(S("grbsd"), "afionmkphlebtcjqsgrd", 0, 10, S::npos)); - BOOST_TEST(testFF(S("ofjqr"), "aenmqplidhkofrjbctsg", 0, 19, 0)); - BOOST_TEST(testFF(S("btlfi"), "osjmbtcadhiklegrpqnf", 0, 20, 0)); - BOOST_TEST(testFF(S("clrgb"), "", 1, 0, S::npos)); - BOOST_TEST(testFF(S("tjmek"), "osmia", 1, 0, S::npos)); - BOOST_TEST(testFF(S("bgstp"), "ckonl", 1, 1, S::npos)); - BOOST_TEST(testFF(S("hstrk"), "ilcaj", 1, 2, S::npos)); - BOOST_TEST(testFF(S("kmspj"), "lasiq", 1, 4, 2)); - BOOST_TEST(testFF(S("tjboh"), "kfqmr", 1, 5, S::npos)); - BOOST_TEST(testFF(S("ilbcj"), "klnitfaobg", 1, 0, S::npos)); - BOOST_TEST(testFF(S("jkngf"), "gjhmdlqikp", 1, 1, 3)); - BOOST_TEST(testFF(S("gfcql"), "skbgtahqej", 1, 5, S::npos)); - BOOST_TEST(testFF(S("dqtlg"), "bjsdgtlpkf", 1, 9, 2)); - BOOST_TEST(testFF(S("bthpg"), "bjgfmnlkio", 1, 10, 4)); - BOOST_TEST(testFF(S("dgsnq"), "lbhepotfsjdqigcnamkr", 1, 0, S::npos)); - BOOST_TEST(testFF(S("rmfhp"), "tebangckmpsrqdlfojhi", 1, 1, S::npos)); - BOOST_TEST(testFF(S("jfdam"), "joflqbdkhtegimscpanr", 1, 10, 1)); - BOOST_TEST(testFF(S("edapb"), "adpmcohetfbsrjinlqkg", 1, 19, 1)); - BOOST_TEST(testFF(S("brfsm"), "iacldqjpfnogbsrhmetk", 1, 20, 1)); - BOOST_TEST(testFF(S("ndrhl"), "", 2, 0, S::npos)); - BOOST_TEST(testFF(S("mrecp"), "otkgb", 2, 0, S::npos)); - BOOST_TEST(testFF(S("qlasf"), "cqsjl", 2, 1, S::npos)); - BOOST_TEST(testFF(S("smaqd"), "dpifl", 2, 2, 4)); - BOOST_TEST(testFF(S("hjeni"), "oapht", 2, 4, S::npos)); - BOOST_TEST(testFF(S("ocmfj"), "cifts", 2, 5, 3)); - BOOST_TEST(testFF(S("hmftq"), "nmsckbgalo", 2, 0, S::npos)); - BOOST_TEST(testFF(S("fklad"), "tpksqhamle", 2, 1, S::npos)); - BOOST_TEST(testFF(S("dirnm"), "tpdrchmkji", 2, 5, 2)); - BOOST_TEST(testFF(S("hrgdc"), "ijagfkblst", 2, 9, 2)); - BOOST_TEST(testFF(S("ifakg"), "kpocsignjb", 2, 10, 3)); - BOOST_TEST(testFF(S("ebrgd"), "pecqtkjsnbdrialgmohf", 2, 0, S::npos)); - BOOST_TEST(testFF(S("rcjml"), "aiortphfcmkjebgsndql", 2, 1, S::npos)); - BOOST_TEST(testFF(S("peqmt"), "sdbkeamglhipojqftrcn", 2, 10, 3)); - BOOST_TEST(testFF(S("frehn"), "ljqncehgmfktroapidbs", 2, 19, 2)); - BOOST_TEST(testFF(S("tqolf"), "rtcfodilamkbenjghqps", 2, 20, 2)); - BOOST_TEST(testFF(S("cjgao"), "", 4, 0, S::npos)); - BOOST_TEST(testFF(S("kjplq"), "mabns", 4, 0, S::npos)); - BOOST_TEST(testFF(S("herni"), "bdnrp", 4, 1, S::npos)); - BOOST_TEST(testFF(S("tadrb"), "scidp", 4, 2, S::npos)); - BOOST_TEST(testFF(S("pkfeo"), "agbjl", 4, 4, S::npos)); - BOOST_TEST(testFF(S("hoser"), "jfmpr", 4, 5, 4)); - BOOST_TEST(testFF(S("kgrsp"), "rbpefghsmj", 4, 0, S::npos)); - BOOST_TEST(testFF(S("pgejb"), "apsfntdoqc", 4, 1, S::npos)); - BOOST_TEST(testFF(S("thlnq"), "ndkjeisgcl", 4, 5, S::npos)); - BOOST_TEST(testFF(S("nbmit"), "rnfpqatdeo", 4, 9, 4)); - BOOST_TEST(testFF(S("jgmib"), "bntjlqrfik", 4, 10, 4)); - BOOST_TEST(testFF(S("ncrfj"), "kcrtmpolnaqejghsfdbi", 4, 0, S::npos)); - BOOST_TEST(testFF(S("ncsik"), "lobheanpkmqidsrtcfgj", 4, 1, S::npos)); - BOOST_TEST(testFF(S("sgbfh"), "athdkljcnreqbgpmisof", 4, 10, 4)); - BOOST_TEST(testFF(S("dktbn"), "qkdmjialrscpbhefgont", 4, 19, 4)); - BOOST_TEST(testFF(S("fthqm"), "dmasojntqleribkgfchp", 4, 20, 4)); - BOOST_TEST(testFF(S("klopi"), "", 5, 0, S::npos)); - BOOST_TEST(testFF(S("dajhn"), "psthd", 5, 0, S::npos)); - BOOST_TEST(testFF(S("jbgno"), "rpmjd", 5, 1, S::npos)); - BOOST_TEST(testFF(S("hkjae"), "dfsmk", 5, 2, S::npos)); - BOOST_TEST(testFF(S("gbhqo"), "skqne", 5, 4, S::npos)); - BOOST_TEST(testFF(S("ktdor"), "kipnf", 5, 5, S::npos)); - BOOST_TEST(testFF(S("ldprn"), "hmrnqdgifl", 5, 0, S::npos)); - BOOST_TEST(testFF(S("egmjk"), "fsmjcdairn", 5, 1, S::npos)); - BOOST_TEST(testFF(S("armql"), "pcdgltbrfj", 5, 5, S::npos)); - BOOST_TEST(testFF(S("cdhjo"), "aekfctpirg", 5, 9, S::npos)); - BOOST_TEST(testFF(S("jcons"), "ledihrsgpf", 5, 10, S::npos)); - BOOST_TEST(testFF(S("cbrkp"), "mqcklahsbtirgopefndj", 5, 0, S::npos)); - BOOST_TEST(testFF(S("fhgna"), "kmlthaoqgecrnpdbjfis", 5, 1, S::npos)); - BOOST_TEST(testFF(S("ejfcd"), "sfhbamcdptojlkrenqgi", 5, 10, S::npos)); - BOOST_TEST(testFF(S("kqjhe"), "pbniofmcedrkhlstgaqj", 5, 19, S::npos)); - BOOST_TEST(testFF(S("pbdjl"), "mongjratcskbhqiepfdl", 5, 20, S::npos)); - BOOST_TEST(testFF(S("gajqn"), "", 6, 0, S::npos)); - BOOST_TEST(testFF(S("stedk"), "hrnat", 6, 0, S::npos)); - BOOST_TEST(testFF(S("tjkaf"), "gsqdt", 6, 1, S::npos)); - BOOST_TEST(testFF(S("dthpe"), "bspkd", 6, 2, S::npos)); - BOOST_TEST(testFF(S("klhde"), "ohcmb", 6, 4, S::npos)); - BOOST_TEST(testFF(S("bhlki"), "heatr", 6, 5, S::npos)); - BOOST_TEST(testFF(S("lqmoh"), "pmblckedfn", 6, 0, S::npos)); - BOOST_TEST(testFF(S("mtqin"), "aceqmsrbik", 6, 1, S::npos)); - BOOST_TEST(testFF(S("dpqbr"), "lmbtdehjrn", 6, 5, S::npos)); - BOOST_TEST(testFF(S("kdhmo"), "teqmcrlgib", 6, 9, S::npos)); - BOOST_TEST(testFF(S("jblqp"), "njolbmspac", 6, 10, S::npos)); - BOOST_TEST(testFF(S("qmjgl"), "pofnhidklamecrbqjgst", 6, 0, S::npos)); - BOOST_TEST(testFF(S("rothp"), "jbhckmtgrqnosafedpli", 6, 1, S::npos)); - BOOST_TEST(testFF(S("ghknq"), "dobntpmqklicsahgjerf", 6, 10, S::npos)); - BOOST_TEST(testFF(S("eopfi"), "tpdshainjkbfoemlrgcq", 6, 19, S::npos)); - BOOST_TEST(testFF(S("dsnmg"), "oldpfgeakrnitscbjmqh", 6, 20, S::npos)); - BOOST_TEST(testFF(S("jnkrfhotgl"), "", 0, 0, S::npos)); - BOOST_TEST(testFF(S("dltjfngbko"), "rqegt", 0, 0, S::npos)); - BOOST_TEST(testFF(S("bmjlpkiqde"), "dashm", 0, 1, 8)); - BOOST_TEST(testFF(S("skrflobnqm"), "jqirk", 0, 2, 8)); - BOOST_TEST(testFF(S("jkpldtshrm"), "rckeg", 0, 4, 1)); - BOOST_TEST(testFF(S("ghasdbnjqo"), "jscie", 0, 5, 3)); - BOOST_TEST(testFF(S("igrkhpbqjt"), "efsphndliq", 0, 0, S::npos)); - BOOST_TEST(testFF(S("ikthdgcamf"), "gdicosleja", 0, 1, 5)); - BOOST_TEST(testFF(S("pcofgeniam"), "qcpjibosfl", 0, 5, 0)); - BOOST_TEST(testFF(S("rlfjgesqhc"), "lrhmefnjcq", 0, 9, 0)); - BOOST_TEST(testFF(S("itphbqsker"), "dtablcrseo", 0, 10, 1)); - BOOST_TEST(testFF(S("skjafcirqm"), "apckjsftedbhgomrnilq", 0, 0, S::npos)); - BOOST_TEST(testFF(S("tcqomarsfd"), "pcbrgflehjtiadnsokqm", 0, 1, S::npos)); - BOOST_TEST(testFF(S("rocfeldqpk"), "nsiadegjklhobrmtqcpf", 0, 10, 4)); - BOOST_TEST(testFF(S("cfpegndlkt"), "cpmajdqnolikhgsbretf", 0, 19, 0)); - BOOST_TEST(testFF(S("fqbtnkeasj"), "jcflkntmgiqrphdosaeb", 0, 20, 0)); - BOOST_TEST(testFF(S("shbcqnmoar"), "", 1, 0, S::npos)); - BOOST_TEST(testFF(S("bdoshlmfin"), "ontrs", 1, 0, S::npos)); - BOOST_TEST(testFF(S("khfrebnsgq"), "pfkna", 1, 1, S::npos)); - BOOST_TEST(testFF(S("getcrsaoji"), "ekosa", 1, 2, 1)); - BOOST_TEST(testFF(S("fjiknedcpq"), "anqhk", 1, 4, 4)); - BOOST_TEST(testFF(S("tkejgnafrm"), "jekca", 1, 5, 1)); - BOOST_TEST(testFF(S("jnakolqrde"), "ikemsjgacf", 1, 0, S::npos)); - BOOST_TEST(testFF(S("lcjptsmgbe"), "arolgsjkhm", 1, 1, S::npos)); - BOOST_TEST(testFF(S("itfsmcjorl"), "oftkbldhre", 1, 5, 1)); - BOOST_TEST(testFF(S("omchkfrjea"), "gbkqdoeftl", 1, 9, 4)); - BOOST_TEST(testFF(S("cigfqkated"), "sqcflrgtim", 1, 10, 1)); - BOOST_TEST(testFF(S("tscenjikml"), "fmhbkislrjdpanogqcet", 1, 0, S::npos)); - BOOST_TEST(testFF(S("qcpaemsinf"), "rnioadktqlgpbcjsmhef", 1, 1, S::npos)); - BOOST_TEST(testFF(S("gltkojeipd"), "oakgtnldpsefihqmjcbr", 1, 10, 1)); - BOOST_TEST(testFF(S("qistfrgnmp"), "gbnaelosidmcjqktfhpr", 1, 19, 1)); - BOOST_TEST(testFF(S("bdnpfcqaem"), "akbripjhlosndcmqgfet", 1, 20, 1)); - BOOST_TEST(testFF(S("ectnhskflp"), "", 5, 0, S::npos)); - BOOST_TEST(testFF(S("fgtianblpq"), "pijag", 5, 0, S::npos)); - BOOST_TEST(testFF(S("mfeqklirnh"), "jrckd", 5, 1, S::npos)); - BOOST_TEST(testFF(S("astedncjhk"), "qcloh", 5, 2, 6)); - BOOST_TEST(testFF(S("fhlqgcajbr"), "thlmp", 5, 4, S::npos)); - BOOST_TEST(testFF(S("epfhocmdng"), "qidmo", 5, 5, 6)); - BOOST_TEST(testFF(S("apcnsibger"), "lnegpsjqrd", 5, 0, S::npos)); - BOOST_TEST(testFF(S("aqkocrbign"), "rjqdablmfs", 5, 1, 5)); - BOOST_TEST(testFF(S("ijsmdtqgce"), "enkgpbsjaq", 5, 5, 7)); - BOOST_TEST(testFF(S("clobgsrken"), "kdsgoaijfh", 5, 9, 5)); - BOOST_TEST(testFF(S("jbhcfposld"), "trfqgmckbe", 5, 10, S::npos)); - BOOST_TEST(testFF(S("oqnpblhide"), "igetsracjfkdnpoblhqm", 5, 0, S::npos)); - BOOST_TEST(testFF(S("lroeasctif"), "nqctfaogirshlekbdjpm", 5, 1, S::npos)); - BOOST_TEST(testFF(S("bpjlgmiedh"), "csehfgomljdqinbartkp", 5, 10, 5)); - BOOST_TEST(testFF(S("pamkeoidrj"), "qahoegcmplkfsjbdnitr", 5, 19, 5)); - BOOST_TEST(testFF(S("espogqbthk"), "dpteiajrqmsognhlfbkc", 5, 20, 5)); - BOOST_TEST(testFF(S("shoiedtcjb"), "", 9, 0, S::npos)); - BOOST_TEST(testFF(S("ebcinjgads"), "tqbnh", 9, 0, S::npos)); - BOOST_TEST(testFF(S("dqmregkcfl"), "akmle", 9, 1, S::npos)); - BOOST_TEST(testFF(S("ngcrieqajf"), "iqfkm", 9, 2, S::npos)); - BOOST_TEST(testFF(S("qosmilgnjb"), "tqjsr", 9, 4, S::npos)); - BOOST_TEST(testFF(S("ikabsjtdfl"), "jplqg", 9, 5, 9)); - BOOST_TEST(testFF(S("ersmicafdh"), "oilnrbcgtj", 9, 0, S::npos)); - BOOST_TEST(testFF(S("fdnplotmgh"), "morkglpesn", 9, 1, S::npos)); - BOOST_TEST(testFF(S("fdbicojerm"), "dmicerngat", 9, 5, 9)); - BOOST_TEST(testFF(S("mbtafndjcq"), "radgeskbtc", 9, 9, S::npos)); - BOOST_TEST(testFF(S("mlenkpfdtc"), "ljikprsmqo", 9, 10, S::npos)); - BOOST_TEST(testFF(S("ahlcifdqgs"), "trqihkcgsjamfdbolnpe", 9, 0, S::npos)); - BOOST_TEST(testFF(S("bgjemaltks"), "lqmthbsrekajgnofcipd", 9, 1, S::npos)); - BOOST_TEST(testFF(S("pdhslbqrfc"), "jtalmedribkgqsopcnfh", 9, 10, S::npos)); - BOOST_TEST(testFF(S("dirhtsnjkc"), "spqfoiclmtagejbndkrh", 9, 19, 9)); - BOOST_TEST(testFF(S("dlroktbcja"), "nmotklspigjrdhcfaebq", 9, 20, 9)); - BOOST_TEST(testFF(S("ncjpmaekbs"), "", 10, 0, S::npos)); - BOOST_TEST(testFF(S("hlbosgmrak"), "hpmsd", 10, 0, S::npos)); - BOOST_TEST(testFF(S("pqfhsgilen"), "qnpor", 10, 1, S::npos)); - BOOST_TEST(testFF(S("gqtjsbdckh"), "otdma", 10, 2, S::npos)); - BOOST_TEST(testFF(S("cfkqpjlegi"), "efhjg", 10, 4, S::npos)); - BOOST_TEST(testFF(S("beanrfodgj"), "odpte", 10, 5, S::npos)); - BOOST_TEST(testFF(S("adtkqpbjfi"), "bctdgfmolr", 10, 0, S::npos)); - BOOST_TEST(testFF(S("iomkfthagj"), "oaklidrbqg", 10, 1, S::npos)); - BOOST_TEST(testFF(S("sdpcilonqj"), "dnjfsagktr", 10, 5, S::npos)); - BOOST_TEST(testFF(S("gtfbdkqeml"), "nejaktmiqg", 10, 9, S::npos)); - BOOST_TEST(testFF(S("bmeqgcdorj"), "pjqonlebsf", 10, 10, S::npos)); - BOOST_TEST(testFF(S("etqlcanmob"), "dshmnbtolcjepgaikfqr", 10, 0, S::npos)); - BOOST_TEST(testFF(S("roqmkbdtia"), "iogfhpabtjkqlrnemcds", 10, 1, S::npos)); - BOOST_TEST(testFF(S("kadsithljf"), "ngridfabjsecpqltkmoh", 10, 10, S::npos)); - BOOST_TEST(testFF(S("sgtkpbfdmh"), "athmknplcgofrqejsdib", 10, 19, S::npos)); - BOOST_TEST(testFF(S("qgmetnabkl"), "ldobhmqcafnjtkeisgrp", 10, 20, S::npos)); - BOOST_TEST(testFF(S("cqjohampgd"), "", 11, 0, S::npos)); - BOOST_TEST(testFF(S("hobitmpsan"), "aocjb", 11, 0, S::npos)); - BOOST_TEST(testFF(S("tjehkpsalm"), "jbrnk", 11, 1, S::npos)); - BOOST_TEST(testFF(S("ngfbojitcl"), "tqedg", 11, 2, S::npos)); - BOOST_TEST(testFF(S("rcfkdbhgjo"), "nqskp", 11, 4, S::npos)); - BOOST_TEST(testFF(S("qghptonrea"), "eaqkl", 11, 5, S::npos)); - BOOST_TEST(testFF(S("hnprfgqjdl"), "reaoicljqm", 11, 0, S::npos)); - BOOST_TEST(testFF(S("hlmgabenti"), "lsftgajqpm", 11, 1, S::npos)); - BOOST_TEST(testFF(S("ofcjanmrbs"), "rlpfogmits", 11, 5, S::npos)); - BOOST_TEST(testFF(S("jqedtkornm"), "shkncmiaqj", 11, 9, S::npos)); - BOOST_TEST(testFF(S("rfedlasjmg"), "fpnatrhqgs", 11, 10, S::npos)); - BOOST_TEST(testFF(S("talpqjsgkm"), "sjclemqhnpdbgikarfot", 11, 0, S::npos)); - BOOST_TEST(testFF(S("lrkcbtqpie"), "otcmedjikgsfnqbrhpla", 11, 1, S::npos)); - BOOST_TEST(testFF(S("cipogdskjf"), "bonsaefdqiprkhlgtjcm", 11, 10, S::npos)); - BOOST_TEST(testFF(S("nqedcojahi"), "egpscmahijlfnkrodqtb", 11, 19, S::npos)); - BOOST_TEST(testFF(S("hefnrkmctj"), "kmqbfepjthgilscrndoa", 11, 20, S::npos)); - BOOST_TEST(testFF(S("atqirnmekfjolhpdsgcb"), "", 0, 0, S::npos)); - BOOST_TEST(testFF(S("echfkmlpribjnqsaogtd"), "prboq", 0, 0, S::npos)); - BOOST_TEST(testFF(S("qnhiftdgcleajbpkrosm"), "fjcqh", 0, 1, 4)); - BOOST_TEST(testFF(S("chamfknorbedjitgslpq"), "fmosa", 0, 2, 3)); - BOOST_TEST(testFF(S("njhqpibfmtlkaecdrgso"), "qdbok", 0, 4, 3)); - BOOST_TEST(testFF(S("ebnghfsqkprmdcljoiat"), "amslg", 0, 5, 3)); - BOOST_TEST(testFF(S("letjomsgihfrpqbkancd"), "smpltjneqb", 0, 0, S::npos)); - BOOST_TEST(testFF(S("nblgoipcrqeaktshjdmf"), "flitskrnge", 0, 1, 19)); - BOOST_TEST(testFF(S("cehkbngtjoiflqapsmrd"), "pgqihmlbef", 0, 5, 2)); - BOOST_TEST(testFF(S("mignapfoklbhcqjetdrs"), "cfpdqjtgsb", 0, 9, 2)); - BOOST_TEST(testFF(S("ceatbhlsqjgpnokfrmdi"), "htpsiaflom", 0, 10, 2)); - BOOST_TEST(testFF(S("ocihkjgrdelpfnmastqb"), "kpjfiaceghsrdtlbnomq", 0, 0, S::npos)); - BOOST_TEST(testFF(S("noelgschdtbrjfmiqkap"), "qhtbomidljgafneksprc", 0, 1, 16)); - BOOST_TEST(testFF(S("dkclqfombepritjnghas"), "nhtjobkcefldimpsaqgr", 0, 10, 1)); - BOOST_TEST(testFF(S("miklnresdgbhqcojftap"), "prabcjfqnoeskilmtgdh", 0, 19, 0)); - BOOST_TEST(testFF(S("htbcigojaqmdkfrnlsep"), "dtrgmchilkasqoebfpjn", 0, 20, 0)); - BOOST_TEST(testFF(S("febhmqtjanokscdirpgl"), "", 1, 0, S::npos)); - BOOST_TEST(testFF(S("loakbsqjpcrdhftniegm"), "sqome", 1, 0, S::npos)); - BOOST_TEST(testFF(S("reagphsqflbitdcjmkno"), "smfte", 1, 1, 6)); - BOOST_TEST(testFF(S("jitlfrqemsdhkopncabg"), "ciboh", 1, 2, 1)); - BOOST_TEST(testFF(S("mhtaepscdnrjqgbkifol"), "haois", 1, 4, 1)); - BOOST_TEST(testFF(S("tocesrfmnglpbjihqadk"), "abfki", 1, 5, 6)); - BOOST_TEST(testFF(S("lpfmctjrhdagneskbqoi"), "frdkocntmq", 1, 0, S::npos)); - BOOST_TEST(testFF(S("lsmqaepkdhncirbtjfgo"), "oasbpedlnr", 1, 1, 19)); - BOOST_TEST(testFF(S("epoiqmtldrabnkjhcfsg"), "kltqmhgand", 1, 5, 4)); - BOOST_TEST(testFF(S("emgasrilpknqojhtbdcf"), "gdtfjchpmr", 1, 9, 1)); - BOOST_TEST(testFF(S("hnfiagdpcklrjetqbsom"), "ponmcqblet", 1, 10, 1)); - BOOST_TEST(testFF(S("nsdfebgajhmtricpoklq"), "sgphqdnofeiklatbcmjr", 1, 0, S::npos)); - BOOST_TEST(testFF(S("atjgfsdlpobmeiqhncrk"), "ljqprsmigtfoneadckbh", 1, 1, 7)); - BOOST_TEST(testFF(S("sitodfgnrejlahcbmqkp"), "ligeojhafnkmrcsqtbdp", 1, 10, 1)); - BOOST_TEST(testFF(S("fraghmbiceknltjpqosd"), "lsimqfnjarbopedkhcgt", 1, 19, 1)); - BOOST_TEST(testFF(S("pmafenlhqtdbkirjsogc"), "abedmfjlghniorcqptks", 1, 20, 1)); - BOOST_TEST(testFF(S("pihgmoeqtnakrjslcbfd"), "", 10, 0, S::npos)); - BOOST_TEST(testFF(S("gjdkeprctqblnhiafsom"), "hqtoa", 10, 0, S::npos)); - BOOST_TEST(testFF(S("mkpnblfdsahrcqijteog"), "cahif", 10, 1, 12)); - BOOST_TEST(testFF(S("gckarqnelodfjhmbptis"), "kehis", 10, 2, S::npos)); - BOOST_TEST(testFF(S("gqpskidtbclomahnrjfe"), "kdlmh", 10, 4, 10)); - BOOST_TEST(testFF(S("pkldjsqrfgitbhmaecno"), "paeql", 10, 5, 15)); - BOOST_TEST(testFF(S("aftsijrbeklnmcdqhgop"), "aghoqiefnb", 10, 0, S::npos)); - BOOST_TEST(testFF(S("mtlgdrhafjkbiepqnsoc"), "jrbqaikpdo", 10, 1, S::npos)); - BOOST_TEST(testFF(S("pqgirnaefthokdmbsclj"), "smjonaeqcl", 10, 5, 11)); - BOOST_TEST(testFF(S("kpdbgjmtherlsfcqoina"), "eqbdrkcfah", 10, 9, 10)); - BOOST_TEST(testFF(S("jrlbothiknqmdgcfasep"), "kapmsienhf", 10, 10, 11)); - BOOST_TEST(testFF(S("mjogldqferckabinptsh"), "jpqotrlenfcsbhkaimdg", 10, 0, S::npos)); - BOOST_TEST(testFF(S("apoklnefbhmgqcdrisjt"), "jlbmhnfgtcqprikeados", 10, 1, 18)); - BOOST_TEST(testFF(S("ifeopcnrjbhkdgatmqls"), "stgbhfmdaljnpqoicker", 10, 10, 10)); - BOOST_TEST(testFF(S("ckqhaiesmjdnrgolbtpf"), "oihcetflbjagdsrkmqpn", 10, 19, 10)); - BOOST_TEST(testFF(S("bnlgapfimcoterskqdjh"), "adtclebmnpjsrqfkigoh", 10, 20, 10)); - BOOST_TEST(testFF(S("kgdlrobpmjcthqsafeni"), "", 19, 0, S::npos)); - BOOST_TEST(testFF(S("dfkechomjapgnslbtqir"), "beafg", 19, 0, S::npos)); - BOOST_TEST(testFF(S("rloadknfbqtgmhcsipje"), "iclat", 19, 1, S::npos)); - BOOST_TEST(testFF(S("mgjhkolrnadqbpetcifs"), "rkhnf", 19, 2, S::npos)); - BOOST_TEST(testFF(S("cmlfakiojdrgtbsphqen"), "clshq", 19, 4, S::npos)); - BOOST_TEST(testFF(S("kghbfipeomsntdalrqjc"), "dtcoj", 19, 5, 19)); - BOOST_TEST(testFF(S("eldiqckrnmtasbghjfpo"), "rqosnjmfth", 19, 0, S::npos)); - BOOST_TEST(testFF(S("abqjcfedgotihlnspkrm"), "siatdfqglh", 19, 1, S::npos)); - BOOST_TEST(testFF(S("qfbadrtjsimkolcenhpg"), "mrlshtpgjq", 19, 5, S::npos)); - BOOST_TEST(testFF(S("abseghclkjqifmtodrnp"), "adlcskgqjt", 19, 9, S::npos)); - BOOST_TEST(testFF(S("ibmsnlrjefhtdokacqpg"), "drshcjknaf", 19, 10, S::npos)); - BOOST_TEST(testFF(S("mrkfciqjebaponsthldg"), "etsaqroinghpkjdlfcbm", 19, 0, S::npos)); - BOOST_TEST(testFF(S("mjkticdeoqshpalrfbgn"), "sgepdnkqliambtrocfhj", 19, 1, S::npos)); - BOOST_TEST(testFF(S("rqnoclbdejgiphtfsakm"), "nlmcjaqgbsortfdihkpe", 19, 10, 19)); - BOOST_TEST(testFF(S("plkqbhmtfaeodjcrsing"), "racfnpmosldibqkghjet", 19, 19, 19)); - BOOST_TEST(testFF(S("oegalhmstjrfickpbndq"), "fjhdsctkqeiolagrnmbp", 19, 20, 19)); - BOOST_TEST(testFF(S("rdtgjcaohpblniekmsfq"), "", 20, 0, S::npos)); - BOOST_TEST(testFF(S("ofkqbnjetrmsaidphglc"), "ejanp", 20, 0, S::npos)); - BOOST_TEST(testFF(S("grkpahljcftesdmonqib"), "odife", 20, 1, S::npos)); - BOOST_TEST(testFF(S("jimlgbhfqkteospardcn"), "okaqd", 20, 2, S::npos)); - BOOST_TEST(testFF(S("gftenihpmslrjkqadcob"), "lcdbi", 20, 4, S::npos)); - BOOST_TEST(testFF(S("bmhldogtckrfsanijepq"), "fsqbj", 20, 5, S::npos)); - BOOST_TEST(testFF(S("nfqkrpjdesabgtlcmoih"), "bigdomnplq", 20, 0, S::npos)); - BOOST_TEST(testFF(S("focalnrpiqmdkstehbjg"), "apiblotgcd", 20, 1, S::npos)); - BOOST_TEST(testFF(S("rhqdspkmebiflcotnjga"), "acfhdenops", 20, 5, S::npos)); - BOOST_TEST(testFF(S("rahdtmsckfboqlpniegj"), "jopdeamcrk", 20, 9, S::npos)); - BOOST_TEST(testFF(S("fbkeiopclstmdqranjhg"), "trqncbkgmh", 20, 10, S::npos)); + BOOST_TEST(testFF(S(""), "", 0, 0, S::npos)); + BOOST_TEST(testFF(S(""), "irkhs", 0, 0, S::npos)); + BOOST_TEST(testFF(S(""), "kante", 0, 1, S::npos)); + BOOST_TEST(testFF(S(""), "oknlr", 0, 2, S::npos)); + BOOST_TEST(testFF(S(""), "pcdro", 0, 4, S::npos)); + BOOST_TEST(testFF(S(""), "bnrpe", 0, 5, S::npos)); + BOOST_TEST(testFF(S(""), "jtdaefblso", 0, 0, S::npos)); + BOOST_TEST(testFF(S(""), "oselktgbca", 0, 1, S::npos)); + BOOST_TEST(testFF(S(""), "eqgaplhckj", 0, 5, S::npos)); + BOOST_TEST(testFF(S(""), "bjahtcmnlp", 0, 9, S::npos)); + BOOST_TEST(testFF(S(""), "hjlcmgpket", 0, 10, S::npos)); + BOOST_TEST(testFF(S(""), "htaobedqikfplcgjsmrn", 0, 0, S::npos)); + BOOST_TEST(testFF(S(""), "hpqiarojkcdlsgnmfetb", 0, 1, S::npos)); + BOOST_TEST(testFF(S(""), "dfkaprhjloqetcsimnbg", 0, 10, S::npos)); + BOOST_TEST(testFF(S(""), "ihqrfebgadntlpmjksoc", 0, 19, S::npos)); + BOOST_TEST(testFF(S(""), "ngtjfcalbseiqrphmkdo", 0, 20, S::npos)); + BOOST_TEST(testFF(S(""), "", 1, 0, S::npos)); + BOOST_TEST(testFF(S(""), "lbtqd", 1, 0, S::npos)); + BOOST_TEST(testFF(S(""), "tboim", 1, 1, S::npos)); + BOOST_TEST(testFF(S(""), "slcer", 1, 2, S::npos)); + BOOST_TEST(testFF(S(""), "cbjfs", 1, 4, S::npos)); + BOOST_TEST(testFF(S(""), "aqibs", 1, 5, S::npos)); + BOOST_TEST(testFF(S(""), "gtfblmqinc", 1, 0, S::npos)); + BOOST_TEST(testFF(S(""), "mkqpbtdalg", 1, 1, S::npos)); + BOOST_TEST(testFF(S(""), "kphatlimcd", 1, 5, S::npos)); + BOOST_TEST(testFF(S(""), "pblasqogic", 1, 9, S::npos)); + BOOST_TEST(testFF(S(""), "arosdhcfme", 1, 10, S::npos)); + BOOST_TEST(testFF(S(""), "blkhjeogicatqfnpdmsr", 1, 0, S::npos)); + BOOST_TEST(testFF(S(""), "bmhineprjcoadgstflqk", 1, 1, S::npos)); + BOOST_TEST(testFF(S(""), "djkqcmetslnghpbarfoi", 1, 10, S::npos)); + BOOST_TEST(testFF(S(""), "lgokshjtpbemarcdqnfi", 1, 19, S::npos)); + BOOST_TEST(testFF(S(""), "bqjhtkfepimcnsgrlado", 1, 20, S::npos)); + BOOST_TEST(testFF(S("eaint"), "", 0, 0, S::npos)); + BOOST_TEST(testFF(S("binja"), "gfsrt", 0, 0, S::npos)); + BOOST_TEST(testFF(S("latkm"), "pfsoc", 0, 1, S::npos)); + BOOST_TEST(testFF(S("lecfr"), "tpflm", 0, 2, S::npos)); + BOOST_TEST(testFF(S("eqkst"), "sgkec", 0, 4, 0)); + BOOST_TEST(testFF(S("cdafr"), "romds", 0, 5, 1)); + BOOST_TEST(testFF(S("prbhe"), "qhjistlgmr", 0, 0, S::npos)); + BOOST_TEST(testFF(S("lbisk"), "pedfirsglo", 0, 1, S::npos)); + BOOST_TEST(testFF(S("hrlpd"), "aqcoslgrmk", 0, 5, S::npos)); + BOOST_TEST(testFF(S("ehmja"), "dabckmepqj", 0, 9, 0)); + BOOST_TEST(testFF(S("mhqgd"), "pqscrjthli", 0, 10, 1)); + BOOST_TEST(testFF(S("tgklq"), "kfphdcsjqmobliagtren", 0, 0, S::npos)); + BOOST_TEST(testFF(S("bocjs"), "rokpefncljibsdhqtagm", 0, 1, S::npos)); + BOOST_TEST(testFF(S("grbsd"), "afionmkphlebtcjqsgrd", 0, 10, S::npos)); + BOOST_TEST(testFF(S("ofjqr"), "aenmqplidhkofrjbctsg", 0, 19, 0)); + BOOST_TEST(testFF(S("btlfi"), "osjmbtcadhiklegrpqnf", 0, 20, 0)); + BOOST_TEST(testFF(S("clrgb"), "", 1, 0, S::npos)); + BOOST_TEST(testFF(S("tjmek"), "osmia", 1, 0, S::npos)); + BOOST_TEST(testFF(S("bgstp"), "ckonl", 1, 1, S::npos)); + BOOST_TEST(testFF(S("hstrk"), "ilcaj", 1, 2, S::npos)); + BOOST_TEST(testFF(S("kmspj"), "lasiq", 1, 4, 2)); + BOOST_TEST(testFF(S("tjboh"), "kfqmr", 1, 5, S::npos)); + BOOST_TEST(testFF(S("ilbcj"), "klnitfaobg", 1, 0, S::npos)); + BOOST_TEST(testFF(S("jkngf"), "gjhmdlqikp", 1, 1, 3)); + BOOST_TEST(testFF(S("gfcql"), "skbgtahqej", 1, 5, S::npos)); + BOOST_TEST(testFF(S("dqtlg"), "bjsdgtlpkf", 1, 9, 2)); + BOOST_TEST(testFF(S("bthpg"), "bjgfmnlkio", 1, 10, 4)); + BOOST_TEST(testFF(S("dgsnq"), "lbhepotfsjdqigcnamkr", 1, 0, S::npos)); + BOOST_TEST(testFF(S("rmfhp"), "tebangckmpsrqdlfojhi", 1, 1, S::npos)); + BOOST_TEST(testFF(S("jfdam"), "joflqbdkhtegimscpanr", 1, 10, 1)); + BOOST_TEST(testFF(S("edapb"), "adpmcohetfbsrjinlqkg", 1, 19, 1)); + BOOST_TEST(testFF(S("brfsm"), "iacldqjpfnogbsrhmetk", 1, 20, 1)); + BOOST_TEST(testFF(S("ndrhl"), "", 2, 0, S::npos)); + BOOST_TEST(testFF(S("mrecp"), "otkgb", 2, 0, S::npos)); + BOOST_TEST(testFF(S("qlasf"), "cqsjl", 2, 1, S::npos)); + BOOST_TEST(testFF(S("smaqd"), "dpifl", 2, 2, 4)); + BOOST_TEST(testFF(S("hjeni"), "oapht", 2, 4, S::npos)); + BOOST_TEST(testFF(S("ocmfj"), "cifts", 2, 5, 3)); + BOOST_TEST(testFF(S("hmftq"), "nmsckbgalo", 2, 0, S::npos)); + BOOST_TEST(testFF(S("fklad"), "tpksqhamle", 2, 1, S::npos)); + BOOST_TEST(testFF(S("dirnm"), "tpdrchmkji", 2, 5, 2)); + BOOST_TEST(testFF(S("hrgdc"), "ijagfkblst", 2, 9, 2)); + BOOST_TEST(testFF(S("ifakg"), "kpocsignjb", 2, 10, 3)); + BOOST_TEST(testFF(S("ebrgd"), "pecqtkjsnbdrialgmohf", 2, 0, S::npos)); + BOOST_TEST(testFF(S("rcjml"), "aiortphfcmkjebgsndql", 2, 1, S::npos)); + BOOST_TEST(testFF(S("peqmt"), "sdbkeamglhipojqftrcn", 2, 10, 3)); + BOOST_TEST(testFF(S("frehn"), "ljqncehgmfktroapidbs", 2, 19, 2)); + BOOST_TEST(testFF(S("tqolf"), "rtcfodilamkbenjghqps", 2, 20, 2)); + BOOST_TEST(testFF(S("cjgao"), "", 4, 0, S::npos)); + BOOST_TEST(testFF(S("kjplq"), "mabns", 4, 0, S::npos)); + BOOST_TEST(testFF(S("herni"), "bdnrp", 4, 1, S::npos)); + BOOST_TEST(testFF(S("tadrb"), "scidp", 4, 2, S::npos)); + BOOST_TEST(testFF(S("pkfeo"), "agbjl", 4, 4, S::npos)); + BOOST_TEST(testFF(S("hoser"), "jfmpr", 4, 5, 4)); + BOOST_TEST(testFF(S("kgrsp"), "rbpefghsmj", 4, 0, S::npos)); + BOOST_TEST(testFF(S("pgejb"), "apsfntdoqc", 4, 1, S::npos)); + BOOST_TEST(testFF(S("thlnq"), "ndkjeisgcl", 4, 5, S::npos)); + BOOST_TEST(testFF(S("nbmit"), "rnfpqatdeo", 4, 9, 4)); + BOOST_TEST(testFF(S("jgmib"), "bntjlqrfik", 4, 10, 4)); + BOOST_TEST(testFF(S("ncrfj"), "kcrtmpolnaqejghsfdbi", 4, 0, S::npos)); + BOOST_TEST(testFF(S("ncsik"), "lobheanpkmqidsrtcfgj", 4, 1, S::npos)); + BOOST_TEST(testFF(S("sgbfh"), "athdkljcnreqbgpmisof", 4, 10, 4)); + BOOST_TEST(testFF(S("dktbn"), "qkdmjialrscpbhefgont", 4, 19, 4)); + BOOST_TEST(testFF(S("fthqm"), "dmasojntqleribkgfchp", 4, 20, 4)); + BOOST_TEST(testFF(S("klopi"), "", 5, 0, S::npos)); + BOOST_TEST(testFF(S("dajhn"), "psthd", 5, 0, S::npos)); + BOOST_TEST(testFF(S("jbgno"), "rpmjd", 5, 1, S::npos)); + BOOST_TEST(testFF(S("hkjae"), "dfsmk", 5, 2, S::npos)); + BOOST_TEST(testFF(S("gbhqo"), "skqne", 5, 4, S::npos)); + BOOST_TEST(testFF(S("ktdor"), "kipnf", 5, 5, S::npos)); + BOOST_TEST(testFF(S("ldprn"), "hmrnqdgifl", 5, 0, S::npos)); + BOOST_TEST(testFF(S("egmjk"), "fsmjcdairn", 5, 1, S::npos)); + BOOST_TEST(testFF(S("armql"), "pcdgltbrfj", 5, 5, S::npos)); + BOOST_TEST(testFF(S("cdhjo"), "aekfctpirg", 5, 9, S::npos)); + BOOST_TEST(testFF(S("jcons"), "ledihrsgpf", 5, 10, S::npos)); + BOOST_TEST(testFF(S("cbrkp"), "mqcklahsbtirgopefndj", 5, 0, S::npos)); + BOOST_TEST(testFF(S("fhgna"), "kmlthaoqgecrnpdbjfis", 5, 1, S::npos)); + BOOST_TEST(testFF(S("ejfcd"), "sfhbamcdptojlkrenqgi", 5, 10, S::npos)); + BOOST_TEST(testFF(S("kqjhe"), "pbniofmcedrkhlstgaqj", 5, 19, S::npos)); + BOOST_TEST(testFF(S("pbdjl"), "mongjratcskbhqiepfdl", 5, 20, S::npos)); + BOOST_TEST(testFF(S("gajqn"), "", 6, 0, S::npos)); + BOOST_TEST(testFF(S("stedk"), "hrnat", 6, 0, S::npos)); + BOOST_TEST(testFF(S("tjkaf"), "gsqdt", 6, 1, S::npos)); + BOOST_TEST(testFF(S("dthpe"), "bspkd", 6, 2, S::npos)); + BOOST_TEST(testFF(S("klhde"), "ohcmb", 6, 4, S::npos)); + BOOST_TEST(testFF(S("bhlki"), "heatr", 6, 5, S::npos)); + BOOST_TEST(testFF(S("lqmoh"), "pmblckedfn", 6, 0, S::npos)); + BOOST_TEST(testFF(S("mtqin"), "aceqmsrbik", 6, 1, S::npos)); + BOOST_TEST(testFF(S("dpqbr"), "lmbtdehjrn", 6, 5, S::npos)); + BOOST_TEST(testFF(S("kdhmo"), "teqmcrlgib", 6, 9, S::npos)); + BOOST_TEST(testFF(S("jblqp"), "njolbmspac", 6, 10, S::npos)); + BOOST_TEST(testFF(S("qmjgl"), "pofnhidklamecrbqjgst", 6, 0, S::npos)); + BOOST_TEST(testFF(S("rothp"), "jbhckmtgrqnosafedpli", 6, 1, S::npos)); + BOOST_TEST(testFF(S("ghknq"), "dobntpmqklicsahgjerf", 6, 10, S::npos)); + BOOST_TEST(testFF(S("eopfi"), "tpdshainjkbfoemlrgcq", 6, 19, S::npos)); + BOOST_TEST(testFF(S("dsnmg"), "oldpfgeakrnitscbjmqh", 6, 20, S::npos)); + BOOST_TEST(testFF(S("jnkrfhotgl"), "", 0, 0, S::npos)); + BOOST_TEST(testFF(S("dltjfngbko"), "rqegt", 0, 0, S::npos)); + BOOST_TEST(testFF(S("bmjlpkiqde"), "dashm", 0, 1, 8)); + BOOST_TEST(testFF(S("skrflobnqm"), "jqirk", 0, 2, 8)); + BOOST_TEST(testFF(S("jkpldtshrm"), "rckeg", 0, 4, 1)); + BOOST_TEST(testFF(S("ghasdbnjqo"), "jscie", 0, 5, 3)); + BOOST_TEST(testFF(S("igrkhpbqjt"), "efsphndliq", 0, 0, S::npos)); + BOOST_TEST(testFF(S("ikthdgcamf"), "gdicosleja", 0, 1, 5)); + BOOST_TEST(testFF(S("pcofgeniam"), "qcpjibosfl", 0, 5, 0)); + BOOST_TEST(testFF(S("rlfjgesqhc"), "lrhmefnjcq", 0, 9, 0)); + BOOST_TEST(testFF(S("itphbqsker"), "dtablcrseo", 0, 10, 1)); + BOOST_TEST(testFF(S("skjafcirqm"), "apckjsftedbhgomrnilq", 0, 0, S::npos)); + BOOST_TEST(testFF(S("tcqomarsfd"), "pcbrgflehjtiadnsokqm", 0, 1, S::npos)); + BOOST_TEST(testFF(S("rocfeldqpk"), "nsiadegjklhobrmtqcpf", 0, 10, 4)); + BOOST_TEST(testFF(S("cfpegndlkt"), "cpmajdqnolikhgsbretf", 0, 19, 0)); + BOOST_TEST(testFF(S("fqbtnkeasj"), "jcflkntmgiqrphdosaeb", 0, 20, 0)); + BOOST_TEST(testFF(S("shbcqnmoar"), "", 1, 0, S::npos)); + BOOST_TEST(testFF(S("bdoshlmfin"), "ontrs", 1, 0, S::npos)); + BOOST_TEST(testFF(S("khfrebnsgq"), "pfkna", 1, 1, S::npos)); + BOOST_TEST(testFF(S("getcrsaoji"), "ekosa", 1, 2, 1)); + BOOST_TEST(testFF(S("fjiknedcpq"), "anqhk", 1, 4, 4)); + BOOST_TEST(testFF(S("tkejgnafrm"), "jekca", 1, 5, 1)); + BOOST_TEST(testFF(S("jnakolqrde"), "ikemsjgacf", 1, 0, S::npos)); + BOOST_TEST(testFF(S("lcjptsmgbe"), "arolgsjkhm", 1, 1, S::npos)); + BOOST_TEST(testFF(S("itfsmcjorl"), "oftkbldhre", 1, 5, 1)); + BOOST_TEST(testFF(S("omchkfrjea"), "gbkqdoeftl", 1, 9, 4)); + BOOST_TEST(testFF(S("cigfqkated"), "sqcflrgtim", 1, 10, 1)); + BOOST_TEST(testFF(S("tscenjikml"), "fmhbkislrjdpanogqcet", 1, 0, S::npos)); + BOOST_TEST(testFF(S("qcpaemsinf"), "rnioadktqlgpbcjsmhef", 1, 1, S::npos)); + BOOST_TEST(testFF(S("gltkojeipd"), "oakgtnldpsefihqmjcbr", 1, 10, 1)); + BOOST_TEST(testFF(S("qistfrgnmp"), "gbnaelosidmcjqktfhpr", 1, 19, 1)); + BOOST_TEST(testFF(S("bdnpfcqaem"), "akbripjhlosndcmqgfet", 1, 20, 1)); + BOOST_TEST(testFF(S("ectnhskflp"), "", 5, 0, S::npos)); + BOOST_TEST(testFF(S("fgtianblpq"), "pijag", 5, 0, S::npos)); + BOOST_TEST(testFF(S("mfeqklirnh"), "jrckd", 5, 1, S::npos)); + BOOST_TEST(testFF(S("astedncjhk"), "qcloh", 5, 2, 6)); + BOOST_TEST(testFF(S("fhlqgcajbr"), "thlmp", 5, 4, S::npos)); + BOOST_TEST(testFF(S("epfhocmdng"), "qidmo", 5, 5, 6)); + BOOST_TEST(testFF(S("apcnsibger"), "lnegpsjqrd", 5, 0, S::npos)); + BOOST_TEST(testFF(S("aqkocrbign"), "rjqdablmfs", 5, 1, 5)); + BOOST_TEST(testFF(S("ijsmdtqgce"), "enkgpbsjaq", 5, 5, 7)); + BOOST_TEST(testFF(S("clobgsrken"), "kdsgoaijfh", 5, 9, 5)); + BOOST_TEST(testFF(S("jbhcfposld"), "trfqgmckbe", 5, 10, S::npos)); + BOOST_TEST(testFF(S("oqnpblhide"), "igetsracjfkdnpoblhqm", 5, 0, S::npos)); + BOOST_TEST(testFF(S("lroeasctif"), "nqctfaogirshlekbdjpm", 5, 1, S::npos)); + BOOST_TEST(testFF(S("bpjlgmiedh"), "csehfgomljdqinbartkp", 5, 10, 5)); + BOOST_TEST(testFF(S("pamkeoidrj"), "qahoegcmplkfsjbdnitr", 5, 19, 5)); + BOOST_TEST(testFF(S("espogqbthk"), "dpteiajrqmsognhlfbkc", 5, 20, 5)); + BOOST_TEST(testFF(S("shoiedtcjb"), "", 9, 0, S::npos)); + BOOST_TEST(testFF(S("ebcinjgads"), "tqbnh", 9, 0, S::npos)); + BOOST_TEST(testFF(S("dqmregkcfl"), "akmle", 9, 1, S::npos)); + BOOST_TEST(testFF(S("ngcrieqajf"), "iqfkm", 9, 2, S::npos)); + BOOST_TEST(testFF(S("qosmilgnjb"), "tqjsr", 9, 4, S::npos)); + BOOST_TEST(testFF(S("ikabsjtdfl"), "jplqg", 9, 5, 9)); + BOOST_TEST(testFF(S("ersmicafdh"), "oilnrbcgtj", 9, 0, S::npos)); + BOOST_TEST(testFF(S("fdnplotmgh"), "morkglpesn", 9, 1, S::npos)); + BOOST_TEST(testFF(S("fdbicojerm"), "dmicerngat", 9, 5, 9)); + BOOST_TEST(testFF(S("mbtafndjcq"), "radgeskbtc", 9, 9, S::npos)); + BOOST_TEST(testFF(S("mlenkpfdtc"), "ljikprsmqo", 9, 10, S::npos)); + BOOST_TEST(testFF(S("ahlcifdqgs"), "trqihkcgsjamfdbolnpe", 9, 0, S::npos)); + BOOST_TEST(testFF(S("bgjemaltks"), "lqmthbsrekajgnofcipd", 9, 1, S::npos)); + BOOST_TEST(testFF(S("pdhslbqrfc"), "jtalmedribkgqsopcnfh", 9, 10, S::npos)); + BOOST_TEST(testFF(S("dirhtsnjkc"), "spqfoiclmtagejbndkrh", 9, 19, 9)); + BOOST_TEST(testFF(S("dlroktbcja"), "nmotklspigjrdhcfaebq", 9, 20, 9)); + BOOST_TEST(testFF(S("ncjpmaekbs"), "", 10, 0, S::npos)); + BOOST_TEST(testFF(S("hlbosgmrak"), "hpmsd", 10, 0, S::npos)); + BOOST_TEST(testFF(S("pqfhsgilen"), "qnpor", 10, 1, S::npos)); + BOOST_TEST(testFF(S("gqtjsbdckh"), "otdma", 10, 2, S::npos)); + BOOST_TEST(testFF(S("cfkqpjlegi"), "efhjg", 10, 4, S::npos)); + BOOST_TEST(testFF(S("beanrfodgj"), "odpte", 10, 5, S::npos)); + BOOST_TEST(testFF(S("adtkqpbjfi"), "bctdgfmolr", 10, 0, S::npos)); + BOOST_TEST(testFF(S("iomkfthagj"), "oaklidrbqg", 10, 1, S::npos)); + BOOST_TEST(testFF(S("sdpcilonqj"), "dnjfsagktr", 10, 5, S::npos)); + BOOST_TEST(testFF(S("gtfbdkqeml"), "nejaktmiqg", 10, 9, S::npos)); + BOOST_TEST(testFF(S("bmeqgcdorj"), "pjqonlebsf", 10, 10, S::npos)); + BOOST_TEST(testFF(S("etqlcanmob"), "dshmnbtolcjepgaikfqr", 10, 0, S::npos)); + BOOST_TEST(testFF(S("roqmkbdtia"), "iogfhpabtjkqlrnemcds", 10, 1, S::npos)); + BOOST_TEST(testFF(S("kadsithljf"), "ngridfabjsecpqltkmoh", 10, 10, S::npos)); + BOOST_TEST(testFF(S("sgtkpbfdmh"), "athmknplcgofrqejsdib", 10, 19, S::npos)); + BOOST_TEST(testFF(S("qgmetnabkl"), "ldobhmqcafnjtkeisgrp", 10, 20, S::npos)); + BOOST_TEST(testFF(S("cqjohampgd"), "", 11, 0, S::npos)); + BOOST_TEST(testFF(S("hobitmpsan"), "aocjb", 11, 0, S::npos)); + BOOST_TEST(testFF(S("tjehkpsalm"), "jbrnk", 11, 1, S::npos)); + BOOST_TEST(testFF(S("ngfbojitcl"), "tqedg", 11, 2, S::npos)); + BOOST_TEST(testFF(S("rcfkdbhgjo"), "nqskp", 11, 4, S::npos)); + BOOST_TEST(testFF(S("qghptonrea"), "eaqkl", 11, 5, S::npos)); + BOOST_TEST(testFF(S("hnprfgqjdl"), "reaoicljqm", 11, 0, S::npos)); + BOOST_TEST(testFF(S("hlmgabenti"), "lsftgajqpm", 11, 1, S::npos)); + BOOST_TEST(testFF(S("ofcjanmrbs"), "rlpfogmits", 11, 5, S::npos)); + BOOST_TEST(testFF(S("jqedtkornm"), "shkncmiaqj", 11, 9, S::npos)); + BOOST_TEST(testFF(S("rfedlasjmg"), "fpnatrhqgs", 11, 10, S::npos)); + BOOST_TEST(testFF(S("talpqjsgkm"), "sjclemqhnpdbgikarfot", 11, 0, S::npos)); + BOOST_TEST(testFF(S("lrkcbtqpie"), "otcmedjikgsfnqbrhpla", 11, 1, S::npos)); + BOOST_TEST(testFF(S("cipogdskjf"), "bonsaefdqiprkhlgtjcm", 11, 10, S::npos)); + BOOST_TEST(testFF(S("nqedcojahi"), "egpscmahijlfnkrodqtb", 11, 19, S::npos)); + BOOST_TEST(testFF(S("hefnrkmctj"), "kmqbfepjthgilscrndoa", 11, 20, S::npos)); + BOOST_TEST(testFF(S("atqirnmekfjolhpdsgcb"), "", 0, 0, S::npos)); + BOOST_TEST(testFF(S("echfkmlpribjnqsaogtd"), "prboq", 0, 0, S::npos)); + BOOST_TEST(testFF(S("qnhiftdgcleajbpkrosm"), "fjcqh", 0, 1, 4)); + BOOST_TEST(testFF(S("chamfknorbedjitgslpq"), "fmosa", 0, 2, 3)); + BOOST_TEST(testFF(S("njhqpibfmtlkaecdrgso"), "qdbok", 0, 4, 3)); + BOOST_TEST(testFF(S("ebnghfsqkprmdcljoiat"), "amslg", 0, 5, 3)); + BOOST_TEST(testFF(S("letjomsgihfrpqbkancd"), "smpltjneqb", 0, 0, S::npos)); + BOOST_TEST(testFF(S("nblgoipcrqeaktshjdmf"), "flitskrnge", 0, 1, 19)); + BOOST_TEST(testFF(S("cehkbngtjoiflqapsmrd"), "pgqihmlbef", 0, 5, 2)); + BOOST_TEST(testFF(S("mignapfoklbhcqjetdrs"), "cfpdqjtgsb", 0, 9, 2)); + BOOST_TEST(testFF(S("ceatbhlsqjgpnokfrmdi"), "htpsiaflom", 0, 10, 2)); + BOOST_TEST(testFF(S("ocihkjgrdelpfnmastqb"), "kpjfiaceghsrdtlbnomq", 0, 0, S::npos)); + BOOST_TEST(testFF(S("noelgschdtbrjfmiqkap"), "qhtbomidljgafneksprc", 0, 1, 16)); + BOOST_TEST(testFF(S("dkclqfombepritjnghas"), "nhtjobkcefldimpsaqgr", 0, 10, 1)); + BOOST_TEST(testFF(S("miklnresdgbhqcojftap"), "prabcjfqnoeskilmtgdh", 0, 19, 0)); + BOOST_TEST(testFF(S("htbcigojaqmdkfrnlsep"), "dtrgmchilkasqoebfpjn", 0, 20, 0)); + BOOST_TEST(testFF(S("febhmqtjanokscdirpgl"), "", 1, 0, S::npos)); + BOOST_TEST(testFF(S("loakbsqjpcrdhftniegm"), "sqome", 1, 0, S::npos)); + BOOST_TEST(testFF(S("reagphsqflbitdcjmkno"), "smfte", 1, 1, 6)); + BOOST_TEST(testFF(S("jitlfrqemsdhkopncabg"), "ciboh", 1, 2, 1)); + BOOST_TEST(testFF(S("mhtaepscdnrjqgbkifol"), "haois", 1, 4, 1)); + BOOST_TEST(testFF(S("tocesrfmnglpbjihqadk"), "abfki", 1, 5, 6)); + BOOST_TEST(testFF(S("lpfmctjrhdagneskbqoi"), "frdkocntmq", 1, 0, S::npos)); + BOOST_TEST(testFF(S("lsmqaepkdhncirbtjfgo"), "oasbpedlnr", 1, 1, 19)); + BOOST_TEST(testFF(S("epoiqmtldrabnkjhcfsg"), "kltqmhgand", 1, 5, 4)); + BOOST_TEST(testFF(S("emgasrilpknqojhtbdcf"), "gdtfjchpmr", 1, 9, 1)); + BOOST_TEST(testFF(S("hnfiagdpcklrjetqbsom"), "ponmcqblet", 1, 10, 1)); + BOOST_TEST(testFF(S("nsdfebgajhmtricpoklq"), "sgphqdnofeiklatbcmjr", 1, 0, S::npos)); + BOOST_TEST(testFF(S("atjgfsdlpobmeiqhncrk"), "ljqprsmigtfoneadckbh", 1, 1, 7)); + BOOST_TEST(testFF(S("sitodfgnrejlahcbmqkp"), "ligeojhafnkmrcsqtbdp", 1, 10, 1)); + BOOST_TEST(testFF(S("fraghmbiceknltjpqosd"), "lsimqfnjarbopedkhcgt", 1, 19, 1)); + BOOST_TEST(testFF(S("pmafenlhqtdbkirjsogc"), "abedmfjlghniorcqptks", 1, 20, 1)); + BOOST_TEST(testFF(S("pihgmoeqtnakrjslcbfd"), "", 10, 0, S::npos)); + BOOST_TEST(testFF(S("gjdkeprctqblnhiafsom"), "hqtoa", 10, 0, S::npos)); + BOOST_TEST(testFF(S("mkpnblfdsahrcqijteog"), "cahif", 10, 1, 12)); + BOOST_TEST(testFF(S("gckarqnelodfjhmbptis"), "kehis", 10, 2, S::npos)); + BOOST_TEST(testFF(S("gqpskidtbclomahnrjfe"), "kdlmh", 10, 4, 10)); + BOOST_TEST(testFF(S("pkldjsqrfgitbhmaecno"), "paeql", 10, 5, 15)); + BOOST_TEST(testFF(S("aftsijrbeklnmcdqhgop"), "aghoqiefnb", 10, 0, S::npos)); + BOOST_TEST(testFF(S("mtlgdrhafjkbiepqnsoc"), "jrbqaikpdo", 10, 1, S::npos)); + BOOST_TEST(testFF(S("pqgirnaefthokdmbsclj"), "smjonaeqcl", 10, 5, 11)); + BOOST_TEST(testFF(S("kpdbgjmtherlsfcqoina"), "eqbdrkcfah", 10, 9, 10)); + BOOST_TEST(testFF(S("jrlbothiknqmdgcfasep"), "kapmsienhf", 10, 10, 11)); + BOOST_TEST(testFF(S("mjogldqferckabinptsh"), "jpqotrlenfcsbhkaimdg", 10, 0, S::npos)); + BOOST_TEST(testFF(S("apoklnefbhmgqcdrisjt"), "jlbmhnfgtcqprikeados", 10, 1, 18)); + BOOST_TEST(testFF(S("ifeopcnrjbhkdgatmqls"), "stgbhfmdaljnpqoicker", 10, 10, 10)); + BOOST_TEST(testFF(S("ckqhaiesmjdnrgolbtpf"), "oihcetflbjagdsrkmqpn", 10, 19, 10)); + BOOST_TEST(testFF(S("bnlgapfimcoterskqdjh"), "adtclebmnpjsrqfkigoh", 10, 20, 10)); + BOOST_TEST(testFF(S("kgdlrobpmjcthqsafeni"), "", 19, 0, S::npos)); + BOOST_TEST(testFF(S("dfkechomjapgnslbtqir"), "beafg", 19, 0, S::npos)); + BOOST_TEST(testFF(S("rloadknfbqtgmhcsipje"), "iclat", 19, 1, S::npos)); + BOOST_TEST(testFF(S("mgjhkolrnadqbpetcifs"), "rkhnf", 19, 2, S::npos)); + BOOST_TEST(testFF(S("cmlfakiojdrgtbsphqen"), "clshq", 19, 4, S::npos)); + BOOST_TEST(testFF(S("kghbfipeomsntdalrqjc"), "dtcoj", 19, 5, 19)); + BOOST_TEST(testFF(S("eldiqckrnmtasbghjfpo"), "rqosnjmfth", 19, 0, S::npos)); + BOOST_TEST(testFF(S("abqjcfedgotihlnspkrm"), "siatdfqglh", 19, 1, S::npos)); + BOOST_TEST(testFF(S("qfbadrtjsimkolcenhpg"), "mrlshtpgjq", 19, 5, S::npos)); + BOOST_TEST(testFF(S("abseghclkjqifmtodrnp"), "adlcskgqjt", 19, 9, S::npos)); + BOOST_TEST(testFF(S("ibmsnlrjefhtdokacqpg"), "drshcjknaf", 19, 10, S::npos)); + BOOST_TEST(testFF(S("mrkfciqjebaponsthldg"), "etsaqroinghpkjdlfcbm", 19, 0, S::npos)); + BOOST_TEST(testFF(S("mjkticdeoqshpalrfbgn"), "sgepdnkqliambtrocfhj", 19, 1, S::npos)); + BOOST_TEST(testFF(S("rqnoclbdejgiphtfsakm"), "nlmcjaqgbsortfdihkpe", 19, 10, 19)); + BOOST_TEST(testFF(S("plkqbhmtfaeodjcrsing"), "racfnpmosldibqkghjet", 19, 19, 19)); + BOOST_TEST(testFF(S("oegalhmstjrfickpbndq"), "fjhdsctkqeiolagrnmbp", 19, 20, 19)); + BOOST_TEST(testFF(S("rdtgjcaohpblniekmsfq"), "", 20, 0, S::npos)); + BOOST_TEST(testFF(S("ofkqbnjetrmsaidphglc"), "ejanp", 20, 0, S::npos)); + BOOST_TEST(testFF(S("grkpahljcftesdmonqib"), "odife", 20, 1, S::npos)); + BOOST_TEST(testFF(S("jimlgbhfqkteospardcn"), "okaqd", 20, 2, S::npos)); + BOOST_TEST(testFF(S("gftenihpmslrjkqadcob"), "lcdbi", 20, 4, S::npos)); + BOOST_TEST(testFF(S("bmhldogtckrfsanijepq"), "fsqbj", 20, 5, S::npos)); + BOOST_TEST(testFF(S("nfqkrpjdesabgtlcmoih"), "bigdomnplq", 20, 0, S::npos)); + BOOST_TEST(testFF(S("focalnrpiqmdkstehbjg"), "apiblotgcd", 20, 1, S::npos)); + BOOST_TEST(testFF(S("rhqdspkmebiflcotnjga"), "acfhdenops", 20, 5, S::npos)); + BOOST_TEST(testFF(S("rahdtmsckfboqlpniegj"), "jopdeamcrk", 20, 9, S::npos)); + BOOST_TEST(testFF(S("fbkeiopclstmdqranjhg"), "trqncbkgmh", 20, 10, S::npos)); BOOST_TEST(testFF(S("lifhpdgmbconstjeqark"), "tomglrkencbsfjqpihda", 20, 0, S::npos)); @@ -4634,325 +4635,325 @@ testFind() BOOST_TEST(fs1.find_last_of('1') == 0); BOOST_TEST(fs1.find_last_of('5', 3) == -1); - BOOST_TEST(testFL(S(""), "", 0, 0, S::npos)); - BOOST_TEST(testFL(S(""), "irkhs", 0, 0, S::npos)); - BOOST_TEST(testFL(S(""), "kante", 0, 1, S::npos)); - BOOST_TEST(testFL(S(""), "oknlr", 0, 2, S::npos)); - BOOST_TEST(testFL(S(""), "pcdro", 0, 4, S::npos)); - BOOST_TEST(testFL(S(""), "bnrpe", 0, 5, S::npos)); - BOOST_TEST(testFL(S(""), "jtdaefblso", 0, 0, S::npos)); - BOOST_TEST(testFL(S(""), "oselktgbca", 0, 1, S::npos)); - BOOST_TEST(testFL(S(""), "eqgaplhckj", 0, 5, S::npos)); - BOOST_TEST(testFL(S(""), "bjahtcmnlp", 0, 9, S::npos)); - BOOST_TEST(testFL(S(""), "hjlcmgpket", 0, 10, S::npos)); - BOOST_TEST(testFL(S(""), "htaobedqikfplcgjsmrn", 0, 0, S::npos)); - BOOST_TEST(testFL(S(""), "hpqiarojkcdlsgnmfetb", 0, 1, S::npos)); - BOOST_TEST(testFL(S(""), "dfkaprhjloqetcsimnbg", 0, 10, S::npos)); - BOOST_TEST(testFL(S(""), "ihqrfebgadntlpmjksoc", 0, 19, S::npos)); - BOOST_TEST(testFL(S(""), "ngtjfcalbseiqrphmkdo", 0, 20, S::npos)); - BOOST_TEST(testFL(S(""), "", 1, 0, S::npos)); - BOOST_TEST(testFL(S(""), "lbtqd", 1, 0, S::npos)); - BOOST_TEST(testFL(S(""), "tboim", 1, 1, S::npos)); - BOOST_TEST(testFL(S(""), "slcer", 1, 2, S::npos)); - BOOST_TEST(testFL(S(""), "cbjfs", 1, 4, S::npos)); - BOOST_TEST(testFL(S(""), "aqibs", 1, 5, S::npos)); - BOOST_TEST(testFL(S(""), "gtfblmqinc", 1, 0, S::npos)); - BOOST_TEST(testFL(S(""), "mkqpbtdalg", 1, 1, S::npos)); - BOOST_TEST(testFL(S(""), "kphatlimcd", 1, 5, S::npos)); - BOOST_TEST(testFL(S(""), "pblasqogic", 1, 9, S::npos)); - BOOST_TEST(testFL(S(""), "arosdhcfme", 1, 10, S::npos)); - BOOST_TEST(testFL(S(""), "blkhjeogicatqfnpdmsr", 1, 0, S::npos)); - BOOST_TEST(testFL(S(""), "bmhineprjcoadgstflqk", 1, 1, S::npos)); - BOOST_TEST(testFL(S(""), "djkqcmetslnghpbarfoi", 1, 10, S::npos)); - BOOST_TEST(testFL(S(""), "lgokshjtpbemarcdqnfi", 1, 19, S::npos)); - BOOST_TEST(testFL(S(""), "bqjhtkfepimcnsgrlado", 1, 20, S::npos)); - BOOST_TEST(testFL(S("eaint"), "", 0, 0, S::npos)); - BOOST_TEST(testFL(S("binja"), "gfsrt", 0, 0, S::npos)); - BOOST_TEST(testFL(S("latkm"), "pfsoc", 0, 1, S::npos)); - BOOST_TEST(testFL(S("lecfr"), "tpflm", 0, 2, S::npos)); - BOOST_TEST(testFL(S("eqkst"), "sgkec", 0, 4, 0)); - BOOST_TEST(testFL(S("cdafr"), "romds", 0, 5, S::npos)); - BOOST_TEST(testFL(S("prbhe"), "qhjistlgmr", 0, 0, S::npos)); - BOOST_TEST(testFL(S("lbisk"), "pedfirsglo", 0, 1, S::npos)); - BOOST_TEST(testFL(S("hrlpd"), "aqcoslgrmk", 0, 5, S::npos)); - BOOST_TEST(testFL(S("ehmja"), "dabckmepqj", 0, 9, 0)); - BOOST_TEST(testFL(S("mhqgd"), "pqscrjthli", 0, 10, S::npos)); - BOOST_TEST(testFL(S("tgklq"), "kfphdcsjqmobliagtren", 0, 0, S::npos)); - BOOST_TEST(testFL(S("bocjs"), "rokpefncljibsdhqtagm", 0, 1, S::npos)); - BOOST_TEST(testFL(S("grbsd"), "afionmkphlebtcjqsgrd", 0, 10, S::npos)); - BOOST_TEST(testFL(S("ofjqr"), "aenmqplidhkofrjbctsg", 0, 19, 0)); - BOOST_TEST(testFL(S("btlfi"), "osjmbtcadhiklegrpqnf", 0, 20, 0)); - BOOST_TEST(testFL(S("clrgb"), "", 1, 0, S::npos)); - BOOST_TEST(testFL(S("tjmek"), "osmia", 1, 0, S::npos)); - BOOST_TEST(testFL(S("bgstp"), "ckonl", 1, 1, S::npos)); - BOOST_TEST(testFL(S("hstrk"), "ilcaj", 1, 2, S::npos)); - BOOST_TEST(testFL(S("kmspj"), "lasiq", 1, 4, S::npos)); - BOOST_TEST(testFL(S("tjboh"), "kfqmr", 1, 5, S::npos)); - BOOST_TEST(testFL(S("ilbcj"), "klnitfaobg", 1, 0, S::npos)); - BOOST_TEST(testFL(S("jkngf"), "gjhmdlqikp", 1, 1, S::npos)); - BOOST_TEST(testFL(S("gfcql"), "skbgtahqej", 1, 5, 0)); - BOOST_TEST(testFL(S("dqtlg"), "bjsdgtlpkf", 1, 9, 0)); - BOOST_TEST(testFL(S("bthpg"), "bjgfmnlkio", 1, 10, 0)); - BOOST_TEST(testFL(S("dgsnq"), "lbhepotfsjdqigcnamkr", 1, 0, S::npos)); - BOOST_TEST(testFL(S("rmfhp"), "tebangckmpsrqdlfojhi", 1, 1, S::npos)); - BOOST_TEST(testFL(S("jfdam"), "joflqbdkhtegimscpanr", 1, 10, 1)); - BOOST_TEST(testFL(S("edapb"), "adpmcohetfbsrjinlqkg", 1, 19, 1)); - BOOST_TEST(testFL(S("brfsm"), "iacldqjpfnogbsrhmetk", 1, 20, 1)); - BOOST_TEST(testFL(S("ndrhl"), "", 2, 0, S::npos)); - BOOST_TEST(testFL(S("mrecp"), "otkgb", 2, 0, S::npos)); - BOOST_TEST(testFL(S("qlasf"), "cqsjl", 2, 1, S::npos)); - BOOST_TEST(testFL(S("smaqd"), "dpifl", 2, 2, S::npos)); - BOOST_TEST(testFL(S("hjeni"), "oapht", 2, 4, 0)); - BOOST_TEST(testFL(S("ocmfj"), "cifts", 2, 5, 1)); - BOOST_TEST(testFL(S("hmftq"), "nmsckbgalo", 2, 0, S::npos)); - BOOST_TEST(testFL(S("fklad"), "tpksqhamle", 2, 1, S::npos)); - BOOST_TEST(testFL(S("dirnm"), "tpdrchmkji", 2, 5, 2)); - BOOST_TEST(testFL(S("hrgdc"), "ijagfkblst", 2, 9, 2)); - BOOST_TEST(testFL(S("ifakg"), "kpocsignjb", 2, 10, 0)); - BOOST_TEST(testFL(S("ebrgd"), "pecqtkjsnbdrialgmohf", 2, 0, S::npos)); - BOOST_TEST(testFL(S("rcjml"), "aiortphfcmkjebgsndql", 2, 1, S::npos)); - BOOST_TEST(testFL(S("peqmt"), "sdbkeamglhipojqftrcn", 2, 10, 1)); - BOOST_TEST(testFL(S("frehn"), "ljqncehgmfktroapidbs", 2, 19, 2)); - BOOST_TEST(testFL(S("tqolf"), "rtcfodilamkbenjghqps", 2, 20, 2)); - BOOST_TEST(testFL(S("cjgao"), "", 4, 0, S::npos)); - BOOST_TEST(testFL(S("kjplq"), "mabns", 4, 0, S::npos)); - BOOST_TEST(testFL(S("herni"), "bdnrp", 4, 1, S::npos)); - BOOST_TEST(testFL(S("tadrb"), "scidp", 4, 2, S::npos)); - BOOST_TEST(testFL(S("pkfeo"), "agbjl", 4, 4, S::npos)); - BOOST_TEST(testFL(S("hoser"), "jfmpr", 4, 5, 4)); - BOOST_TEST(testFL(S("kgrsp"), "rbpefghsmj", 4, 0, S::npos)); - BOOST_TEST(testFL(S("pgejb"), "apsfntdoqc", 4, 1, S::npos)); - BOOST_TEST(testFL(S("thlnq"), "ndkjeisgcl", 4, 5, 3)); - BOOST_TEST(testFL(S("nbmit"), "rnfpqatdeo", 4, 9, 4)); - BOOST_TEST(testFL(S("jgmib"), "bntjlqrfik", 4, 10, 4)); - BOOST_TEST(testFL(S("ncrfj"), "kcrtmpolnaqejghsfdbi", 4, 0, S::npos)); - BOOST_TEST(testFL(S("ncsik"), "lobheanpkmqidsrtcfgj", 4, 1, S::npos)); - BOOST_TEST(testFL(S("sgbfh"), "athdkljcnreqbgpmisof", 4, 10, 4)); - BOOST_TEST(testFL(S("dktbn"), "qkdmjialrscpbhefgont", 4, 19, 4)); - BOOST_TEST(testFL(S("fthqm"), "dmasojntqleribkgfchp", 4, 20, 4)); - BOOST_TEST(testFL(S("klopi"), "", 5, 0, S::npos)); - BOOST_TEST(testFL(S("dajhn"), "psthd", 5, 0, S::npos)); - BOOST_TEST(testFL(S("jbgno"), "rpmjd", 5, 1, S::npos)); - BOOST_TEST(testFL(S("hkjae"), "dfsmk", 5, 2, S::npos)); - BOOST_TEST(testFL(S("gbhqo"), "skqne", 5, 4, 3)); - BOOST_TEST(testFL(S("ktdor"), "kipnf", 5, 5, 0)); - BOOST_TEST(testFL(S("ldprn"), "hmrnqdgifl", 5, 0, S::npos)); - BOOST_TEST(testFL(S("egmjk"), "fsmjcdairn", 5, 1, S::npos)); - BOOST_TEST(testFL(S("armql"), "pcdgltbrfj", 5, 5, 4)); - BOOST_TEST(testFL(S("cdhjo"), "aekfctpirg", 5, 9, 0)); - BOOST_TEST(testFL(S("jcons"), "ledihrsgpf", 5, 10, 4)); - BOOST_TEST(testFL(S("cbrkp"), "mqcklahsbtirgopefndj", 5, 0, S::npos)); - BOOST_TEST(testFL(S("fhgna"), "kmlthaoqgecrnpdbjfis", 5, 1, S::npos)); - BOOST_TEST(testFL(S("ejfcd"), "sfhbamcdptojlkrenqgi", 5, 10, 4)); - BOOST_TEST(testFL(S("kqjhe"), "pbniofmcedrkhlstgaqj", 5, 19, 4)); - BOOST_TEST(testFL(S("pbdjl"), "mongjratcskbhqiepfdl", 5, 20, 4)); - BOOST_TEST(testFL(S("gajqn"), "", 6, 0, S::npos)); - BOOST_TEST(testFL(S("stedk"), "hrnat", 6, 0, S::npos)); - BOOST_TEST(testFL(S("tjkaf"), "gsqdt", 6, 1, S::npos)); - BOOST_TEST(testFL(S("dthpe"), "bspkd", 6, 2, S::npos)); - BOOST_TEST(testFL(S("klhde"), "ohcmb", 6, 4, 2)); - BOOST_TEST(testFL(S("bhlki"), "heatr", 6, 5, 1)); - BOOST_TEST(testFL(S("lqmoh"), "pmblckedfn", 6, 0, S::npos)); - BOOST_TEST(testFL(S("mtqin"), "aceqmsrbik", 6, 1, S::npos)); - BOOST_TEST(testFL(S("dpqbr"), "lmbtdehjrn", 6, 5, 3)); - BOOST_TEST(testFL(S("kdhmo"), "teqmcrlgib", 6, 9, 3)); - BOOST_TEST(testFL(S("jblqp"), "njolbmspac", 6, 10, 4)); - BOOST_TEST(testFL(S("qmjgl"), "pofnhidklamecrbqjgst", 6, 0, S::npos)); - BOOST_TEST(testFL(S("rothp"), "jbhckmtgrqnosafedpli", 6, 1, S::npos)); - BOOST_TEST(testFL(S("ghknq"), "dobntpmqklicsahgjerf", 6, 10, 4)); - BOOST_TEST(testFL(S("eopfi"), "tpdshainjkbfoemlrgcq", 6, 19, 4)); - BOOST_TEST(testFL(S("dsnmg"), "oldpfgeakrnitscbjmqh", 6, 20, 4)); - BOOST_TEST(testFL(S("jnkrfhotgl"), "", 0, 0, S::npos)); - BOOST_TEST(testFL(S("dltjfngbko"), "rqegt", 0, 0, S::npos)); - BOOST_TEST(testFL(S("bmjlpkiqde"), "dashm", 0, 1, S::npos)); - BOOST_TEST(testFL(S("skrflobnqm"), "jqirk", 0, 2, S::npos)); - BOOST_TEST(testFL(S("jkpldtshrm"), "rckeg", 0, 4, S::npos)); - BOOST_TEST(testFL(S("ghasdbnjqo"), "jscie", 0, 5, S::npos)); - BOOST_TEST(testFL(S("igrkhpbqjt"), "efsphndliq", 0, 0, S::npos)); - BOOST_TEST(testFL(S("ikthdgcamf"), "gdicosleja", 0, 1, S::npos)); - BOOST_TEST(testFL(S("pcofgeniam"), "qcpjibosfl", 0, 5, 0)); - BOOST_TEST(testFL(S("rlfjgesqhc"), "lrhmefnjcq", 0, 9, 0)); - BOOST_TEST(testFL(S("itphbqsker"), "dtablcrseo", 0, 10, S::npos)); - BOOST_TEST(testFL(S("skjafcirqm"), "apckjsftedbhgomrnilq", 0, 0, S::npos)); - BOOST_TEST(testFL(S("tcqomarsfd"), "pcbrgflehjtiadnsokqm", 0, 1, S::npos)); - BOOST_TEST(testFL(S("rocfeldqpk"), "nsiadegjklhobrmtqcpf", 0, 10, S::npos)); - BOOST_TEST(testFL(S("cfpegndlkt"), "cpmajdqnolikhgsbretf", 0, 19, 0)); - BOOST_TEST(testFL(S("fqbtnkeasj"), "jcflkntmgiqrphdosaeb", 0, 20, 0)); - BOOST_TEST(testFL(S("shbcqnmoar"), "", 1, 0, S::npos)); - BOOST_TEST(testFL(S("bdoshlmfin"), "ontrs", 1, 0, S::npos)); - BOOST_TEST(testFL(S("khfrebnsgq"), "pfkna", 1, 1, S::npos)); - BOOST_TEST(testFL(S("getcrsaoji"), "ekosa", 1, 2, 1)); - BOOST_TEST(testFL(S("fjiknedcpq"), "anqhk", 1, 4, S::npos)); - BOOST_TEST(testFL(S("tkejgnafrm"), "jekca", 1, 5, 1)); - BOOST_TEST(testFL(S("jnakolqrde"), "ikemsjgacf", 1, 0, S::npos)); - BOOST_TEST(testFL(S("lcjptsmgbe"), "arolgsjkhm", 1, 1, S::npos)); - BOOST_TEST(testFL(S("itfsmcjorl"), "oftkbldhre", 1, 5, 1)); - BOOST_TEST(testFL(S("omchkfrjea"), "gbkqdoeftl", 1, 9, 0)); - BOOST_TEST(testFL(S("cigfqkated"), "sqcflrgtim", 1, 10, 1)); - BOOST_TEST(testFL(S("tscenjikml"), "fmhbkislrjdpanogqcet", 1, 0, S::npos)); - BOOST_TEST(testFL(S("qcpaemsinf"), "rnioadktqlgpbcjsmhef", 1, 1, S::npos)); - BOOST_TEST(testFL(S("gltkojeipd"), "oakgtnldpsefihqmjcbr", 1, 10, 1)); - BOOST_TEST(testFL(S("qistfrgnmp"), "gbnaelosidmcjqktfhpr", 1, 19, 1)); - BOOST_TEST(testFL(S("bdnpfcqaem"), "akbripjhlosndcmqgfet", 1, 20, 1)); - BOOST_TEST(testFL(S("ectnhskflp"), "", 5, 0, S::npos)); - BOOST_TEST(testFL(S("fgtianblpq"), "pijag", 5, 0, S::npos)); - BOOST_TEST(testFL(S("mfeqklirnh"), "jrckd", 5, 1, S::npos)); - BOOST_TEST(testFL(S("astedncjhk"), "qcloh", 5, 2, S::npos)); - BOOST_TEST(testFL(S("fhlqgcajbr"), "thlmp", 5, 4, 2)); - BOOST_TEST(testFL(S("epfhocmdng"), "qidmo", 5, 5, 4)); - BOOST_TEST(testFL(S("apcnsibger"), "lnegpsjqrd", 5, 0, S::npos)); - BOOST_TEST(testFL(S("aqkocrbign"), "rjqdablmfs", 5, 1, 5)); - BOOST_TEST(testFL(S("ijsmdtqgce"), "enkgpbsjaq", 5, 5, S::npos)); - BOOST_TEST(testFL(S("clobgsrken"), "kdsgoaijfh", 5, 9, 5)); - BOOST_TEST(testFL(S("jbhcfposld"), "trfqgmckbe", 5, 10, 4)); - BOOST_TEST(testFL(S("oqnpblhide"), "igetsracjfkdnpoblhqm", 5, 0, S::npos)); - BOOST_TEST(testFL(S("lroeasctif"), "nqctfaogirshlekbdjpm", 5, 1, S::npos)); - BOOST_TEST(testFL(S("bpjlgmiedh"), "csehfgomljdqinbartkp", 5, 10, 5)); - BOOST_TEST(testFL(S("pamkeoidrj"), "qahoegcmplkfsjbdnitr", 5, 19, 5)); - BOOST_TEST(testFL(S("espogqbthk"), "dpteiajrqmsognhlfbkc", 5, 20, 5)); - BOOST_TEST(testFL(S("shoiedtcjb"), "", 9, 0, S::npos)); - BOOST_TEST(testFL(S("ebcinjgads"), "tqbnh", 9, 0, S::npos)); - BOOST_TEST(testFL(S("dqmregkcfl"), "akmle", 9, 1, S::npos)); - BOOST_TEST(testFL(S("ngcrieqajf"), "iqfkm", 9, 2, 6)); - BOOST_TEST(testFL(S("qosmilgnjb"), "tqjsr", 9, 4, 8)); - BOOST_TEST(testFL(S("ikabsjtdfl"), "jplqg", 9, 5, 9)); - BOOST_TEST(testFL(S("ersmicafdh"), "oilnrbcgtj", 9, 0, S::npos)); - BOOST_TEST(testFL(S("fdnplotmgh"), "morkglpesn", 9, 1, 7)); - BOOST_TEST(testFL(S("fdbicojerm"), "dmicerngat", 9, 5, 9)); - BOOST_TEST(testFL(S("mbtafndjcq"), "radgeskbtc", 9, 9, 6)); - BOOST_TEST(testFL(S("mlenkpfdtc"), "ljikprsmqo", 9, 10, 5)); - BOOST_TEST(testFL(S("ahlcifdqgs"), "trqihkcgsjamfdbolnpe", 9, 0, S::npos)); - BOOST_TEST(testFL(S("bgjemaltks"), "lqmthbsrekajgnofcipd", 9, 1, 6)); - BOOST_TEST(testFL(S("pdhslbqrfc"), "jtalmedribkgqsopcnfh", 9, 10, 7)); - BOOST_TEST(testFL(S("dirhtsnjkc"), "spqfoiclmtagejbndkrh", 9, 19, 9)); - BOOST_TEST(testFL(S("dlroktbcja"), "nmotklspigjrdhcfaebq", 9, 20, 9)); - BOOST_TEST(testFL(S("ncjpmaekbs"), "", 10, 0, S::npos)); - BOOST_TEST(testFL(S("hlbosgmrak"), "hpmsd", 10, 0, S::npos)); - BOOST_TEST(testFL(S("pqfhsgilen"), "qnpor", 10, 1, 1)); - BOOST_TEST(testFL(S("gqtjsbdckh"), "otdma", 10, 2, 2)); - BOOST_TEST(testFL(S("cfkqpjlegi"), "efhjg", 10, 4, 7)); - BOOST_TEST(testFL(S("beanrfodgj"), "odpte", 10, 5, 7)); - BOOST_TEST(testFL(S("adtkqpbjfi"), "bctdgfmolr", 10, 0, S::npos)); - BOOST_TEST(testFL(S("iomkfthagj"), "oaklidrbqg", 10, 1, 1)); - BOOST_TEST(testFL(S("sdpcilonqj"), "dnjfsagktr", 10, 5, 9)); - BOOST_TEST(testFL(S("gtfbdkqeml"), "nejaktmiqg", 10, 9, 8)); - BOOST_TEST(testFL(S("bmeqgcdorj"), "pjqonlebsf", 10, 10, 9)); - BOOST_TEST(testFL(S("etqlcanmob"), "dshmnbtolcjepgaikfqr", 10, 0, S::npos)); - BOOST_TEST(testFL(S("roqmkbdtia"), "iogfhpabtjkqlrnemcds", 10, 1, 8)); - BOOST_TEST(testFL(S("kadsithljf"), "ngridfabjsecpqltkmoh", 10, 10, 9)); - BOOST_TEST(testFL(S("sgtkpbfdmh"), "athmknplcgofrqejsdib", 10, 19, 9)); - BOOST_TEST(testFL(S("qgmetnabkl"), "ldobhmqcafnjtkeisgrp", 10, 20, 9)); - BOOST_TEST(testFL(S("cqjohampgd"), "", 11, 0, S::npos)); - BOOST_TEST(testFL(S("hobitmpsan"), "aocjb", 11, 0, S::npos)); - BOOST_TEST(testFL(S("tjehkpsalm"), "jbrnk", 11, 1, 1)); - BOOST_TEST(testFL(S("ngfbojitcl"), "tqedg", 11, 2, 7)); - BOOST_TEST(testFL(S("rcfkdbhgjo"), "nqskp", 11, 4, 3)); - BOOST_TEST(testFL(S("qghptonrea"), "eaqkl", 11, 5, 9)); - BOOST_TEST(testFL(S("hnprfgqjdl"), "reaoicljqm", 11, 0, S::npos)); - BOOST_TEST(testFL(S("hlmgabenti"), "lsftgajqpm", 11, 1, 1)); - BOOST_TEST(testFL(S("ofcjanmrbs"), "rlpfogmits", 11, 5, 7)); - BOOST_TEST(testFL(S("jqedtkornm"), "shkncmiaqj", 11, 9, 9)); - BOOST_TEST(testFL(S("rfedlasjmg"), "fpnatrhqgs", 11, 10, 9)); - BOOST_TEST(testFL(S("talpqjsgkm"), "sjclemqhnpdbgikarfot", 11, 0, S::npos)); - BOOST_TEST(testFL(S("lrkcbtqpie"), "otcmedjikgsfnqbrhpla", 11, 1, S::npos)); - BOOST_TEST(testFL(S("cipogdskjf"), "bonsaefdqiprkhlgtjcm", 11, 10, 9)); - BOOST_TEST(testFL(S("nqedcojahi"), "egpscmahijlfnkrodqtb", 11, 19, 9)); - BOOST_TEST(testFL(S("hefnrkmctj"), "kmqbfepjthgilscrndoa", 11, 20, 9)); - BOOST_TEST(testFL(S("atqirnmekfjolhpdsgcb"), "", 0, 0, S::npos)); - BOOST_TEST(testFL(S("echfkmlpribjnqsaogtd"), "prboq", 0, 0, S::npos)); - BOOST_TEST(testFL(S("qnhiftdgcleajbpkrosm"), "fjcqh", 0, 1, S::npos)); - BOOST_TEST(testFL(S("chamfknorbedjitgslpq"), "fmosa", 0, 2, S::npos)); - BOOST_TEST(testFL(S("njhqpibfmtlkaecdrgso"), "qdbok", 0, 4, S::npos)); - BOOST_TEST(testFL(S("ebnghfsqkprmdcljoiat"), "amslg", 0, 5, S::npos)); - BOOST_TEST(testFL(S("letjomsgihfrpqbkancd"), "smpltjneqb", 0, 0, S::npos)); - BOOST_TEST(testFL(S("nblgoipcrqeaktshjdmf"), "flitskrnge", 0, 1, S::npos)); - BOOST_TEST(testFL(S("cehkbngtjoiflqapsmrd"), "pgqihmlbef", 0, 5, S::npos)); - BOOST_TEST(testFL(S("mignapfoklbhcqjetdrs"), "cfpdqjtgsb", 0, 9, S::npos)); - BOOST_TEST(testFL(S("ceatbhlsqjgpnokfrmdi"), "htpsiaflom", 0, 10, S::npos)); - BOOST_TEST(testFL(S("ocihkjgrdelpfnmastqb"), "kpjfiaceghsrdtlbnomq", 0, 0, S::npos)); - BOOST_TEST(testFL(S("noelgschdtbrjfmiqkap"), "qhtbomidljgafneksprc", 0, 1, S::npos)); - BOOST_TEST(testFL(S("dkclqfombepritjnghas"), "nhtjobkcefldimpsaqgr", 0, 10, S::npos)); - BOOST_TEST(testFL(S("miklnresdgbhqcojftap"), "prabcjfqnoeskilmtgdh", 0, 19, 0)); - BOOST_TEST(testFL(S("htbcigojaqmdkfrnlsep"), "dtrgmchilkasqoebfpjn", 0, 20, 0)); - BOOST_TEST(testFL(S("febhmqtjanokscdirpgl"), "", 1, 0, S::npos)); - BOOST_TEST(testFL(S("loakbsqjpcrdhftniegm"), "sqome", 1, 0, S::npos)); - BOOST_TEST(testFL(S("reagphsqflbitdcjmkno"), "smfte", 1, 1, S::npos)); - BOOST_TEST(testFL(S("jitlfrqemsdhkopncabg"), "ciboh", 1, 2, 1)); - BOOST_TEST(testFL(S("mhtaepscdnrjqgbkifol"), "haois", 1, 4, 1)); - BOOST_TEST(testFL(S("tocesrfmnglpbjihqadk"), "abfki", 1, 5, S::npos)); - BOOST_TEST(testFL(S("lpfmctjrhdagneskbqoi"), "frdkocntmq", 1, 0, S::npos)); - BOOST_TEST(testFL(S("lsmqaepkdhncirbtjfgo"), "oasbpedlnr", 1, 1, S::npos)); - BOOST_TEST(testFL(S("epoiqmtldrabnkjhcfsg"), "kltqmhgand", 1, 5, S::npos)); - BOOST_TEST(testFL(S("emgasrilpknqojhtbdcf"), "gdtfjchpmr", 1, 9, 1)); - BOOST_TEST(testFL(S("hnfiagdpcklrjetqbsom"), "ponmcqblet", 1, 10, 1)); - BOOST_TEST(testFL(S("nsdfebgajhmtricpoklq"), "sgphqdnofeiklatbcmjr", 1, 0, S::npos)); - BOOST_TEST(testFL(S("atjgfsdlpobmeiqhncrk"), "ljqprsmigtfoneadckbh", 1, 1, S::npos)); - BOOST_TEST(testFL(S("sitodfgnrejlahcbmqkp"), "ligeojhafnkmrcsqtbdp", 1, 10, 1)); - BOOST_TEST(testFL(S("fraghmbiceknltjpqosd"), "lsimqfnjarbopedkhcgt", 1, 19, 1)); - BOOST_TEST(testFL(S("pmafenlhqtdbkirjsogc"), "abedmfjlghniorcqptks", 1, 20, 1)); - BOOST_TEST(testFL(S("pihgmoeqtnakrjslcbfd"), "", 10, 0, S::npos)); - BOOST_TEST(testFL(S("gjdkeprctqblnhiafsom"), "hqtoa", 10, 0, S::npos)); - BOOST_TEST(testFL(S("mkpnblfdsahrcqijteog"), "cahif", 10, 1, S::npos)); - BOOST_TEST(testFL(S("gckarqnelodfjhmbptis"), "kehis", 10, 2, 7)); - BOOST_TEST(testFL(S("gqpskidtbclomahnrjfe"), "kdlmh", 10, 4, 10)); - BOOST_TEST(testFL(S("pkldjsqrfgitbhmaecno"), "paeql", 10, 5, 6)); - BOOST_TEST(testFL(S("aftsijrbeklnmcdqhgop"), "aghoqiefnb", 10, 0, S::npos)); - BOOST_TEST(testFL(S("mtlgdrhafjkbiepqnsoc"), "jrbqaikpdo", 10, 1, 9)); - BOOST_TEST(testFL(S("pqgirnaefthokdmbsclj"), "smjonaeqcl", 10, 5, 5)); - BOOST_TEST(testFL(S("kpdbgjmtherlsfcqoina"), "eqbdrkcfah", 10, 9, 10)); - BOOST_TEST(testFL(S("jrlbothiknqmdgcfasep"), "kapmsienhf", 10, 10, 9)); - BOOST_TEST(testFL(S("mjogldqferckabinptsh"), "jpqotrlenfcsbhkaimdg", 10, 0, S::npos)); - BOOST_TEST(testFL(S("apoklnefbhmgqcdrisjt"), "jlbmhnfgtcqprikeados", 10, 1, S::npos)); - BOOST_TEST(testFL(S("ifeopcnrjbhkdgatmqls"), "stgbhfmdaljnpqoicker", 10, 10, 10)); - BOOST_TEST(testFL(S("ckqhaiesmjdnrgolbtpf"), "oihcetflbjagdsrkmqpn", 10, 19, 10)); - BOOST_TEST(testFL(S("bnlgapfimcoterskqdjh"), "adtclebmnpjsrqfkigoh", 10, 20, 10)); - BOOST_TEST(testFL(S("kgdlrobpmjcthqsafeni"), "", 19, 0, S::npos)); - BOOST_TEST(testFL(S("dfkechomjapgnslbtqir"), "beafg", 19, 0, S::npos)); - BOOST_TEST(testFL(S("rloadknfbqtgmhcsipje"), "iclat", 19, 1, 16)); - BOOST_TEST(testFL(S("mgjhkolrnadqbpetcifs"), "rkhnf", 19, 2, 7)); - BOOST_TEST(testFL(S("cmlfakiojdrgtbsphqen"), "clshq", 19, 4, 16)); - BOOST_TEST(testFL(S("kghbfipeomsntdalrqjc"), "dtcoj", 19, 5, 19)); - BOOST_TEST(testFL(S("eldiqckrnmtasbghjfpo"), "rqosnjmfth", 19, 0, S::npos)); - BOOST_TEST(testFL(S("abqjcfedgotihlnspkrm"), "siatdfqglh", 19, 1, 15)); - BOOST_TEST(testFL(S("qfbadrtjsimkolcenhpg"), "mrlshtpgjq", 19, 5, 17)); - BOOST_TEST(testFL(S("abseghclkjqifmtodrnp"), "adlcskgqjt", 19, 9, 16)); - BOOST_TEST(testFL(S("ibmsnlrjefhtdokacqpg"), "drshcjknaf", 19, 10, 16)); - BOOST_TEST(testFL(S("mrkfciqjebaponsthldg"), "etsaqroinghpkjdlfcbm", 19, 0, S::npos)); - BOOST_TEST(testFL(S("mjkticdeoqshpalrfbgn"), "sgepdnkqliambtrocfhj", 19, 1, 10)); - BOOST_TEST(testFL(S("rqnoclbdejgiphtfsakm"), "nlmcjaqgbsortfdihkpe", 19, 10, 19)); - BOOST_TEST(testFL(S("plkqbhmtfaeodjcrsing"), "racfnpmosldibqkghjet", 19, 19, 19)); - BOOST_TEST(testFL(S("oegalhmstjrfickpbndq"), "fjhdsctkqeiolagrnmbp", 19, 20, 19)); - BOOST_TEST(testFL(S("rdtgjcaohpblniekmsfq"), "", 20, 0, S::npos)); - BOOST_TEST(testFL(S("ofkqbnjetrmsaidphglc"), "ejanp", 20, 0, S::npos)); - BOOST_TEST(testFL(S("grkpahljcftesdmonqib"), "odife", 20, 1, 15)); - BOOST_TEST(testFL(S("jimlgbhfqkteospardcn"), "okaqd", 20, 2, 12)); - BOOST_TEST(testFL(S("gftenihpmslrjkqadcob"), "lcdbi", 20, 4, 19)); - BOOST_TEST(testFL(S("bmhldogtckrfsanijepq"), "fsqbj", 20, 5, 19)); - BOOST_TEST(testFL(S("nfqkrpjdesabgtlcmoih"), "bigdomnplq", 20, 0, S::npos)); - BOOST_TEST(testFL(S("focalnrpiqmdkstehbjg"), "apiblotgcd", 20, 1, 3)); - BOOST_TEST(testFL(S("rhqdspkmebiflcotnjga"), "acfhdenops", 20, 5, 19)); - BOOST_TEST(testFL(S("rahdtmsckfboqlpniegj"), "jopdeamcrk", 20, 9, 19)); - BOOST_TEST(testFL(S("fbkeiopclstmdqranjhg"), "trqncbkgmh", 20, 10, 19)); - BOOST_TEST(testFL(S("lifhpdgmbconstjeqark"), "tomglrkencbsfjqpihda", 20, 0, S::npos)); - BOOST_TEST(testFL(S("pboqganrhedjmltsicfk"), "gbkhdnpoietfcmrslajq", 20, 1, 4)); - BOOST_TEST(testFL(S("klchabsimetjnqgorfpd"), "rtfnmbsglkjaichoqedp", 20, 10, 17)); - BOOST_TEST(testFL(S("sirfgmjqhctndbklaepo"), "ohkmdpfqbsacrtjnlgei", 20, 19, 19)); - BOOST_TEST(testFL(S("rlbdsiceaonqjtfpghkm"), "dlbrteoisgphmkncajfq", 20, 20, 19)); - BOOST_TEST(testFL(S("ecgdanriptblhjfqskom"), "", 21, 0, S::npos)); - BOOST_TEST(testFL(S("fdmiarlpgcskbhoteqjn"), "sjrlo", 21, 0, S::npos)); - BOOST_TEST(testFL(S("rlbstjqopignecmfadkh"), "qjpor", 21, 1, 6)); - BOOST_TEST(testFL(S("grjpqmbshektdolcafni"), "odhfn", 21, 2, 13)); - BOOST_TEST(testFL(S("sakfcohtqnibprjmlged"), "qtfin", 21, 4, 10)); - BOOST_TEST(testFL(S("mjtdglasihqpocebrfkn"), "hpqfo", 21, 5, 17)); - BOOST_TEST(testFL(S("okaplfrntghqbmeicsdj"), "fabmertkos", 21, 0, S::npos)); - BOOST_TEST(testFL(S("sahngemrtcjidqbklfpo"), "brqtgkmaej", 21, 1, 14)); - BOOST_TEST(testFL(S("dlmsipcnekhbgoaftqjr"), "nfrdeihsgl", 21, 5, 19)); - BOOST_TEST(testFL(S("ahegrmqnoiklpfsdbcjt"), "hlfrosekpi", 21, 9, 14)); - BOOST_TEST(testFL(S("hdsjbnmlegtkqripacof"), "atgbkrjdsm", 21, 10, 16)); - BOOST_TEST(testFL(S("pcnedrfjihqbalkgtoms"), "blnrptjgqmaifsdkhoec", 21, 0, S::npos)); - BOOST_TEST(testFL(S("qjidealmtpskrbfhocng"), "ctpmdahebfqjgknloris", 21, 1, 17)); - BOOST_TEST(testFL(S("qeindtagmokpfhsclrbj"), "apnkeqthrmlbfodiscgj", 21, 10, 17)); - BOOST_TEST(testFL(S("kpfegbjhsrnodltqciam"), "jdgictpframeoqlsbknh", 21, 19, 19)); + BOOST_TEST(testFL(S(""), "", 0, 0, S::npos)); + BOOST_TEST(testFL(S(""), "irkhs", 0, 0, S::npos)); + BOOST_TEST(testFL(S(""), "kante", 0, 1, S::npos)); + BOOST_TEST(testFL(S(""), "oknlr", 0, 2, S::npos)); + BOOST_TEST(testFL(S(""), "pcdro", 0, 4, S::npos)); + BOOST_TEST(testFL(S(""), "bnrpe", 0, 5, S::npos)); + BOOST_TEST(testFL(S(""), "jtdaefblso", 0, 0, S::npos)); + BOOST_TEST(testFL(S(""), "oselktgbca", 0, 1, S::npos)); + BOOST_TEST(testFL(S(""), "eqgaplhckj", 0, 5, S::npos)); + BOOST_TEST(testFL(S(""), "bjahtcmnlp", 0, 9, S::npos)); + BOOST_TEST(testFL(S(""), "hjlcmgpket", 0, 10, S::npos)); + BOOST_TEST(testFL(S(""), "htaobedqikfplcgjsmrn", 0, 0, S::npos)); + BOOST_TEST(testFL(S(""), "hpqiarojkcdlsgnmfetb", 0, 1, S::npos)); + BOOST_TEST(testFL(S(""), "dfkaprhjloqetcsimnbg", 0, 10, S::npos)); + BOOST_TEST(testFL(S(""), "ihqrfebgadntlpmjksoc", 0, 19, S::npos)); + BOOST_TEST(testFL(S(""), "ngtjfcalbseiqrphmkdo", 0, 20, S::npos)); + BOOST_TEST(testFL(S(""), "", 1, 0, S::npos)); + BOOST_TEST(testFL(S(""), "lbtqd", 1, 0, S::npos)); + BOOST_TEST(testFL(S(""), "tboim", 1, 1, S::npos)); + BOOST_TEST(testFL(S(""), "slcer", 1, 2, S::npos)); + BOOST_TEST(testFL(S(""), "cbjfs", 1, 4, S::npos)); + BOOST_TEST(testFL(S(""), "aqibs", 1, 5, S::npos)); + BOOST_TEST(testFL(S(""), "gtfblmqinc", 1, 0, S::npos)); + BOOST_TEST(testFL(S(""), "mkqpbtdalg", 1, 1, S::npos)); + BOOST_TEST(testFL(S(""), "kphatlimcd", 1, 5, S::npos)); + BOOST_TEST(testFL(S(""), "pblasqogic", 1, 9, S::npos)); + BOOST_TEST(testFL(S(""), "arosdhcfme", 1, 10, S::npos)); + BOOST_TEST(testFL(S(""), "blkhjeogicatqfnpdmsr", 1, 0, S::npos)); + BOOST_TEST(testFL(S(""), "bmhineprjcoadgstflqk", 1, 1, S::npos)); + BOOST_TEST(testFL(S(""), "djkqcmetslnghpbarfoi", 1, 10, S::npos)); + BOOST_TEST(testFL(S(""), "lgokshjtpbemarcdqnfi", 1, 19, S::npos)); + BOOST_TEST(testFL(S(""), "bqjhtkfepimcnsgrlado", 1, 20, S::npos)); + BOOST_TEST(testFL(S("eaint"), "", 0, 0, S::npos)); + BOOST_TEST(testFL(S("binja"), "gfsrt", 0, 0, S::npos)); + BOOST_TEST(testFL(S("latkm"), "pfsoc", 0, 1, S::npos)); + BOOST_TEST(testFL(S("lecfr"), "tpflm", 0, 2, S::npos)); + BOOST_TEST(testFL(S("eqkst"), "sgkec", 0, 4, 0)); + BOOST_TEST(testFL(S("cdafr"), "romds", 0, 5, S::npos)); + BOOST_TEST(testFL(S("prbhe"), "qhjistlgmr", 0, 0, S::npos)); + BOOST_TEST(testFL(S("lbisk"), "pedfirsglo", 0, 1, S::npos)); + BOOST_TEST(testFL(S("hrlpd"), "aqcoslgrmk", 0, 5, S::npos)); + BOOST_TEST(testFL(S("ehmja"), "dabckmepqj", 0, 9, 0)); + BOOST_TEST(testFL(S("mhqgd"), "pqscrjthli", 0, 10, S::npos)); + BOOST_TEST(testFL(S("tgklq"), "kfphdcsjqmobliagtren", 0, 0, S::npos)); + BOOST_TEST(testFL(S("bocjs"), "rokpefncljibsdhqtagm", 0, 1, S::npos)); + BOOST_TEST(testFL(S("grbsd"), "afionmkphlebtcjqsgrd", 0, 10, S::npos)); + BOOST_TEST(testFL(S("ofjqr"), "aenmqplidhkofrjbctsg", 0, 19, 0)); + BOOST_TEST(testFL(S("btlfi"), "osjmbtcadhiklegrpqnf", 0, 20, 0)); + BOOST_TEST(testFL(S("clrgb"), "", 1, 0, S::npos)); + BOOST_TEST(testFL(S("tjmek"), "osmia", 1, 0, S::npos)); + BOOST_TEST(testFL(S("bgstp"), "ckonl", 1, 1, S::npos)); + BOOST_TEST(testFL(S("hstrk"), "ilcaj", 1, 2, S::npos)); + BOOST_TEST(testFL(S("kmspj"), "lasiq", 1, 4, S::npos)); + BOOST_TEST(testFL(S("tjboh"), "kfqmr", 1, 5, S::npos)); + BOOST_TEST(testFL(S("ilbcj"), "klnitfaobg", 1, 0, S::npos)); + BOOST_TEST(testFL(S("jkngf"), "gjhmdlqikp", 1, 1, S::npos)); + BOOST_TEST(testFL(S("gfcql"), "skbgtahqej", 1, 5, 0)); + BOOST_TEST(testFL(S("dqtlg"), "bjsdgtlpkf", 1, 9, 0)); + BOOST_TEST(testFL(S("bthpg"), "bjgfmnlkio", 1, 10, 0)); + BOOST_TEST(testFL(S("dgsnq"), "lbhepotfsjdqigcnamkr", 1, 0, S::npos)); + BOOST_TEST(testFL(S("rmfhp"), "tebangckmpsrqdlfojhi", 1, 1, S::npos)); + BOOST_TEST(testFL(S("jfdam"), "joflqbdkhtegimscpanr", 1, 10, 1)); + BOOST_TEST(testFL(S("edapb"), "adpmcohetfbsrjinlqkg", 1, 19, 1)); + BOOST_TEST(testFL(S("brfsm"), "iacldqjpfnogbsrhmetk", 1, 20, 1)); + BOOST_TEST(testFL(S("ndrhl"), "", 2, 0, S::npos)); + BOOST_TEST(testFL(S("mrecp"), "otkgb", 2, 0, S::npos)); + BOOST_TEST(testFL(S("qlasf"), "cqsjl", 2, 1, S::npos)); + BOOST_TEST(testFL(S("smaqd"), "dpifl", 2, 2, S::npos)); + BOOST_TEST(testFL(S("hjeni"), "oapht", 2, 4, 0)); + BOOST_TEST(testFL(S("ocmfj"), "cifts", 2, 5, 1)); + BOOST_TEST(testFL(S("hmftq"), "nmsckbgalo", 2, 0, S::npos)); + BOOST_TEST(testFL(S("fklad"), "tpksqhamle", 2, 1, S::npos)); + BOOST_TEST(testFL(S("dirnm"), "tpdrchmkji", 2, 5, 2)); + BOOST_TEST(testFL(S("hrgdc"), "ijagfkblst", 2, 9, 2)); + BOOST_TEST(testFL(S("ifakg"), "kpocsignjb", 2, 10, 0)); + BOOST_TEST(testFL(S("ebrgd"), "pecqtkjsnbdrialgmohf", 2, 0, S::npos)); + BOOST_TEST(testFL(S("rcjml"), "aiortphfcmkjebgsndql", 2, 1, S::npos)); + BOOST_TEST(testFL(S("peqmt"), "sdbkeamglhipojqftrcn", 2, 10, 1)); + BOOST_TEST(testFL(S("frehn"), "ljqncehgmfktroapidbs", 2, 19, 2)); + BOOST_TEST(testFL(S("tqolf"), "rtcfodilamkbenjghqps", 2, 20, 2)); + BOOST_TEST(testFL(S("cjgao"), "", 4, 0, S::npos)); + BOOST_TEST(testFL(S("kjplq"), "mabns", 4, 0, S::npos)); + BOOST_TEST(testFL(S("herni"), "bdnrp", 4, 1, S::npos)); + BOOST_TEST(testFL(S("tadrb"), "scidp", 4, 2, S::npos)); + BOOST_TEST(testFL(S("pkfeo"), "agbjl", 4, 4, S::npos)); + BOOST_TEST(testFL(S("hoser"), "jfmpr", 4, 5, 4)); + BOOST_TEST(testFL(S("kgrsp"), "rbpefghsmj", 4, 0, S::npos)); + BOOST_TEST(testFL(S("pgejb"), "apsfntdoqc", 4, 1, S::npos)); + BOOST_TEST(testFL(S("thlnq"), "ndkjeisgcl", 4, 5, 3)); + BOOST_TEST(testFL(S("nbmit"), "rnfpqatdeo", 4, 9, 4)); + BOOST_TEST(testFL(S("jgmib"), "bntjlqrfik", 4, 10, 4)); + BOOST_TEST(testFL(S("ncrfj"), "kcrtmpolnaqejghsfdbi", 4, 0, S::npos)); + BOOST_TEST(testFL(S("ncsik"), "lobheanpkmqidsrtcfgj", 4, 1, S::npos)); + BOOST_TEST(testFL(S("sgbfh"), "athdkljcnreqbgpmisof", 4, 10, 4)); + BOOST_TEST(testFL(S("dktbn"), "qkdmjialrscpbhefgont", 4, 19, 4)); + BOOST_TEST(testFL(S("fthqm"), "dmasojntqleribkgfchp", 4, 20, 4)); + BOOST_TEST(testFL(S("klopi"), "", 5, 0, S::npos)); + BOOST_TEST(testFL(S("dajhn"), "psthd", 5, 0, S::npos)); + BOOST_TEST(testFL(S("jbgno"), "rpmjd", 5, 1, S::npos)); + BOOST_TEST(testFL(S("hkjae"), "dfsmk", 5, 2, S::npos)); + BOOST_TEST(testFL(S("gbhqo"), "skqne", 5, 4, 3)); + BOOST_TEST(testFL(S("ktdor"), "kipnf", 5, 5, 0)); + BOOST_TEST(testFL(S("ldprn"), "hmrnqdgifl", 5, 0, S::npos)); + BOOST_TEST(testFL(S("egmjk"), "fsmjcdairn", 5, 1, S::npos)); + BOOST_TEST(testFL(S("armql"), "pcdgltbrfj", 5, 5, 4)); + BOOST_TEST(testFL(S("cdhjo"), "aekfctpirg", 5, 9, 0)); + BOOST_TEST(testFL(S("jcons"), "ledihrsgpf", 5, 10, 4)); + BOOST_TEST(testFL(S("cbrkp"), "mqcklahsbtirgopefndj", 5, 0, S::npos)); + BOOST_TEST(testFL(S("fhgna"), "kmlthaoqgecrnpdbjfis", 5, 1, S::npos)); + BOOST_TEST(testFL(S("ejfcd"), "sfhbamcdptojlkrenqgi", 5, 10, 4)); + BOOST_TEST(testFL(S("kqjhe"), "pbniofmcedrkhlstgaqj", 5, 19, 4)); + BOOST_TEST(testFL(S("pbdjl"), "mongjratcskbhqiepfdl", 5, 20, 4)); + BOOST_TEST(testFL(S("gajqn"), "", 6, 0, S::npos)); + BOOST_TEST(testFL(S("stedk"), "hrnat", 6, 0, S::npos)); + BOOST_TEST(testFL(S("tjkaf"), "gsqdt", 6, 1, S::npos)); + BOOST_TEST(testFL(S("dthpe"), "bspkd", 6, 2, S::npos)); + BOOST_TEST(testFL(S("klhde"), "ohcmb", 6, 4, 2)); + BOOST_TEST(testFL(S("bhlki"), "heatr", 6, 5, 1)); + BOOST_TEST(testFL(S("lqmoh"), "pmblckedfn", 6, 0, S::npos)); + BOOST_TEST(testFL(S("mtqin"), "aceqmsrbik", 6, 1, S::npos)); + BOOST_TEST(testFL(S("dpqbr"), "lmbtdehjrn", 6, 5, 3)); + BOOST_TEST(testFL(S("kdhmo"), "teqmcrlgib", 6, 9, 3)); + BOOST_TEST(testFL(S("jblqp"), "njolbmspac", 6, 10, 4)); + BOOST_TEST(testFL(S("qmjgl"), "pofnhidklamecrbqjgst", 6, 0, S::npos)); + BOOST_TEST(testFL(S("rothp"), "jbhckmtgrqnosafedpli", 6, 1, S::npos)); + BOOST_TEST(testFL(S("ghknq"), "dobntpmqklicsahgjerf", 6, 10, 4)); + BOOST_TEST(testFL(S("eopfi"), "tpdshainjkbfoemlrgcq", 6, 19, 4)); + BOOST_TEST(testFL(S("dsnmg"), "oldpfgeakrnitscbjmqh", 6, 20, 4)); + BOOST_TEST(testFL(S("jnkrfhotgl"), "", 0, 0, S::npos)); + BOOST_TEST(testFL(S("dltjfngbko"), "rqegt", 0, 0, S::npos)); + BOOST_TEST(testFL(S("bmjlpkiqde"), "dashm", 0, 1, S::npos)); + BOOST_TEST(testFL(S("skrflobnqm"), "jqirk", 0, 2, S::npos)); + BOOST_TEST(testFL(S("jkpldtshrm"), "rckeg", 0, 4, S::npos)); + BOOST_TEST(testFL(S("ghasdbnjqo"), "jscie", 0, 5, S::npos)); + BOOST_TEST(testFL(S("igrkhpbqjt"), "efsphndliq", 0, 0, S::npos)); + BOOST_TEST(testFL(S("ikthdgcamf"), "gdicosleja", 0, 1, S::npos)); + BOOST_TEST(testFL(S("pcofgeniam"), "qcpjibosfl", 0, 5, 0)); + BOOST_TEST(testFL(S("rlfjgesqhc"), "lrhmefnjcq", 0, 9, 0)); + BOOST_TEST(testFL(S("itphbqsker"), "dtablcrseo", 0, 10, S::npos)); + BOOST_TEST(testFL(S("skjafcirqm"), "apckjsftedbhgomrnilq", 0, 0, S::npos)); + BOOST_TEST(testFL(S("tcqomarsfd"), "pcbrgflehjtiadnsokqm", 0, 1, S::npos)); + BOOST_TEST(testFL(S("rocfeldqpk"), "nsiadegjklhobrmtqcpf", 0, 10, S::npos)); + BOOST_TEST(testFL(S("cfpegndlkt"), "cpmajdqnolikhgsbretf", 0, 19, 0)); + BOOST_TEST(testFL(S("fqbtnkeasj"), "jcflkntmgiqrphdosaeb", 0, 20, 0)); + BOOST_TEST(testFL(S("shbcqnmoar"), "", 1, 0, S::npos)); + BOOST_TEST(testFL(S("bdoshlmfin"), "ontrs", 1, 0, S::npos)); + BOOST_TEST(testFL(S("khfrebnsgq"), "pfkna", 1, 1, S::npos)); + BOOST_TEST(testFL(S("getcrsaoji"), "ekosa", 1, 2, 1)); + BOOST_TEST(testFL(S("fjiknedcpq"), "anqhk", 1, 4, S::npos)); + BOOST_TEST(testFL(S("tkejgnafrm"), "jekca", 1, 5, 1)); + BOOST_TEST(testFL(S("jnakolqrde"), "ikemsjgacf", 1, 0, S::npos)); + BOOST_TEST(testFL(S("lcjptsmgbe"), "arolgsjkhm", 1, 1, S::npos)); + BOOST_TEST(testFL(S("itfsmcjorl"), "oftkbldhre", 1, 5, 1)); + BOOST_TEST(testFL(S("omchkfrjea"), "gbkqdoeftl", 1, 9, 0)); + BOOST_TEST(testFL(S("cigfqkated"), "sqcflrgtim", 1, 10, 1)); + BOOST_TEST(testFL(S("tscenjikml"), "fmhbkislrjdpanogqcet", 1, 0, S::npos)); + BOOST_TEST(testFL(S("qcpaemsinf"), "rnioadktqlgpbcjsmhef", 1, 1, S::npos)); + BOOST_TEST(testFL(S("gltkojeipd"), "oakgtnldpsefihqmjcbr", 1, 10, 1)); + BOOST_TEST(testFL(S("qistfrgnmp"), "gbnaelosidmcjqktfhpr", 1, 19, 1)); + BOOST_TEST(testFL(S("bdnpfcqaem"), "akbripjhlosndcmqgfet", 1, 20, 1)); + BOOST_TEST(testFL(S("ectnhskflp"), "", 5, 0, S::npos)); + BOOST_TEST(testFL(S("fgtianblpq"), "pijag", 5, 0, S::npos)); + BOOST_TEST(testFL(S("mfeqklirnh"), "jrckd", 5, 1, S::npos)); + BOOST_TEST(testFL(S("astedncjhk"), "qcloh", 5, 2, S::npos)); + BOOST_TEST(testFL(S("fhlqgcajbr"), "thlmp", 5, 4, 2)); + BOOST_TEST(testFL(S("epfhocmdng"), "qidmo", 5, 5, 4)); + BOOST_TEST(testFL(S("apcnsibger"), "lnegpsjqrd", 5, 0, S::npos)); + BOOST_TEST(testFL(S("aqkocrbign"), "rjqdablmfs", 5, 1, 5)); + BOOST_TEST(testFL(S("ijsmdtqgce"), "enkgpbsjaq", 5, 5, S::npos)); + BOOST_TEST(testFL(S("clobgsrken"), "kdsgoaijfh", 5, 9, 5)); + BOOST_TEST(testFL(S("jbhcfposld"), "trfqgmckbe", 5, 10, 4)); + BOOST_TEST(testFL(S("oqnpblhide"), "igetsracjfkdnpoblhqm", 5, 0, S::npos)); + BOOST_TEST(testFL(S("lroeasctif"), "nqctfaogirshlekbdjpm", 5, 1, S::npos)); + BOOST_TEST(testFL(S("bpjlgmiedh"), "csehfgomljdqinbartkp", 5, 10, 5)); + BOOST_TEST(testFL(S("pamkeoidrj"), "qahoegcmplkfsjbdnitr", 5, 19, 5)); + BOOST_TEST(testFL(S("espogqbthk"), "dpteiajrqmsognhlfbkc", 5, 20, 5)); + BOOST_TEST(testFL(S("shoiedtcjb"), "", 9, 0, S::npos)); + BOOST_TEST(testFL(S("ebcinjgads"), "tqbnh", 9, 0, S::npos)); + BOOST_TEST(testFL(S("dqmregkcfl"), "akmle", 9, 1, S::npos)); + BOOST_TEST(testFL(S("ngcrieqajf"), "iqfkm", 9, 2, 6)); + BOOST_TEST(testFL(S("qosmilgnjb"), "tqjsr", 9, 4, 8)); + BOOST_TEST(testFL(S("ikabsjtdfl"), "jplqg", 9, 5, 9)); + BOOST_TEST(testFL(S("ersmicafdh"), "oilnrbcgtj", 9, 0, S::npos)); + BOOST_TEST(testFL(S("fdnplotmgh"), "morkglpesn", 9, 1, 7)); + BOOST_TEST(testFL(S("fdbicojerm"), "dmicerngat", 9, 5, 9)); + BOOST_TEST(testFL(S("mbtafndjcq"), "radgeskbtc", 9, 9, 6)); + BOOST_TEST(testFL(S("mlenkpfdtc"), "ljikprsmqo", 9, 10, 5)); + BOOST_TEST(testFL(S("ahlcifdqgs"), "trqihkcgsjamfdbolnpe", 9, 0, S::npos)); + BOOST_TEST(testFL(S("bgjemaltks"), "lqmthbsrekajgnofcipd", 9, 1, 6)); + BOOST_TEST(testFL(S("pdhslbqrfc"), "jtalmedribkgqsopcnfh", 9, 10, 7)); + BOOST_TEST(testFL(S("dirhtsnjkc"), "spqfoiclmtagejbndkrh", 9, 19, 9)); + BOOST_TEST(testFL(S("dlroktbcja"), "nmotklspigjrdhcfaebq", 9, 20, 9)); + BOOST_TEST(testFL(S("ncjpmaekbs"), "", 10, 0, S::npos)); + BOOST_TEST(testFL(S("hlbosgmrak"), "hpmsd", 10, 0, S::npos)); + BOOST_TEST(testFL(S("pqfhsgilen"), "qnpor", 10, 1, 1)); + BOOST_TEST(testFL(S("gqtjsbdckh"), "otdma", 10, 2, 2)); + BOOST_TEST(testFL(S("cfkqpjlegi"), "efhjg", 10, 4, 7)); + BOOST_TEST(testFL(S("beanrfodgj"), "odpte", 10, 5, 7)); + BOOST_TEST(testFL(S("adtkqpbjfi"), "bctdgfmolr", 10, 0, S::npos)); + BOOST_TEST(testFL(S("iomkfthagj"), "oaklidrbqg", 10, 1, 1)); + BOOST_TEST(testFL(S("sdpcilonqj"), "dnjfsagktr", 10, 5, 9)); + BOOST_TEST(testFL(S("gtfbdkqeml"), "nejaktmiqg", 10, 9, 8)); + BOOST_TEST(testFL(S("bmeqgcdorj"), "pjqonlebsf", 10, 10, 9)); + BOOST_TEST(testFL(S("etqlcanmob"), "dshmnbtolcjepgaikfqr", 10, 0, S::npos)); + BOOST_TEST(testFL(S("roqmkbdtia"), "iogfhpabtjkqlrnemcds", 10, 1, 8)); + BOOST_TEST(testFL(S("kadsithljf"), "ngridfabjsecpqltkmoh", 10, 10, 9)); + BOOST_TEST(testFL(S("sgtkpbfdmh"), "athmknplcgofrqejsdib", 10, 19, 9)); + BOOST_TEST(testFL(S("qgmetnabkl"), "ldobhmqcafnjtkeisgrp", 10, 20, 9)); + BOOST_TEST(testFL(S("cqjohampgd"), "", 11, 0, S::npos)); + BOOST_TEST(testFL(S("hobitmpsan"), "aocjb", 11, 0, S::npos)); + BOOST_TEST(testFL(S("tjehkpsalm"), "jbrnk", 11, 1, 1)); + BOOST_TEST(testFL(S("ngfbojitcl"), "tqedg", 11, 2, 7)); + BOOST_TEST(testFL(S("rcfkdbhgjo"), "nqskp", 11, 4, 3)); + BOOST_TEST(testFL(S("qghptonrea"), "eaqkl", 11, 5, 9)); + BOOST_TEST(testFL(S("hnprfgqjdl"), "reaoicljqm", 11, 0, S::npos)); + BOOST_TEST(testFL(S("hlmgabenti"), "lsftgajqpm", 11, 1, 1)); + BOOST_TEST(testFL(S("ofcjanmrbs"), "rlpfogmits", 11, 5, 7)); + BOOST_TEST(testFL(S("jqedtkornm"), "shkncmiaqj", 11, 9, 9)); + BOOST_TEST(testFL(S("rfedlasjmg"), "fpnatrhqgs", 11, 10, 9)); + BOOST_TEST(testFL(S("talpqjsgkm"), "sjclemqhnpdbgikarfot", 11, 0, S::npos)); + BOOST_TEST(testFL(S("lrkcbtqpie"), "otcmedjikgsfnqbrhpla", 11, 1, S::npos)); + BOOST_TEST(testFL(S("cipogdskjf"), "bonsaefdqiprkhlgtjcm", 11, 10, 9)); + BOOST_TEST(testFL(S("nqedcojahi"), "egpscmahijlfnkrodqtb", 11, 19, 9)); + BOOST_TEST(testFL(S("hefnrkmctj"), "kmqbfepjthgilscrndoa", 11, 20, 9)); + BOOST_TEST(testFL(S("atqirnmekfjolhpdsgcb"), "", 0, 0, S::npos)); + BOOST_TEST(testFL(S("echfkmlpribjnqsaogtd"), "prboq", 0, 0, S::npos)); + BOOST_TEST(testFL(S("qnhiftdgcleajbpkrosm"), "fjcqh", 0, 1, S::npos)); + BOOST_TEST(testFL(S("chamfknorbedjitgslpq"), "fmosa", 0, 2, S::npos)); + BOOST_TEST(testFL(S("njhqpibfmtlkaecdrgso"), "qdbok", 0, 4, S::npos)); + BOOST_TEST(testFL(S("ebnghfsqkprmdcljoiat"), "amslg", 0, 5, S::npos)); + BOOST_TEST(testFL(S("letjomsgihfrpqbkancd"), "smpltjneqb", 0, 0, S::npos)); + BOOST_TEST(testFL(S("nblgoipcrqeaktshjdmf"), "flitskrnge", 0, 1, S::npos)); + BOOST_TEST(testFL(S("cehkbngtjoiflqapsmrd"), "pgqihmlbef", 0, 5, S::npos)); + BOOST_TEST(testFL(S("mignapfoklbhcqjetdrs"), "cfpdqjtgsb", 0, 9, S::npos)); + BOOST_TEST(testFL(S("ceatbhlsqjgpnokfrmdi"), "htpsiaflom", 0, 10, S::npos)); + BOOST_TEST(testFL(S("ocihkjgrdelpfnmastqb"), "kpjfiaceghsrdtlbnomq", 0, 0, S::npos)); + BOOST_TEST(testFL(S("noelgschdtbrjfmiqkap"), "qhtbomidljgafneksprc", 0, 1, S::npos)); + BOOST_TEST(testFL(S("dkclqfombepritjnghas"), "nhtjobkcefldimpsaqgr", 0, 10, S::npos)); + BOOST_TEST(testFL(S("miklnresdgbhqcojftap"), "prabcjfqnoeskilmtgdh", 0, 19, 0)); + BOOST_TEST(testFL(S("htbcigojaqmdkfrnlsep"), "dtrgmchilkasqoebfpjn", 0, 20, 0)); + BOOST_TEST(testFL(S("febhmqtjanokscdirpgl"), "", 1, 0, S::npos)); + BOOST_TEST(testFL(S("loakbsqjpcrdhftniegm"), "sqome", 1, 0, S::npos)); + BOOST_TEST(testFL(S("reagphsqflbitdcjmkno"), "smfte", 1, 1, S::npos)); + BOOST_TEST(testFL(S("jitlfrqemsdhkopncabg"), "ciboh", 1, 2, 1)); + BOOST_TEST(testFL(S("mhtaepscdnrjqgbkifol"), "haois", 1, 4, 1)); + BOOST_TEST(testFL(S("tocesrfmnglpbjihqadk"), "abfki", 1, 5, S::npos)); + BOOST_TEST(testFL(S("lpfmctjrhdagneskbqoi"), "frdkocntmq", 1, 0, S::npos)); + BOOST_TEST(testFL(S("lsmqaepkdhncirbtjfgo"), "oasbpedlnr", 1, 1, S::npos)); + BOOST_TEST(testFL(S("epoiqmtldrabnkjhcfsg"), "kltqmhgand", 1, 5, S::npos)); + BOOST_TEST(testFL(S("emgasrilpknqojhtbdcf"), "gdtfjchpmr", 1, 9, 1)); + BOOST_TEST(testFL(S("hnfiagdpcklrjetqbsom"), "ponmcqblet", 1, 10, 1)); + BOOST_TEST(testFL(S("nsdfebgajhmtricpoklq"), "sgphqdnofeiklatbcmjr", 1, 0, S::npos)); + BOOST_TEST(testFL(S("atjgfsdlpobmeiqhncrk"), "ljqprsmigtfoneadckbh", 1, 1, S::npos)); + BOOST_TEST(testFL(S("sitodfgnrejlahcbmqkp"), "ligeojhafnkmrcsqtbdp", 1, 10, 1)); + BOOST_TEST(testFL(S("fraghmbiceknltjpqosd"), "lsimqfnjarbopedkhcgt", 1, 19, 1)); + BOOST_TEST(testFL(S("pmafenlhqtdbkirjsogc"), "abedmfjlghniorcqptks", 1, 20, 1)); + BOOST_TEST(testFL(S("pihgmoeqtnakrjslcbfd"), "", 10, 0, S::npos)); + BOOST_TEST(testFL(S("gjdkeprctqblnhiafsom"), "hqtoa", 10, 0, S::npos)); + BOOST_TEST(testFL(S("mkpnblfdsahrcqijteog"), "cahif", 10, 1, S::npos)); + BOOST_TEST(testFL(S("gckarqnelodfjhmbptis"), "kehis", 10, 2, 7)); + BOOST_TEST(testFL(S("gqpskidtbclomahnrjfe"), "kdlmh", 10, 4, 10)); + BOOST_TEST(testFL(S("pkldjsqrfgitbhmaecno"), "paeql", 10, 5, 6)); + BOOST_TEST(testFL(S("aftsijrbeklnmcdqhgop"), "aghoqiefnb", 10, 0, S::npos)); + BOOST_TEST(testFL(S("mtlgdrhafjkbiepqnsoc"), "jrbqaikpdo", 10, 1, 9)); + BOOST_TEST(testFL(S("pqgirnaefthokdmbsclj"), "smjonaeqcl", 10, 5, 5)); + BOOST_TEST(testFL(S("kpdbgjmtherlsfcqoina"), "eqbdrkcfah", 10, 9, 10)); + BOOST_TEST(testFL(S("jrlbothiknqmdgcfasep"), "kapmsienhf", 10, 10, 9)); + BOOST_TEST(testFL(S("mjogldqferckabinptsh"), "jpqotrlenfcsbhkaimdg", 10, 0, S::npos)); + BOOST_TEST(testFL(S("apoklnefbhmgqcdrisjt"), "jlbmhnfgtcqprikeados", 10, 1, S::npos)); + BOOST_TEST(testFL(S("ifeopcnrjbhkdgatmqls"), "stgbhfmdaljnpqoicker", 10, 10, 10)); + BOOST_TEST(testFL(S("ckqhaiesmjdnrgolbtpf"), "oihcetflbjagdsrkmqpn", 10, 19, 10)); + BOOST_TEST(testFL(S("bnlgapfimcoterskqdjh"), "adtclebmnpjsrqfkigoh", 10, 20, 10)); + BOOST_TEST(testFL(S("kgdlrobpmjcthqsafeni"), "", 19, 0, S::npos)); + BOOST_TEST(testFL(S("dfkechomjapgnslbtqir"), "beafg", 19, 0, S::npos)); + BOOST_TEST(testFL(S("rloadknfbqtgmhcsipje"), "iclat", 19, 1, 16)); + BOOST_TEST(testFL(S("mgjhkolrnadqbpetcifs"), "rkhnf", 19, 2, 7)); + BOOST_TEST(testFL(S("cmlfakiojdrgtbsphqen"), "clshq", 19, 4, 16)); + BOOST_TEST(testFL(S("kghbfipeomsntdalrqjc"), "dtcoj", 19, 5, 19)); + BOOST_TEST(testFL(S("eldiqckrnmtasbghjfpo"), "rqosnjmfth", 19, 0, S::npos)); + BOOST_TEST(testFL(S("abqjcfedgotihlnspkrm"), "siatdfqglh", 19, 1, 15)); + BOOST_TEST(testFL(S("qfbadrtjsimkolcenhpg"), "mrlshtpgjq", 19, 5, 17)); + BOOST_TEST(testFL(S("abseghclkjqifmtodrnp"), "adlcskgqjt", 19, 9, 16)); + BOOST_TEST(testFL(S("ibmsnlrjefhtdokacqpg"), "drshcjknaf", 19, 10, 16)); + BOOST_TEST(testFL(S("mrkfciqjebaponsthldg"), "etsaqroinghpkjdlfcbm", 19, 0, S::npos)); + BOOST_TEST(testFL(S("mjkticdeoqshpalrfbgn"), "sgepdnkqliambtrocfhj", 19, 1, 10)); + BOOST_TEST(testFL(S("rqnoclbdejgiphtfsakm"), "nlmcjaqgbsortfdihkpe", 19, 10, 19)); + BOOST_TEST(testFL(S("plkqbhmtfaeodjcrsing"), "racfnpmosldibqkghjet", 19, 19, 19)); + BOOST_TEST(testFL(S("oegalhmstjrfickpbndq"), "fjhdsctkqeiolagrnmbp", 19, 20, 19)); + BOOST_TEST(testFL(S("rdtgjcaohpblniekmsfq"), "", 20, 0, S::npos)); + BOOST_TEST(testFL(S("ofkqbnjetrmsaidphglc"), "ejanp", 20, 0, S::npos)); + BOOST_TEST(testFL(S("grkpahljcftesdmonqib"), "odife", 20, 1, 15)); + BOOST_TEST(testFL(S("jimlgbhfqkteospardcn"), "okaqd", 20, 2, 12)); + BOOST_TEST(testFL(S("gftenihpmslrjkqadcob"), "lcdbi", 20, 4, 19)); + BOOST_TEST(testFL(S("bmhldogtckrfsanijepq"), "fsqbj", 20, 5, 19)); + BOOST_TEST(testFL(S("nfqkrpjdesabgtlcmoih"), "bigdomnplq", 20, 0, S::npos)); + BOOST_TEST(testFL(S("focalnrpiqmdkstehbjg"), "apiblotgcd", 20, 1, 3)); + BOOST_TEST(testFL(S("rhqdspkmebiflcotnjga"), "acfhdenops", 20, 5, 19)); + BOOST_TEST(testFL(S("rahdtmsckfboqlpniegj"), "jopdeamcrk", 20, 9, 19)); + BOOST_TEST(testFL(S("fbkeiopclstmdqranjhg"), "trqncbkgmh", 20, 10, 19)); + BOOST_TEST(testFL(S("lifhpdgmbconstjeqark"), "tomglrkencbsfjqpihda", 20, 0, S::npos)); + BOOST_TEST(testFL(S("pboqganrhedjmltsicfk"), "gbkhdnpoietfcmrslajq", 20, 1, 4)); + BOOST_TEST(testFL(S("klchabsimetjnqgorfpd"), "rtfnmbsglkjaichoqedp", 20, 10, 17)); + BOOST_TEST(testFL(S("sirfgmjqhctndbklaepo"), "ohkmdpfqbsacrtjnlgei", 20, 19, 19)); + BOOST_TEST(testFL(S("rlbdsiceaonqjtfpghkm"), "dlbrteoisgphmkncajfq", 20, 20, 19)); + BOOST_TEST(testFL(S("ecgdanriptblhjfqskom"), "", 21, 0, S::npos)); + BOOST_TEST(testFL(S("fdmiarlpgcskbhoteqjn"), "sjrlo", 21, 0, S::npos)); + BOOST_TEST(testFL(S("rlbstjqopignecmfadkh"), "qjpor", 21, 1, 6)); + BOOST_TEST(testFL(S("grjpqmbshektdolcafni"), "odhfn", 21, 2, 13)); + BOOST_TEST(testFL(S("sakfcohtqnibprjmlged"), "qtfin", 21, 4, 10)); + BOOST_TEST(testFL(S("mjtdglasihqpocebrfkn"), "hpqfo", 21, 5, 17)); + BOOST_TEST(testFL(S("okaplfrntghqbmeicsdj"), "fabmertkos", 21, 0, S::npos)); + BOOST_TEST(testFL(S("sahngemrtcjidqbklfpo"), "brqtgkmaej", 21, 1, 14)); + BOOST_TEST(testFL(S("dlmsipcnekhbgoaftqjr"), "nfrdeihsgl", 21, 5, 19)); + BOOST_TEST(testFL(S("ahegrmqnoiklpfsdbcjt"), "hlfrosekpi", 21, 9, 14)); + BOOST_TEST(testFL(S("hdsjbnmlegtkqripacof"), "atgbkrjdsm", 21, 10, 16)); + BOOST_TEST(testFL(S("pcnedrfjihqbalkgtoms"), "blnrptjgqmaifsdkhoec", 21, 0, S::npos)); + BOOST_TEST(testFL(S("qjidealmtpskrbfhocng"), "ctpmdahebfqjgknloris", 21, 1, 17)); + BOOST_TEST(testFL(S("qeindtagmokpfhsclrbj"), "apnkeqthrmlbfodiscgj", 21, 10, 17)); + BOOST_TEST(testFL(S("kpfegbjhsrnodltqciam"), "jdgictpframeoqlsbknh", 21, 19, 19)); BOOST_TEST(testFL(S("hnbrcplsjfgiktoedmaq"), "qprlsfojamgndekthibc", 21, 20, 19)); @@ -4967,8 +4968,8 @@ testFind() const char* cs4 = "2356"; string_view v3 = cs3; string_view v4 = cs4; - fixed_string<5> fs3 = cs3; - fixed_string<4> fs4 = cs4; + static_string<5> fs3 = cs3; + static_string<4> fs4 = cs4; BOOST_TEST(fs1.find_first_not_of(v3) == 2); BOOST_TEST(fs1.find_first_not_of(v4) == 0); @@ -4993,325 +4994,325 @@ testFind() - BOOST_TEST(testFFN(S(""), "", 0, 0, S::npos)); - BOOST_TEST(testFFN(S(""), "irkhs", 0, 0, S::npos)); - BOOST_TEST(testFFN(S(""), "kante", 0, 1, S::npos)); - BOOST_TEST(testFFN(S(""), "oknlr", 0, 2, S::npos)); - BOOST_TEST(testFFN(S(""), "pcdro", 0, 4, S::npos)); - BOOST_TEST(testFFN(S(""), "bnrpe", 0, 5, S::npos)); - BOOST_TEST(testFFN(S(""), "jtdaefblso", 0, 0, S::npos)); - BOOST_TEST(testFFN(S(""), "oselktgbca", 0, 1, S::npos)); - BOOST_TEST(testFFN(S(""), "eqgaplhckj", 0, 5, S::npos)); - BOOST_TEST(testFFN(S(""), "bjahtcmnlp", 0, 9, S::npos)); - BOOST_TEST(testFFN(S(""), "hjlcmgpket", 0, 10, S::npos)); - BOOST_TEST(testFFN(S(""), "htaobedqikfplcgjsmrn", 0, 0, S::npos)); - BOOST_TEST(testFFN(S(""), "hpqiarojkcdlsgnmfetb", 0, 1, S::npos)); - BOOST_TEST(testFFN(S(""), "dfkaprhjloqetcsimnbg", 0, 10, S::npos)); - BOOST_TEST(testFFN(S(""), "ihqrfebgadntlpmjksoc", 0, 19, S::npos)); - BOOST_TEST(testFFN(S(""), "ngtjfcalbseiqrphmkdo", 0, 20, S::npos)); - BOOST_TEST(testFFN(S(""), "", 1, 0, S::npos)); - BOOST_TEST(testFFN(S(""), "lbtqd", 1, 0, S::npos)); - BOOST_TEST(testFFN(S(""), "tboim", 1, 1, S::npos)); - BOOST_TEST(testFFN(S(""), "slcer", 1, 2, S::npos)); - BOOST_TEST(testFFN(S(""), "cbjfs", 1, 4, S::npos)); - BOOST_TEST(testFFN(S(""), "aqibs", 1, 5, S::npos)); - BOOST_TEST(testFFN(S(""), "gtfblmqinc", 1, 0, S::npos)); - BOOST_TEST(testFFN(S(""), "mkqpbtdalg", 1, 1, S::npos)); - BOOST_TEST(testFFN(S(""), "kphatlimcd", 1, 5, S::npos)); - BOOST_TEST(testFFN(S(""), "pblasqogic", 1, 9, S::npos)); - BOOST_TEST(testFFN(S(""), "arosdhcfme", 1, 10, S::npos)); - BOOST_TEST(testFFN(S(""), "blkhjeogicatqfnpdmsr", 1, 0, S::npos)); - BOOST_TEST(testFFN(S(""), "bmhineprjcoadgstflqk", 1, 1, S::npos)); - BOOST_TEST(testFFN(S(""), "djkqcmetslnghpbarfoi", 1, 10, S::npos)); - BOOST_TEST(testFFN(S(""), "lgokshjtpbemarcdqnfi", 1, 19, S::npos)); - BOOST_TEST(testFFN(S(""), "bqjhtkfepimcnsgrlado", 1, 20, S::npos)); - BOOST_TEST(testFFN(S("eaint"), "", 0, 0, 0)); - BOOST_TEST(testFFN(S("binja"), "gfsrt", 0, 0, 0)); - BOOST_TEST(testFFN(S("latkm"), "pfsoc", 0, 1, 0)); - BOOST_TEST(testFFN(S("lecfr"), "tpflm", 0, 2, 0)); - BOOST_TEST(testFFN(S("eqkst"), "sgkec", 0, 4, 1)); - BOOST_TEST(testFFN(S("cdafr"), "romds", 0, 5, 0)); - BOOST_TEST(testFFN(S("prbhe"), "qhjistlgmr", 0, 0, 0)); - BOOST_TEST(testFFN(S("lbisk"), "pedfirsglo", 0, 1, 0)); - BOOST_TEST(testFFN(S("hrlpd"), "aqcoslgrmk", 0, 5, 0)); - BOOST_TEST(testFFN(S("ehmja"), "dabckmepqj", 0, 9, 1)); - BOOST_TEST(testFFN(S("mhqgd"), "pqscrjthli", 0, 10, 0)); - BOOST_TEST(testFFN(S("tgklq"), "kfphdcsjqmobliagtren", 0, 0, 0)); - BOOST_TEST(testFFN(S("bocjs"), "rokpefncljibsdhqtagm", 0, 1, 0)); - BOOST_TEST(testFFN(S("grbsd"), "afionmkphlebtcjqsgrd", 0, 10, 0)); - BOOST_TEST(testFFN(S("ofjqr"), "aenmqplidhkofrjbctsg", 0, 19, S::npos)); - BOOST_TEST(testFFN(S("btlfi"), "osjmbtcadhiklegrpqnf", 0, 20, S::npos)); - BOOST_TEST(testFFN(S("clrgb"), "", 1, 0, 1)); - BOOST_TEST(testFFN(S("tjmek"), "osmia", 1, 0, 1)); - BOOST_TEST(testFFN(S("bgstp"), "ckonl", 1, 1, 1)); - BOOST_TEST(testFFN(S("hstrk"), "ilcaj", 1, 2, 1)); - BOOST_TEST(testFFN(S("kmspj"), "lasiq", 1, 4, 1)); - BOOST_TEST(testFFN(S("tjboh"), "kfqmr", 1, 5, 1)); - BOOST_TEST(testFFN(S("ilbcj"), "klnitfaobg", 1, 0, 1)); - BOOST_TEST(testFFN(S("jkngf"), "gjhmdlqikp", 1, 1, 1)); - BOOST_TEST(testFFN(S("gfcql"), "skbgtahqej", 1, 5, 1)); - BOOST_TEST(testFFN(S("dqtlg"), "bjsdgtlpkf", 1, 9, 1)); - BOOST_TEST(testFFN(S("bthpg"), "bjgfmnlkio", 1, 10, 1)); - BOOST_TEST(testFFN(S("dgsnq"), "lbhepotfsjdqigcnamkr", 1, 0, 1)); - BOOST_TEST(testFFN(S("rmfhp"), "tebangckmpsrqdlfojhi", 1, 1, 1)); - BOOST_TEST(testFFN(S("jfdam"), "joflqbdkhtegimscpanr", 1, 10, 3)); - BOOST_TEST(testFFN(S("edapb"), "adpmcohetfbsrjinlqkg", 1, 19, S::npos)); - BOOST_TEST(testFFN(S("brfsm"), "iacldqjpfnogbsrhmetk", 1, 20, S::npos)); - BOOST_TEST(testFFN(S("ndrhl"), "", 2, 0, 2)); - BOOST_TEST(testFFN(S("mrecp"), "otkgb", 2, 0, 2)); - BOOST_TEST(testFFN(S("qlasf"), "cqsjl", 2, 1, 2)); - BOOST_TEST(testFFN(S("smaqd"), "dpifl", 2, 2, 2)); - BOOST_TEST(testFFN(S("hjeni"), "oapht", 2, 4, 2)); - BOOST_TEST(testFFN(S("ocmfj"), "cifts", 2, 5, 2)); - BOOST_TEST(testFFN(S("hmftq"), "nmsckbgalo", 2, 0, 2)); - BOOST_TEST(testFFN(S("fklad"), "tpksqhamle", 2, 1, 2)); - BOOST_TEST(testFFN(S("dirnm"), "tpdrchmkji", 2, 5, 3)); - BOOST_TEST(testFFN(S("hrgdc"), "ijagfkblst", 2, 9, 3)); - BOOST_TEST(testFFN(S("ifakg"), "kpocsignjb", 2, 10, 2)); - BOOST_TEST(testFFN(S("ebrgd"), "pecqtkjsnbdrialgmohf", 2, 0, 2)); - BOOST_TEST(testFFN(S("rcjml"), "aiortphfcmkjebgsndql", 2, 1, 2)); - BOOST_TEST(testFFN(S("peqmt"), "sdbkeamglhipojqftrcn", 2, 10, 2)); - BOOST_TEST(testFFN(S("frehn"), "ljqncehgmfktroapidbs", 2, 19, S::npos)); - BOOST_TEST(testFFN(S("tqolf"), "rtcfodilamkbenjghqps", 2, 20, S::npos)); - BOOST_TEST(testFFN(S("cjgao"), "", 4, 0, 4)); - BOOST_TEST(testFFN(S("kjplq"), "mabns", 4, 0, 4)); - BOOST_TEST(testFFN(S("herni"), "bdnrp", 4, 1, 4)); - BOOST_TEST(testFFN(S("tadrb"), "scidp", 4, 2, 4)); - BOOST_TEST(testFFN(S("pkfeo"), "agbjl", 4, 4, 4)); - BOOST_TEST(testFFN(S("hoser"), "jfmpr", 4, 5, S::npos)); - BOOST_TEST(testFFN(S("kgrsp"), "rbpefghsmj", 4, 0, 4)); - BOOST_TEST(testFFN(S("pgejb"), "apsfntdoqc", 4, 1, 4)); - BOOST_TEST(testFFN(S("thlnq"), "ndkjeisgcl", 4, 5, 4)); - BOOST_TEST(testFFN(S("nbmit"), "rnfpqatdeo", 4, 9, S::npos)); - BOOST_TEST(testFFN(S("jgmib"), "bntjlqrfik", 4, 10, S::npos)); - BOOST_TEST(testFFN(S("ncrfj"), "kcrtmpolnaqejghsfdbi", 4, 0, 4)); - BOOST_TEST(testFFN(S("ncsik"), "lobheanpkmqidsrtcfgj", 4, 1, 4)); - BOOST_TEST(testFFN(S("sgbfh"), "athdkljcnreqbgpmisof", 4, 10, S::npos)); - BOOST_TEST(testFFN(S("dktbn"), "qkdmjialrscpbhefgont", 4, 19, S::npos)); - BOOST_TEST(testFFN(S("fthqm"), "dmasojntqleribkgfchp", 4, 20, S::npos)); - BOOST_TEST(testFFN(S("klopi"), "", 5, 0, S::npos)); - BOOST_TEST(testFFN(S("dajhn"), "psthd", 5, 0, S::npos)); - BOOST_TEST(testFFN(S("jbgno"), "rpmjd", 5, 1, S::npos)); - BOOST_TEST(testFFN(S("hkjae"), "dfsmk", 5, 2, S::npos)); - BOOST_TEST(testFFN(S("gbhqo"), "skqne", 5, 4, S::npos)); - BOOST_TEST(testFFN(S("ktdor"), "kipnf", 5, 5, S::npos)); - BOOST_TEST(testFFN(S("ldprn"), "hmrnqdgifl", 5, 0, S::npos)); - BOOST_TEST(testFFN(S("egmjk"), "fsmjcdairn", 5, 1, S::npos)); - BOOST_TEST(testFFN(S("armql"), "pcdgltbrfj", 5, 5, S::npos)); - BOOST_TEST(testFFN(S("cdhjo"), "aekfctpirg", 5, 9, S::npos)); - BOOST_TEST(testFFN(S("jcons"), "ledihrsgpf", 5, 10, S::npos)); - BOOST_TEST(testFFN(S("cbrkp"), "mqcklahsbtirgopefndj", 5, 0, S::npos)); - BOOST_TEST(testFFN(S("fhgna"), "kmlthaoqgecrnpdbjfis", 5, 1, S::npos)); - BOOST_TEST(testFFN(S("ejfcd"), "sfhbamcdptojlkrenqgi", 5, 10, S::npos)); - BOOST_TEST(testFFN(S("kqjhe"), "pbniofmcedrkhlstgaqj", 5, 19, S::npos)); - BOOST_TEST(testFFN(S("pbdjl"), "mongjratcskbhqiepfdl", 5, 20, S::npos)); - BOOST_TEST(testFFN(S("gajqn"), "", 6, 0, S::npos)); - BOOST_TEST(testFFN(S("stedk"), "hrnat", 6, 0, S::npos)); - BOOST_TEST(testFFN(S("tjkaf"), "gsqdt", 6, 1, S::npos)); - BOOST_TEST(testFFN(S("dthpe"), "bspkd", 6, 2, S::npos)); - BOOST_TEST(testFFN(S("klhde"), "ohcmb", 6, 4, S::npos)); - BOOST_TEST(testFFN(S("bhlki"), "heatr", 6, 5, S::npos)); - BOOST_TEST(testFFN(S("lqmoh"), "pmblckedfn", 6, 0, S::npos)); - BOOST_TEST(testFFN(S("mtqin"), "aceqmsrbik", 6, 1, S::npos)); - BOOST_TEST(testFFN(S("dpqbr"), "lmbtdehjrn", 6, 5, S::npos)); - BOOST_TEST(testFFN(S("kdhmo"), "teqmcrlgib", 6, 9, S::npos)); - BOOST_TEST(testFFN(S("jblqp"), "njolbmspac", 6, 10, S::npos)); - BOOST_TEST(testFFN(S("qmjgl"), "pofnhidklamecrbqjgst", 6, 0, S::npos)); - BOOST_TEST(testFFN(S("rothp"), "jbhckmtgrqnosafedpli", 6, 1, S::npos)); - BOOST_TEST(testFFN(S("ghknq"), "dobntpmqklicsahgjerf", 6, 10, S::npos)); - BOOST_TEST(testFFN(S("eopfi"), "tpdshainjkbfoemlrgcq", 6, 19, S::npos)); - BOOST_TEST(testFFN(S("dsnmg"), "oldpfgeakrnitscbjmqh", 6, 20, S::npos)); - BOOST_TEST(testFFN(S("jnkrfhotgl"), "", 0, 0, 0)); - BOOST_TEST(testFFN(S("dltjfngbko"), "rqegt", 0, 0, 0)); - BOOST_TEST(testFFN(S("bmjlpkiqde"), "dashm", 0, 1, 0)); - BOOST_TEST(testFFN(S("skrflobnqm"), "jqirk", 0, 2, 0)); - BOOST_TEST(testFFN(S("jkpldtshrm"), "rckeg", 0, 4, 0)); - BOOST_TEST(testFFN(S("ghasdbnjqo"), "jscie", 0, 5, 0)); - BOOST_TEST(testFFN(S("igrkhpbqjt"), "efsphndliq", 0, 0, 0)); - BOOST_TEST(testFFN(S("ikthdgcamf"), "gdicosleja", 0, 1, 0)); - BOOST_TEST(testFFN(S("pcofgeniam"), "qcpjibosfl", 0, 5, 2)); - BOOST_TEST(testFFN(S("rlfjgesqhc"), "lrhmefnjcq", 0, 9, 4)); - BOOST_TEST(testFFN(S("itphbqsker"), "dtablcrseo", 0, 10, 0)); - BOOST_TEST(testFFN(S("skjafcirqm"), "apckjsftedbhgomrnilq", 0, 0, 0)); - BOOST_TEST(testFFN(S("tcqomarsfd"), "pcbrgflehjtiadnsokqm", 0, 1, 0)); - BOOST_TEST(testFFN(S("rocfeldqpk"), "nsiadegjklhobrmtqcpf", 0, 10, 0)); - BOOST_TEST(testFFN(S("cfpegndlkt"), "cpmajdqnolikhgsbretf", 0, 19, 1)); - BOOST_TEST(testFFN(S("fqbtnkeasj"), "jcflkntmgiqrphdosaeb", 0, 20, S::npos)); - BOOST_TEST(testFFN(S("shbcqnmoar"), "", 1, 0, 1)); - BOOST_TEST(testFFN(S("bdoshlmfin"), "ontrs", 1, 0, 1)); - BOOST_TEST(testFFN(S("khfrebnsgq"), "pfkna", 1, 1, 1)); - BOOST_TEST(testFFN(S("getcrsaoji"), "ekosa", 1, 2, 2)); - BOOST_TEST(testFFN(S("fjiknedcpq"), "anqhk", 1, 4, 1)); - BOOST_TEST(testFFN(S("tkejgnafrm"), "jekca", 1, 5, 4)); - BOOST_TEST(testFFN(S("jnakolqrde"), "ikemsjgacf", 1, 0, 1)); - BOOST_TEST(testFFN(S("lcjptsmgbe"), "arolgsjkhm", 1, 1, 1)); - BOOST_TEST(testFFN(S("itfsmcjorl"), "oftkbldhre", 1, 5, 3)); - BOOST_TEST(testFFN(S("omchkfrjea"), "gbkqdoeftl", 1, 9, 1)); - BOOST_TEST(testFFN(S("cigfqkated"), "sqcflrgtim", 1, 10, 5)); - BOOST_TEST(testFFN(S("tscenjikml"), "fmhbkislrjdpanogqcet", 1, 0, 1)); - BOOST_TEST(testFFN(S("qcpaemsinf"), "rnioadktqlgpbcjsmhef", 1, 1, 1)); - BOOST_TEST(testFFN(S("gltkojeipd"), "oakgtnldpsefihqmjcbr", 1, 10, 5)); - BOOST_TEST(testFFN(S("qistfrgnmp"), "gbnaelosidmcjqktfhpr", 1, 19, 5)); - BOOST_TEST(testFFN(S("bdnpfcqaem"), "akbripjhlosndcmqgfet", 1, 20, S::npos)); - BOOST_TEST(testFFN(S("ectnhskflp"), "", 5, 0, 5)); - BOOST_TEST(testFFN(S("fgtianblpq"), "pijag", 5, 0, 5)); - BOOST_TEST(testFFN(S("mfeqklirnh"), "jrckd", 5, 1, 5)); - BOOST_TEST(testFFN(S("astedncjhk"), "qcloh", 5, 2, 5)); - BOOST_TEST(testFFN(S("fhlqgcajbr"), "thlmp", 5, 4, 5)); - BOOST_TEST(testFFN(S("epfhocmdng"), "qidmo", 5, 5, 5)); - BOOST_TEST(testFFN(S("apcnsibger"), "lnegpsjqrd", 5, 0, 5)); - BOOST_TEST(testFFN(S("aqkocrbign"), "rjqdablmfs", 5, 1, 6)); - BOOST_TEST(testFFN(S("ijsmdtqgce"), "enkgpbsjaq", 5, 5, 5)); - BOOST_TEST(testFFN(S("clobgsrken"), "kdsgoaijfh", 5, 9, 6)); - BOOST_TEST(testFFN(S("jbhcfposld"), "trfqgmckbe", 5, 10, 5)); - BOOST_TEST(testFFN(S("oqnpblhide"), "igetsracjfkdnpoblhqm", 5, 0, 5)); - BOOST_TEST(testFFN(S("lroeasctif"), "nqctfaogirshlekbdjpm", 5, 1, 5)); - BOOST_TEST(testFFN(S("bpjlgmiedh"), "csehfgomljdqinbartkp", 5, 10, 6)); - BOOST_TEST(testFFN(S("pamkeoidrj"), "qahoegcmplkfsjbdnitr", 5, 19, 8)); - BOOST_TEST(testFFN(S("espogqbthk"), "dpteiajrqmsognhlfbkc", 5, 20, S::npos)); - BOOST_TEST(testFFN(S("shoiedtcjb"), "", 9, 0, 9)); - BOOST_TEST(testFFN(S("ebcinjgads"), "tqbnh", 9, 0, 9)); - BOOST_TEST(testFFN(S("dqmregkcfl"), "akmle", 9, 1, 9)); - BOOST_TEST(testFFN(S("ngcrieqajf"), "iqfkm", 9, 2, 9)); - BOOST_TEST(testFFN(S("qosmilgnjb"), "tqjsr", 9, 4, 9)); - BOOST_TEST(testFFN(S("ikabsjtdfl"), "jplqg", 9, 5, S::npos)); - BOOST_TEST(testFFN(S("ersmicafdh"), "oilnrbcgtj", 9, 0, 9)); - BOOST_TEST(testFFN(S("fdnplotmgh"), "morkglpesn", 9, 1, 9)); - BOOST_TEST(testFFN(S("fdbicojerm"), "dmicerngat", 9, 5, S::npos)); - BOOST_TEST(testFFN(S("mbtafndjcq"), "radgeskbtc", 9, 9, 9)); - BOOST_TEST(testFFN(S("mlenkpfdtc"), "ljikprsmqo", 9, 10, 9)); - BOOST_TEST(testFFN(S("ahlcifdqgs"), "trqihkcgsjamfdbolnpe", 9, 0, 9)); - BOOST_TEST(testFFN(S("bgjemaltks"), "lqmthbsrekajgnofcipd", 9, 1, 9)); - BOOST_TEST(testFFN(S("pdhslbqrfc"), "jtalmedribkgqsopcnfh", 9, 10, 9)); - BOOST_TEST(testFFN(S("dirhtsnjkc"), "spqfoiclmtagejbndkrh", 9, 19, S::npos)); - BOOST_TEST(testFFN(S("dlroktbcja"), "nmotklspigjrdhcfaebq", 9, 20, S::npos)); - BOOST_TEST(testFFN(S("ncjpmaekbs"), "", 10, 0, S::npos)); - BOOST_TEST(testFFN(S("hlbosgmrak"), "hpmsd", 10, 0, S::npos)); - BOOST_TEST(testFFN(S("pqfhsgilen"), "qnpor", 10, 1, S::npos)); - BOOST_TEST(testFFN(S("gqtjsbdckh"), "otdma", 10, 2, S::npos)); - BOOST_TEST(testFFN(S("cfkqpjlegi"), "efhjg", 10, 4, S::npos)); - BOOST_TEST(testFFN(S("beanrfodgj"), "odpte", 10, 5, S::npos)); - BOOST_TEST(testFFN(S("adtkqpbjfi"), "bctdgfmolr", 10, 0, S::npos)); - BOOST_TEST(testFFN(S("iomkfthagj"), "oaklidrbqg", 10, 1, S::npos)); - BOOST_TEST(testFFN(S("sdpcilonqj"), "dnjfsagktr", 10, 5, S::npos)); - BOOST_TEST(testFFN(S("gtfbdkqeml"), "nejaktmiqg", 10, 9, S::npos)); - BOOST_TEST(testFFN(S("bmeqgcdorj"), "pjqonlebsf", 10, 10, S::npos)); - BOOST_TEST(testFFN(S("etqlcanmob"), "dshmnbtolcjepgaikfqr", 10, 0, S::npos)); - BOOST_TEST(testFFN(S("roqmkbdtia"), "iogfhpabtjkqlrnemcds", 10, 1, S::npos)); - BOOST_TEST(testFFN(S("kadsithljf"), "ngridfabjsecpqltkmoh", 10, 10, S::npos)); - BOOST_TEST(testFFN(S("sgtkpbfdmh"), "athmknplcgofrqejsdib", 10, 19, S::npos)); - BOOST_TEST(testFFN(S("qgmetnabkl"), "ldobhmqcafnjtkeisgrp", 10, 20, S::npos)); - BOOST_TEST(testFFN(S("cqjohampgd"), "", 11, 0, S::npos)); - BOOST_TEST(testFFN(S("hobitmpsan"), "aocjb", 11, 0, S::npos)); - BOOST_TEST(testFFN(S("tjehkpsalm"), "jbrnk", 11, 1, S::npos)); - BOOST_TEST(testFFN(S("ngfbojitcl"), "tqedg", 11, 2, S::npos)); - BOOST_TEST(testFFN(S("rcfkdbhgjo"), "nqskp", 11, 4, S::npos)); - BOOST_TEST(testFFN(S("qghptonrea"), "eaqkl", 11, 5, S::npos)); - BOOST_TEST(testFFN(S("hnprfgqjdl"), "reaoicljqm", 11, 0, S::npos)); - BOOST_TEST(testFFN(S("hlmgabenti"), "lsftgajqpm", 11, 1, S::npos)); - BOOST_TEST(testFFN(S("ofcjanmrbs"), "rlpfogmits", 11, 5, S::npos)); - BOOST_TEST(testFFN(S("jqedtkornm"), "shkncmiaqj", 11, 9, S::npos)); - BOOST_TEST(testFFN(S("rfedlasjmg"), "fpnatrhqgs", 11, 10, S::npos)); - BOOST_TEST(testFFN(S("talpqjsgkm"), "sjclemqhnpdbgikarfot", 11, 0, S::npos)); - BOOST_TEST(testFFN(S("lrkcbtqpie"), "otcmedjikgsfnqbrhpla", 11, 1, S::npos)); - BOOST_TEST(testFFN(S("cipogdskjf"), "bonsaefdqiprkhlgtjcm", 11, 10, S::npos)); - BOOST_TEST(testFFN(S("nqedcojahi"), "egpscmahijlfnkrodqtb", 11, 19, S::npos)); - BOOST_TEST(testFFN(S("hefnrkmctj"), "kmqbfepjthgilscrndoa", 11, 20, S::npos)); - BOOST_TEST(testFFN(S("atqirnmekfjolhpdsgcb"), "", 0, 0, 0)); - BOOST_TEST(testFFN(S("echfkmlpribjnqsaogtd"), "prboq", 0, 0, 0)); - BOOST_TEST(testFFN(S("qnhiftdgcleajbpkrosm"), "fjcqh", 0, 1, 0)); - BOOST_TEST(testFFN(S("chamfknorbedjitgslpq"), "fmosa", 0, 2, 0)); - BOOST_TEST(testFFN(S("njhqpibfmtlkaecdrgso"), "qdbok", 0, 4, 0)); - BOOST_TEST(testFFN(S("ebnghfsqkprmdcljoiat"), "amslg", 0, 5, 0)); - BOOST_TEST(testFFN(S("letjomsgihfrpqbkancd"), "smpltjneqb", 0, 0, 0)); - BOOST_TEST(testFFN(S("nblgoipcrqeaktshjdmf"), "flitskrnge", 0, 1, 0)); - BOOST_TEST(testFFN(S("cehkbngtjoiflqapsmrd"), "pgqihmlbef", 0, 5, 0)); - BOOST_TEST(testFFN(S("mignapfoklbhcqjetdrs"), "cfpdqjtgsb", 0, 9, 0)); - BOOST_TEST(testFFN(S("ceatbhlsqjgpnokfrmdi"), "htpsiaflom", 0, 10, 0)); - BOOST_TEST(testFFN(S("ocihkjgrdelpfnmastqb"), "kpjfiaceghsrdtlbnomq", 0, 0, 0)); - BOOST_TEST(testFFN(S("noelgschdtbrjfmiqkap"), "qhtbomidljgafneksprc", 0, 1, 0)); - BOOST_TEST(testFFN(S("dkclqfombepritjnghas"), "nhtjobkcefldimpsaqgr", 0, 10, 0)); - BOOST_TEST(testFFN(S("miklnresdgbhqcojftap"), "prabcjfqnoeskilmtgdh", 0, 19, 11)); - BOOST_TEST(testFFN(S("htbcigojaqmdkfrnlsep"), "dtrgmchilkasqoebfpjn", 0, 20, S::npos)); - BOOST_TEST(testFFN(S("febhmqtjanokscdirpgl"), "", 1, 0, 1)); - BOOST_TEST(testFFN(S("loakbsqjpcrdhftniegm"), "sqome", 1, 0, 1)); - BOOST_TEST(testFFN(S("reagphsqflbitdcjmkno"), "smfte", 1, 1, 1)); - BOOST_TEST(testFFN(S("jitlfrqemsdhkopncabg"), "ciboh", 1, 2, 2)); - BOOST_TEST(testFFN(S("mhtaepscdnrjqgbkifol"), "haois", 1, 4, 2)); - BOOST_TEST(testFFN(S("tocesrfmnglpbjihqadk"), "abfki", 1, 5, 1)); - BOOST_TEST(testFFN(S("lpfmctjrhdagneskbqoi"), "frdkocntmq", 1, 0, 1)); - BOOST_TEST(testFFN(S("lsmqaepkdhncirbtjfgo"), "oasbpedlnr", 1, 1, 1)); - BOOST_TEST(testFFN(S("epoiqmtldrabnkjhcfsg"), "kltqmhgand", 1, 5, 1)); - BOOST_TEST(testFFN(S("emgasrilpknqojhtbdcf"), "gdtfjchpmr", 1, 9, 3)); - BOOST_TEST(testFFN(S("hnfiagdpcklrjetqbsom"), "ponmcqblet", 1, 10, 2)); - BOOST_TEST(testFFN(S("nsdfebgajhmtricpoklq"), "sgphqdnofeiklatbcmjr", 1, 0, 1)); - BOOST_TEST(testFFN(S("atjgfsdlpobmeiqhncrk"), "ljqprsmigtfoneadckbh", 1, 1, 1)); - BOOST_TEST(testFFN(S("sitodfgnrejlahcbmqkp"), "ligeojhafnkmrcsqtbdp", 1, 10, 2)); - BOOST_TEST(testFFN(S("fraghmbiceknltjpqosd"), "lsimqfnjarbopedkhcgt", 1, 19, 13)); - BOOST_TEST(testFFN(S("pmafenlhqtdbkirjsogc"), "abedmfjlghniorcqptks", 1, 20, S::npos)); - BOOST_TEST(testFFN(S("pihgmoeqtnakrjslcbfd"), "", 10, 0, 10)); - BOOST_TEST(testFFN(S("gjdkeprctqblnhiafsom"), "hqtoa", 10, 0, 10)); - BOOST_TEST(testFFN(S("mkpnblfdsahrcqijteog"), "cahif", 10, 1, 10)); - BOOST_TEST(testFFN(S("gckarqnelodfjhmbptis"), "kehis", 10, 2, 10)); - BOOST_TEST(testFFN(S("gqpskidtbclomahnrjfe"), "kdlmh", 10, 4, 11)); - BOOST_TEST(testFFN(S("pkldjsqrfgitbhmaecno"), "paeql", 10, 5, 10)); - BOOST_TEST(testFFN(S("aftsijrbeklnmcdqhgop"), "aghoqiefnb", 10, 0, 10)); - BOOST_TEST(testFFN(S("mtlgdrhafjkbiepqnsoc"), "jrbqaikpdo", 10, 1, 10)); - BOOST_TEST(testFFN(S("pqgirnaefthokdmbsclj"), "smjonaeqcl", 10, 5, 10)); - BOOST_TEST(testFFN(S("kpdbgjmtherlsfcqoina"), "eqbdrkcfah", 10, 9, 11)); - BOOST_TEST(testFFN(S("jrlbothiknqmdgcfasep"), "kapmsienhf", 10, 10, 10)); - BOOST_TEST(testFFN(S("mjogldqferckabinptsh"), "jpqotrlenfcsbhkaimdg", 10, 0, 10)); - BOOST_TEST(testFFN(S("apoklnefbhmgqcdrisjt"), "jlbmhnfgtcqprikeados", 10, 1, 10)); - BOOST_TEST(testFFN(S("ifeopcnrjbhkdgatmqls"), "stgbhfmdaljnpqoicker", 10, 10, 11)); - BOOST_TEST(testFFN(S("ckqhaiesmjdnrgolbtpf"), "oihcetflbjagdsrkmqpn", 10, 19, 11)); - BOOST_TEST(testFFN(S("bnlgapfimcoterskqdjh"), "adtclebmnpjsrqfkigoh", 10, 20, S::npos)); - BOOST_TEST(testFFN(S("kgdlrobpmjcthqsafeni"), "", 19, 0, 19)); - BOOST_TEST(testFFN(S("dfkechomjapgnslbtqir"), "beafg", 19, 0, 19)); - BOOST_TEST(testFFN(S("rloadknfbqtgmhcsipje"), "iclat", 19, 1, 19)); - BOOST_TEST(testFFN(S("mgjhkolrnadqbpetcifs"), "rkhnf", 19, 2, 19)); - BOOST_TEST(testFFN(S("cmlfakiojdrgtbsphqen"), "clshq", 19, 4, 19)); - BOOST_TEST(testFFN(S("kghbfipeomsntdalrqjc"), "dtcoj", 19, 5, S::npos)); - BOOST_TEST(testFFN(S("eldiqckrnmtasbghjfpo"), "rqosnjmfth", 19, 0, 19)); - BOOST_TEST(testFFN(S("abqjcfedgotihlnspkrm"), "siatdfqglh", 19, 1, 19)); - BOOST_TEST(testFFN(S("qfbadrtjsimkolcenhpg"), "mrlshtpgjq", 19, 5, 19)); - BOOST_TEST(testFFN(S("abseghclkjqifmtodrnp"), "adlcskgqjt", 19, 9, 19)); - BOOST_TEST(testFFN(S("ibmsnlrjefhtdokacqpg"), "drshcjknaf", 19, 10, 19)); - BOOST_TEST(testFFN(S("mrkfciqjebaponsthldg"), "etsaqroinghpkjdlfcbm", 19, 0, 19)); - BOOST_TEST(testFFN(S("mjkticdeoqshpalrfbgn"), "sgepdnkqliambtrocfhj", 19, 1, 19)); - BOOST_TEST(testFFN(S("rqnoclbdejgiphtfsakm"), "nlmcjaqgbsortfdihkpe", 19, 10, S::npos)); - BOOST_TEST(testFFN(S("plkqbhmtfaeodjcrsing"), "racfnpmosldibqkghjet", 19, 19, S::npos)); - BOOST_TEST(testFFN(S("oegalhmstjrfickpbndq"), "fjhdsctkqeiolagrnmbp", 19, 20, S::npos)); - BOOST_TEST(testFFN(S("rdtgjcaohpblniekmsfq"), "", 20, 0, S::npos)); - BOOST_TEST(testFFN(S("ofkqbnjetrmsaidphglc"), "ejanp", 20, 0, S::npos)); - BOOST_TEST(testFFN(S("grkpahljcftesdmonqib"), "odife", 20, 1, S::npos)); - BOOST_TEST(testFFN(S("jimlgbhfqkteospardcn"), "okaqd", 20, 2, S::npos)); - BOOST_TEST(testFFN(S("gftenihpmslrjkqadcob"), "lcdbi", 20, 4, S::npos)); - BOOST_TEST(testFFN(S("bmhldogtckrfsanijepq"), "fsqbj", 20, 5, S::npos)); - BOOST_TEST(testFFN(S("nfqkrpjdesabgtlcmoih"), "bigdomnplq", 20, 0, S::npos)); - BOOST_TEST(testFFN(S("focalnrpiqmdkstehbjg"), "apiblotgcd", 20, 1, S::npos)); - BOOST_TEST(testFFN(S("rhqdspkmebiflcotnjga"), "acfhdenops", 20, 5, S::npos)); - BOOST_TEST(testFFN(S("rahdtmsckfboqlpniegj"), "jopdeamcrk", 20, 9, S::npos)); - BOOST_TEST(testFFN(S("fbkeiopclstmdqranjhg"), "trqncbkgmh", 20, 10, S::npos)); - BOOST_TEST(testFFN(S("lifhpdgmbconstjeqark"), "tomglrkencbsfjqpihda", 20, 0, S::npos)); - BOOST_TEST(testFFN(S("pboqganrhedjmltsicfk"), "gbkhdnpoietfcmrslajq", 20, 1, S::npos)); - BOOST_TEST(testFFN(S("klchabsimetjnqgorfpd"), "rtfnmbsglkjaichoqedp", 20, 10, S::npos)); - BOOST_TEST(testFFN(S("sirfgmjqhctndbklaepo"), "ohkmdpfqbsacrtjnlgei", 20, 19, S::npos)); - BOOST_TEST(testFFN(S("rlbdsiceaonqjtfpghkm"), "dlbrteoisgphmkncajfq", 20, 20, S::npos)); - BOOST_TEST(testFFN(S("ecgdanriptblhjfqskom"), "", 21, 0, S::npos)); - BOOST_TEST(testFFN(S("fdmiarlpgcskbhoteqjn"), "sjrlo", 21, 0, S::npos)); - BOOST_TEST(testFFN(S("rlbstjqopignecmfadkh"), "qjpor", 21, 1, S::npos)); - BOOST_TEST(testFFN(S("grjpqmbshektdolcafni"), "odhfn", 21, 2, S::npos)); - BOOST_TEST(testFFN(S("sakfcohtqnibprjmlged"), "qtfin", 21, 4, S::npos)); - BOOST_TEST(testFFN(S("mjtdglasihqpocebrfkn"), "hpqfo", 21, 5, S::npos)); - BOOST_TEST(testFFN(S("okaplfrntghqbmeicsdj"), "fabmertkos", 21, 0, S::npos)); - BOOST_TEST(testFFN(S("sahngemrtcjidqbklfpo"), "brqtgkmaej", 21, 1, S::npos)); - BOOST_TEST(testFFN(S("dlmsipcnekhbgoaftqjr"), "nfrdeihsgl", 21, 5, S::npos)); - BOOST_TEST(testFFN(S("ahegrmqnoiklpfsdbcjt"), "hlfrosekpi", 21, 9, S::npos)); - BOOST_TEST(testFFN(S("hdsjbnmlegtkqripacof"), "atgbkrjdsm", 21, 10, S::npos)); - BOOST_TEST(testFFN(S("pcnedrfjihqbalkgtoms"), "blnrptjgqmaifsdkhoec", 21, 0, S::npos)); - BOOST_TEST(testFFN(S("qjidealmtpskrbfhocng"), "ctpmdahebfqjgknloris", 21, 1, S::npos)); - BOOST_TEST(testFFN(S("qeindtagmokpfhsclrbj"), "apnkeqthrmlbfodiscgj", 21, 10, S::npos)); - BOOST_TEST(testFFN(S("kpfegbjhsrnodltqciam"), "jdgictpframeoqlsbknh", 21, 19, S::npos)); + BOOST_TEST(testFFN(S(""), "", 0, 0, S::npos)); + BOOST_TEST(testFFN(S(""), "irkhs", 0, 0, S::npos)); + BOOST_TEST(testFFN(S(""), "kante", 0, 1, S::npos)); + BOOST_TEST(testFFN(S(""), "oknlr", 0, 2, S::npos)); + BOOST_TEST(testFFN(S(""), "pcdro", 0, 4, S::npos)); + BOOST_TEST(testFFN(S(""), "bnrpe", 0, 5, S::npos)); + BOOST_TEST(testFFN(S(""), "jtdaefblso", 0, 0, S::npos)); + BOOST_TEST(testFFN(S(""), "oselktgbca", 0, 1, S::npos)); + BOOST_TEST(testFFN(S(""), "eqgaplhckj", 0, 5, S::npos)); + BOOST_TEST(testFFN(S(""), "bjahtcmnlp", 0, 9, S::npos)); + BOOST_TEST(testFFN(S(""), "hjlcmgpket", 0, 10, S::npos)); + BOOST_TEST(testFFN(S(""), "htaobedqikfplcgjsmrn", 0, 0, S::npos)); + BOOST_TEST(testFFN(S(""), "hpqiarojkcdlsgnmfetb", 0, 1, S::npos)); + BOOST_TEST(testFFN(S(""), "dfkaprhjloqetcsimnbg", 0, 10, S::npos)); + BOOST_TEST(testFFN(S(""), "ihqrfebgadntlpmjksoc", 0, 19, S::npos)); + BOOST_TEST(testFFN(S(""), "ngtjfcalbseiqrphmkdo", 0, 20, S::npos)); + BOOST_TEST(testFFN(S(""), "", 1, 0, S::npos)); + BOOST_TEST(testFFN(S(""), "lbtqd", 1, 0, S::npos)); + BOOST_TEST(testFFN(S(""), "tboim", 1, 1, S::npos)); + BOOST_TEST(testFFN(S(""), "slcer", 1, 2, S::npos)); + BOOST_TEST(testFFN(S(""), "cbjfs", 1, 4, S::npos)); + BOOST_TEST(testFFN(S(""), "aqibs", 1, 5, S::npos)); + BOOST_TEST(testFFN(S(""), "gtfblmqinc", 1, 0, S::npos)); + BOOST_TEST(testFFN(S(""), "mkqpbtdalg", 1, 1, S::npos)); + BOOST_TEST(testFFN(S(""), "kphatlimcd", 1, 5, S::npos)); + BOOST_TEST(testFFN(S(""), "pblasqogic", 1, 9, S::npos)); + BOOST_TEST(testFFN(S(""), "arosdhcfme", 1, 10, S::npos)); + BOOST_TEST(testFFN(S(""), "blkhjeogicatqfnpdmsr", 1, 0, S::npos)); + BOOST_TEST(testFFN(S(""), "bmhineprjcoadgstflqk", 1, 1, S::npos)); + BOOST_TEST(testFFN(S(""), "djkqcmetslnghpbarfoi", 1, 10, S::npos)); + BOOST_TEST(testFFN(S(""), "lgokshjtpbemarcdqnfi", 1, 19, S::npos)); + BOOST_TEST(testFFN(S(""), "bqjhtkfepimcnsgrlado", 1, 20, S::npos)); + BOOST_TEST(testFFN(S("eaint"), "", 0, 0, 0)); + BOOST_TEST(testFFN(S("binja"), "gfsrt", 0, 0, 0)); + BOOST_TEST(testFFN(S("latkm"), "pfsoc", 0, 1, 0)); + BOOST_TEST(testFFN(S("lecfr"), "tpflm", 0, 2, 0)); + BOOST_TEST(testFFN(S("eqkst"), "sgkec", 0, 4, 1)); + BOOST_TEST(testFFN(S("cdafr"), "romds", 0, 5, 0)); + BOOST_TEST(testFFN(S("prbhe"), "qhjistlgmr", 0, 0, 0)); + BOOST_TEST(testFFN(S("lbisk"), "pedfirsglo", 0, 1, 0)); + BOOST_TEST(testFFN(S("hrlpd"), "aqcoslgrmk", 0, 5, 0)); + BOOST_TEST(testFFN(S("ehmja"), "dabckmepqj", 0, 9, 1)); + BOOST_TEST(testFFN(S("mhqgd"), "pqscrjthli", 0, 10, 0)); + BOOST_TEST(testFFN(S("tgklq"), "kfphdcsjqmobliagtren", 0, 0, 0)); + BOOST_TEST(testFFN(S("bocjs"), "rokpefncljibsdhqtagm", 0, 1, 0)); + BOOST_TEST(testFFN(S("grbsd"), "afionmkphlebtcjqsgrd", 0, 10, 0)); + BOOST_TEST(testFFN(S("ofjqr"), "aenmqplidhkofrjbctsg", 0, 19, S::npos)); + BOOST_TEST(testFFN(S("btlfi"), "osjmbtcadhiklegrpqnf", 0, 20, S::npos)); + BOOST_TEST(testFFN(S("clrgb"), "", 1, 0, 1)); + BOOST_TEST(testFFN(S("tjmek"), "osmia", 1, 0, 1)); + BOOST_TEST(testFFN(S("bgstp"), "ckonl", 1, 1, 1)); + BOOST_TEST(testFFN(S("hstrk"), "ilcaj", 1, 2, 1)); + BOOST_TEST(testFFN(S("kmspj"), "lasiq", 1, 4, 1)); + BOOST_TEST(testFFN(S("tjboh"), "kfqmr", 1, 5, 1)); + BOOST_TEST(testFFN(S("ilbcj"), "klnitfaobg", 1, 0, 1)); + BOOST_TEST(testFFN(S("jkngf"), "gjhmdlqikp", 1, 1, 1)); + BOOST_TEST(testFFN(S("gfcql"), "skbgtahqej", 1, 5, 1)); + BOOST_TEST(testFFN(S("dqtlg"), "bjsdgtlpkf", 1, 9, 1)); + BOOST_TEST(testFFN(S("bthpg"), "bjgfmnlkio", 1, 10, 1)); + BOOST_TEST(testFFN(S("dgsnq"), "lbhepotfsjdqigcnamkr", 1, 0, 1)); + BOOST_TEST(testFFN(S("rmfhp"), "tebangckmpsrqdlfojhi", 1, 1, 1)); + BOOST_TEST(testFFN(S("jfdam"), "joflqbdkhtegimscpanr", 1, 10, 3)); + BOOST_TEST(testFFN(S("edapb"), "adpmcohetfbsrjinlqkg", 1, 19, S::npos)); + BOOST_TEST(testFFN(S("brfsm"), "iacldqjpfnogbsrhmetk", 1, 20, S::npos)); + BOOST_TEST(testFFN(S("ndrhl"), "", 2, 0, 2)); + BOOST_TEST(testFFN(S("mrecp"), "otkgb", 2, 0, 2)); + BOOST_TEST(testFFN(S("qlasf"), "cqsjl", 2, 1, 2)); + BOOST_TEST(testFFN(S("smaqd"), "dpifl", 2, 2, 2)); + BOOST_TEST(testFFN(S("hjeni"), "oapht", 2, 4, 2)); + BOOST_TEST(testFFN(S("ocmfj"), "cifts", 2, 5, 2)); + BOOST_TEST(testFFN(S("hmftq"), "nmsckbgalo", 2, 0, 2)); + BOOST_TEST(testFFN(S("fklad"), "tpksqhamle", 2, 1, 2)); + BOOST_TEST(testFFN(S("dirnm"), "tpdrchmkji", 2, 5, 3)); + BOOST_TEST(testFFN(S("hrgdc"), "ijagfkblst", 2, 9, 3)); + BOOST_TEST(testFFN(S("ifakg"), "kpocsignjb", 2, 10, 2)); + BOOST_TEST(testFFN(S("ebrgd"), "pecqtkjsnbdrialgmohf", 2, 0, 2)); + BOOST_TEST(testFFN(S("rcjml"), "aiortphfcmkjebgsndql", 2, 1, 2)); + BOOST_TEST(testFFN(S("peqmt"), "sdbkeamglhipojqftrcn", 2, 10, 2)); + BOOST_TEST(testFFN(S("frehn"), "ljqncehgmfktroapidbs", 2, 19, S::npos)); + BOOST_TEST(testFFN(S("tqolf"), "rtcfodilamkbenjghqps", 2, 20, S::npos)); + BOOST_TEST(testFFN(S("cjgao"), "", 4, 0, 4)); + BOOST_TEST(testFFN(S("kjplq"), "mabns", 4, 0, 4)); + BOOST_TEST(testFFN(S("herni"), "bdnrp", 4, 1, 4)); + BOOST_TEST(testFFN(S("tadrb"), "scidp", 4, 2, 4)); + BOOST_TEST(testFFN(S("pkfeo"), "agbjl", 4, 4, 4)); + BOOST_TEST(testFFN(S("hoser"), "jfmpr", 4, 5, S::npos)); + BOOST_TEST(testFFN(S("kgrsp"), "rbpefghsmj", 4, 0, 4)); + BOOST_TEST(testFFN(S("pgejb"), "apsfntdoqc", 4, 1, 4)); + BOOST_TEST(testFFN(S("thlnq"), "ndkjeisgcl", 4, 5, 4)); + BOOST_TEST(testFFN(S("nbmit"), "rnfpqatdeo", 4, 9, S::npos)); + BOOST_TEST(testFFN(S("jgmib"), "bntjlqrfik", 4, 10, S::npos)); + BOOST_TEST(testFFN(S("ncrfj"), "kcrtmpolnaqejghsfdbi", 4, 0, 4)); + BOOST_TEST(testFFN(S("ncsik"), "lobheanpkmqidsrtcfgj", 4, 1, 4)); + BOOST_TEST(testFFN(S("sgbfh"), "athdkljcnreqbgpmisof", 4, 10, S::npos)); + BOOST_TEST(testFFN(S("dktbn"), "qkdmjialrscpbhefgont", 4, 19, S::npos)); + BOOST_TEST(testFFN(S("fthqm"), "dmasojntqleribkgfchp", 4, 20, S::npos)); + BOOST_TEST(testFFN(S("klopi"), "", 5, 0, S::npos)); + BOOST_TEST(testFFN(S("dajhn"), "psthd", 5, 0, S::npos)); + BOOST_TEST(testFFN(S("jbgno"), "rpmjd", 5, 1, S::npos)); + BOOST_TEST(testFFN(S("hkjae"), "dfsmk", 5, 2, S::npos)); + BOOST_TEST(testFFN(S("gbhqo"), "skqne", 5, 4, S::npos)); + BOOST_TEST(testFFN(S("ktdor"), "kipnf", 5, 5, S::npos)); + BOOST_TEST(testFFN(S("ldprn"), "hmrnqdgifl", 5, 0, S::npos)); + BOOST_TEST(testFFN(S("egmjk"), "fsmjcdairn", 5, 1, S::npos)); + BOOST_TEST(testFFN(S("armql"), "pcdgltbrfj", 5, 5, S::npos)); + BOOST_TEST(testFFN(S("cdhjo"), "aekfctpirg", 5, 9, S::npos)); + BOOST_TEST(testFFN(S("jcons"), "ledihrsgpf", 5, 10, S::npos)); + BOOST_TEST(testFFN(S("cbrkp"), "mqcklahsbtirgopefndj", 5, 0, S::npos)); + BOOST_TEST(testFFN(S("fhgna"), "kmlthaoqgecrnpdbjfis", 5, 1, S::npos)); + BOOST_TEST(testFFN(S("ejfcd"), "sfhbamcdptojlkrenqgi", 5, 10, S::npos)); + BOOST_TEST(testFFN(S("kqjhe"), "pbniofmcedrkhlstgaqj", 5, 19, S::npos)); + BOOST_TEST(testFFN(S("pbdjl"), "mongjratcskbhqiepfdl", 5, 20, S::npos)); + BOOST_TEST(testFFN(S("gajqn"), "", 6, 0, S::npos)); + BOOST_TEST(testFFN(S("stedk"), "hrnat", 6, 0, S::npos)); + BOOST_TEST(testFFN(S("tjkaf"), "gsqdt", 6, 1, S::npos)); + BOOST_TEST(testFFN(S("dthpe"), "bspkd", 6, 2, S::npos)); + BOOST_TEST(testFFN(S("klhde"), "ohcmb", 6, 4, S::npos)); + BOOST_TEST(testFFN(S("bhlki"), "heatr", 6, 5, S::npos)); + BOOST_TEST(testFFN(S("lqmoh"), "pmblckedfn", 6, 0, S::npos)); + BOOST_TEST(testFFN(S("mtqin"), "aceqmsrbik", 6, 1, S::npos)); + BOOST_TEST(testFFN(S("dpqbr"), "lmbtdehjrn", 6, 5, S::npos)); + BOOST_TEST(testFFN(S("kdhmo"), "teqmcrlgib", 6, 9, S::npos)); + BOOST_TEST(testFFN(S("jblqp"), "njolbmspac", 6, 10, S::npos)); + BOOST_TEST(testFFN(S("qmjgl"), "pofnhidklamecrbqjgst", 6, 0, S::npos)); + BOOST_TEST(testFFN(S("rothp"), "jbhckmtgrqnosafedpli", 6, 1, S::npos)); + BOOST_TEST(testFFN(S("ghknq"), "dobntpmqklicsahgjerf", 6, 10, S::npos)); + BOOST_TEST(testFFN(S("eopfi"), "tpdshainjkbfoemlrgcq", 6, 19, S::npos)); + BOOST_TEST(testFFN(S("dsnmg"), "oldpfgeakrnitscbjmqh", 6, 20, S::npos)); + BOOST_TEST(testFFN(S("jnkrfhotgl"), "", 0, 0, 0)); + BOOST_TEST(testFFN(S("dltjfngbko"), "rqegt", 0, 0, 0)); + BOOST_TEST(testFFN(S("bmjlpkiqde"), "dashm", 0, 1, 0)); + BOOST_TEST(testFFN(S("skrflobnqm"), "jqirk", 0, 2, 0)); + BOOST_TEST(testFFN(S("jkpldtshrm"), "rckeg", 0, 4, 0)); + BOOST_TEST(testFFN(S("ghasdbnjqo"), "jscie", 0, 5, 0)); + BOOST_TEST(testFFN(S("igrkhpbqjt"), "efsphndliq", 0, 0, 0)); + BOOST_TEST(testFFN(S("ikthdgcamf"), "gdicosleja", 0, 1, 0)); + BOOST_TEST(testFFN(S("pcofgeniam"), "qcpjibosfl", 0, 5, 2)); + BOOST_TEST(testFFN(S("rlfjgesqhc"), "lrhmefnjcq", 0, 9, 4)); + BOOST_TEST(testFFN(S("itphbqsker"), "dtablcrseo", 0, 10, 0)); + BOOST_TEST(testFFN(S("skjafcirqm"), "apckjsftedbhgomrnilq", 0, 0, 0)); + BOOST_TEST(testFFN(S("tcqomarsfd"), "pcbrgflehjtiadnsokqm", 0, 1, 0)); + BOOST_TEST(testFFN(S("rocfeldqpk"), "nsiadegjklhobrmtqcpf", 0, 10, 0)); + BOOST_TEST(testFFN(S("cfpegndlkt"), "cpmajdqnolikhgsbretf", 0, 19, 1)); + BOOST_TEST(testFFN(S("fqbtnkeasj"), "jcflkntmgiqrphdosaeb", 0, 20, S::npos)); + BOOST_TEST(testFFN(S("shbcqnmoar"), "", 1, 0, 1)); + BOOST_TEST(testFFN(S("bdoshlmfin"), "ontrs", 1, 0, 1)); + BOOST_TEST(testFFN(S("khfrebnsgq"), "pfkna", 1, 1, 1)); + BOOST_TEST(testFFN(S("getcrsaoji"), "ekosa", 1, 2, 2)); + BOOST_TEST(testFFN(S("fjiknedcpq"), "anqhk", 1, 4, 1)); + BOOST_TEST(testFFN(S("tkejgnafrm"), "jekca", 1, 5, 4)); + BOOST_TEST(testFFN(S("jnakolqrde"), "ikemsjgacf", 1, 0, 1)); + BOOST_TEST(testFFN(S("lcjptsmgbe"), "arolgsjkhm", 1, 1, 1)); + BOOST_TEST(testFFN(S("itfsmcjorl"), "oftkbldhre", 1, 5, 3)); + BOOST_TEST(testFFN(S("omchkfrjea"), "gbkqdoeftl", 1, 9, 1)); + BOOST_TEST(testFFN(S("cigfqkated"), "sqcflrgtim", 1, 10, 5)); + BOOST_TEST(testFFN(S("tscenjikml"), "fmhbkislrjdpanogqcet", 1, 0, 1)); + BOOST_TEST(testFFN(S("qcpaemsinf"), "rnioadktqlgpbcjsmhef", 1, 1, 1)); + BOOST_TEST(testFFN(S("gltkojeipd"), "oakgtnldpsefihqmjcbr", 1, 10, 5)); + BOOST_TEST(testFFN(S("qistfrgnmp"), "gbnaelosidmcjqktfhpr", 1, 19, 5)); + BOOST_TEST(testFFN(S("bdnpfcqaem"), "akbripjhlosndcmqgfet", 1, 20, S::npos)); + BOOST_TEST(testFFN(S("ectnhskflp"), "", 5, 0, 5)); + BOOST_TEST(testFFN(S("fgtianblpq"), "pijag", 5, 0, 5)); + BOOST_TEST(testFFN(S("mfeqklirnh"), "jrckd", 5, 1, 5)); + BOOST_TEST(testFFN(S("astedncjhk"), "qcloh", 5, 2, 5)); + BOOST_TEST(testFFN(S("fhlqgcajbr"), "thlmp", 5, 4, 5)); + BOOST_TEST(testFFN(S("epfhocmdng"), "qidmo", 5, 5, 5)); + BOOST_TEST(testFFN(S("apcnsibger"), "lnegpsjqrd", 5, 0, 5)); + BOOST_TEST(testFFN(S("aqkocrbign"), "rjqdablmfs", 5, 1, 6)); + BOOST_TEST(testFFN(S("ijsmdtqgce"), "enkgpbsjaq", 5, 5, 5)); + BOOST_TEST(testFFN(S("clobgsrken"), "kdsgoaijfh", 5, 9, 6)); + BOOST_TEST(testFFN(S("jbhcfposld"), "trfqgmckbe", 5, 10, 5)); + BOOST_TEST(testFFN(S("oqnpblhide"), "igetsracjfkdnpoblhqm", 5, 0, 5)); + BOOST_TEST(testFFN(S("lroeasctif"), "nqctfaogirshlekbdjpm", 5, 1, 5)); + BOOST_TEST(testFFN(S("bpjlgmiedh"), "csehfgomljdqinbartkp", 5, 10, 6)); + BOOST_TEST(testFFN(S("pamkeoidrj"), "qahoegcmplkfsjbdnitr", 5, 19, 8)); + BOOST_TEST(testFFN(S("espogqbthk"), "dpteiajrqmsognhlfbkc", 5, 20, S::npos)); + BOOST_TEST(testFFN(S("shoiedtcjb"), "", 9, 0, 9)); + BOOST_TEST(testFFN(S("ebcinjgads"), "tqbnh", 9, 0, 9)); + BOOST_TEST(testFFN(S("dqmregkcfl"), "akmle", 9, 1, 9)); + BOOST_TEST(testFFN(S("ngcrieqajf"), "iqfkm", 9, 2, 9)); + BOOST_TEST(testFFN(S("qosmilgnjb"), "tqjsr", 9, 4, 9)); + BOOST_TEST(testFFN(S("ikabsjtdfl"), "jplqg", 9, 5, S::npos)); + BOOST_TEST(testFFN(S("ersmicafdh"), "oilnrbcgtj", 9, 0, 9)); + BOOST_TEST(testFFN(S("fdnplotmgh"), "morkglpesn", 9, 1, 9)); + BOOST_TEST(testFFN(S("fdbicojerm"), "dmicerngat", 9, 5, S::npos)); + BOOST_TEST(testFFN(S("mbtafndjcq"), "radgeskbtc", 9, 9, 9)); + BOOST_TEST(testFFN(S("mlenkpfdtc"), "ljikprsmqo", 9, 10, 9)); + BOOST_TEST(testFFN(S("ahlcifdqgs"), "trqihkcgsjamfdbolnpe", 9, 0, 9)); + BOOST_TEST(testFFN(S("bgjemaltks"), "lqmthbsrekajgnofcipd", 9, 1, 9)); + BOOST_TEST(testFFN(S("pdhslbqrfc"), "jtalmedribkgqsopcnfh", 9, 10, 9)); + BOOST_TEST(testFFN(S("dirhtsnjkc"), "spqfoiclmtagejbndkrh", 9, 19, S::npos)); + BOOST_TEST(testFFN(S("dlroktbcja"), "nmotklspigjrdhcfaebq", 9, 20, S::npos)); + BOOST_TEST(testFFN(S("ncjpmaekbs"), "", 10, 0, S::npos)); + BOOST_TEST(testFFN(S("hlbosgmrak"), "hpmsd", 10, 0, S::npos)); + BOOST_TEST(testFFN(S("pqfhsgilen"), "qnpor", 10, 1, S::npos)); + BOOST_TEST(testFFN(S("gqtjsbdckh"), "otdma", 10, 2, S::npos)); + BOOST_TEST(testFFN(S("cfkqpjlegi"), "efhjg", 10, 4, S::npos)); + BOOST_TEST(testFFN(S("beanrfodgj"), "odpte", 10, 5, S::npos)); + BOOST_TEST(testFFN(S("adtkqpbjfi"), "bctdgfmolr", 10, 0, S::npos)); + BOOST_TEST(testFFN(S("iomkfthagj"), "oaklidrbqg", 10, 1, S::npos)); + BOOST_TEST(testFFN(S("sdpcilonqj"), "dnjfsagktr", 10, 5, S::npos)); + BOOST_TEST(testFFN(S("gtfbdkqeml"), "nejaktmiqg", 10, 9, S::npos)); + BOOST_TEST(testFFN(S("bmeqgcdorj"), "pjqonlebsf", 10, 10, S::npos)); + BOOST_TEST(testFFN(S("etqlcanmob"), "dshmnbtolcjepgaikfqr", 10, 0, S::npos)); + BOOST_TEST(testFFN(S("roqmkbdtia"), "iogfhpabtjkqlrnemcds", 10, 1, S::npos)); + BOOST_TEST(testFFN(S("kadsithljf"), "ngridfabjsecpqltkmoh", 10, 10, S::npos)); + BOOST_TEST(testFFN(S("sgtkpbfdmh"), "athmknplcgofrqejsdib", 10, 19, S::npos)); + BOOST_TEST(testFFN(S("qgmetnabkl"), "ldobhmqcafnjtkeisgrp", 10, 20, S::npos)); + BOOST_TEST(testFFN(S("cqjohampgd"), "", 11, 0, S::npos)); + BOOST_TEST(testFFN(S("hobitmpsan"), "aocjb", 11, 0, S::npos)); + BOOST_TEST(testFFN(S("tjehkpsalm"), "jbrnk", 11, 1, S::npos)); + BOOST_TEST(testFFN(S("ngfbojitcl"), "tqedg", 11, 2, S::npos)); + BOOST_TEST(testFFN(S("rcfkdbhgjo"), "nqskp", 11, 4, S::npos)); + BOOST_TEST(testFFN(S("qghptonrea"), "eaqkl", 11, 5, S::npos)); + BOOST_TEST(testFFN(S("hnprfgqjdl"), "reaoicljqm", 11, 0, S::npos)); + BOOST_TEST(testFFN(S("hlmgabenti"), "lsftgajqpm", 11, 1, S::npos)); + BOOST_TEST(testFFN(S("ofcjanmrbs"), "rlpfogmits", 11, 5, S::npos)); + BOOST_TEST(testFFN(S("jqedtkornm"), "shkncmiaqj", 11, 9, S::npos)); + BOOST_TEST(testFFN(S("rfedlasjmg"), "fpnatrhqgs", 11, 10, S::npos)); + BOOST_TEST(testFFN(S("talpqjsgkm"), "sjclemqhnpdbgikarfot", 11, 0, S::npos)); + BOOST_TEST(testFFN(S("lrkcbtqpie"), "otcmedjikgsfnqbrhpla", 11, 1, S::npos)); + BOOST_TEST(testFFN(S("cipogdskjf"), "bonsaefdqiprkhlgtjcm", 11, 10, S::npos)); + BOOST_TEST(testFFN(S("nqedcojahi"), "egpscmahijlfnkrodqtb", 11, 19, S::npos)); + BOOST_TEST(testFFN(S("hefnrkmctj"), "kmqbfepjthgilscrndoa", 11, 20, S::npos)); + BOOST_TEST(testFFN(S("atqirnmekfjolhpdsgcb"), "", 0, 0, 0)); + BOOST_TEST(testFFN(S("echfkmlpribjnqsaogtd"), "prboq", 0, 0, 0)); + BOOST_TEST(testFFN(S("qnhiftdgcleajbpkrosm"), "fjcqh", 0, 1, 0)); + BOOST_TEST(testFFN(S("chamfknorbedjitgslpq"), "fmosa", 0, 2, 0)); + BOOST_TEST(testFFN(S("njhqpibfmtlkaecdrgso"), "qdbok", 0, 4, 0)); + BOOST_TEST(testFFN(S("ebnghfsqkprmdcljoiat"), "amslg", 0, 5, 0)); + BOOST_TEST(testFFN(S("letjomsgihfrpqbkancd"), "smpltjneqb", 0, 0, 0)); + BOOST_TEST(testFFN(S("nblgoipcrqeaktshjdmf"), "flitskrnge", 0, 1, 0)); + BOOST_TEST(testFFN(S("cehkbngtjoiflqapsmrd"), "pgqihmlbef", 0, 5, 0)); + BOOST_TEST(testFFN(S("mignapfoklbhcqjetdrs"), "cfpdqjtgsb", 0, 9, 0)); + BOOST_TEST(testFFN(S("ceatbhlsqjgpnokfrmdi"), "htpsiaflom", 0, 10, 0)); + BOOST_TEST(testFFN(S("ocihkjgrdelpfnmastqb"), "kpjfiaceghsrdtlbnomq", 0, 0, 0)); + BOOST_TEST(testFFN(S("noelgschdtbrjfmiqkap"), "qhtbomidljgafneksprc", 0, 1, 0)); + BOOST_TEST(testFFN(S("dkclqfombepritjnghas"), "nhtjobkcefldimpsaqgr", 0, 10, 0)); + BOOST_TEST(testFFN(S("miklnresdgbhqcojftap"), "prabcjfqnoeskilmtgdh", 0, 19, 11)); + BOOST_TEST(testFFN(S("htbcigojaqmdkfrnlsep"), "dtrgmchilkasqoebfpjn", 0, 20, S::npos)); + BOOST_TEST(testFFN(S("febhmqtjanokscdirpgl"), "", 1, 0, 1)); + BOOST_TEST(testFFN(S("loakbsqjpcrdhftniegm"), "sqome", 1, 0, 1)); + BOOST_TEST(testFFN(S("reagphsqflbitdcjmkno"), "smfte", 1, 1, 1)); + BOOST_TEST(testFFN(S("jitlfrqemsdhkopncabg"), "ciboh", 1, 2, 2)); + BOOST_TEST(testFFN(S("mhtaepscdnrjqgbkifol"), "haois", 1, 4, 2)); + BOOST_TEST(testFFN(S("tocesrfmnglpbjihqadk"), "abfki", 1, 5, 1)); + BOOST_TEST(testFFN(S("lpfmctjrhdagneskbqoi"), "frdkocntmq", 1, 0, 1)); + BOOST_TEST(testFFN(S("lsmqaepkdhncirbtjfgo"), "oasbpedlnr", 1, 1, 1)); + BOOST_TEST(testFFN(S("epoiqmtldrabnkjhcfsg"), "kltqmhgand", 1, 5, 1)); + BOOST_TEST(testFFN(S("emgasrilpknqojhtbdcf"), "gdtfjchpmr", 1, 9, 3)); + BOOST_TEST(testFFN(S("hnfiagdpcklrjetqbsom"), "ponmcqblet", 1, 10, 2)); + BOOST_TEST(testFFN(S("nsdfebgajhmtricpoklq"), "sgphqdnofeiklatbcmjr", 1, 0, 1)); + BOOST_TEST(testFFN(S("atjgfsdlpobmeiqhncrk"), "ljqprsmigtfoneadckbh", 1, 1, 1)); + BOOST_TEST(testFFN(S("sitodfgnrejlahcbmqkp"), "ligeojhafnkmrcsqtbdp", 1, 10, 2)); + BOOST_TEST(testFFN(S("fraghmbiceknltjpqosd"), "lsimqfnjarbopedkhcgt", 1, 19, 13)); + BOOST_TEST(testFFN(S("pmafenlhqtdbkirjsogc"), "abedmfjlghniorcqptks", 1, 20, S::npos)); + BOOST_TEST(testFFN(S("pihgmoeqtnakrjslcbfd"), "", 10, 0, 10)); + BOOST_TEST(testFFN(S("gjdkeprctqblnhiafsom"), "hqtoa", 10, 0, 10)); + BOOST_TEST(testFFN(S("mkpnblfdsahrcqijteog"), "cahif", 10, 1, 10)); + BOOST_TEST(testFFN(S("gckarqnelodfjhmbptis"), "kehis", 10, 2, 10)); + BOOST_TEST(testFFN(S("gqpskidtbclomahnrjfe"), "kdlmh", 10, 4, 11)); + BOOST_TEST(testFFN(S("pkldjsqrfgitbhmaecno"), "paeql", 10, 5, 10)); + BOOST_TEST(testFFN(S("aftsijrbeklnmcdqhgop"), "aghoqiefnb", 10, 0, 10)); + BOOST_TEST(testFFN(S("mtlgdrhafjkbiepqnsoc"), "jrbqaikpdo", 10, 1, 10)); + BOOST_TEST(testFFN(S("pqgirnaefthokdmbsclj"), "smjonaeqcl", 10, 5, 10)); + BOOST_TEST(testFFN(S("kpdbgjmtherlsfcqoina"), "eqbdrkcfah", 10, 9, 11)); + BOOST_TEST(testFFN(S("jrlbothiknqmdgcfasep"), "kapmsienhf", 10, 10, 10)); + BOOST_TEST(testFFN(S("mjogldqferckabinptsh"), "jpqotrlenfcsbhkaimdg", 10, 0, 10)); + BOOST_TEST(testFFN(S("apoklnefbhmgqcdrisjt"), "jlbmhnfgtcqprikeados", 10, 1, 10)); + BOOST_TEST(testFFN(S("ifeopcnrjbhkdgatmqls"), "stgbhfmdaljnpqoicker", 10, 10, 11)); + BOOST_TEST(testFFN(S("ckqhaiesmjdnrgolbtpf"), "oihcetflbjagdsrkmqpn", 10, 19, 11)); + BOOST_TEST(testFFN(S("bnlgapfimcoterskqdjh"), "adtclebmnpjsrqfkigoh", 10, 20, S::npos)); + BOOST_TEST(testFFN(S("kgdlrobpmjcthqsafeni"), "", 19, 0, 19)); + BOOST_TEST(testFFN(S("dfkechomjapgnslbtqir"), "beafg", 19, 0, 19)); + BOOST_TEST(testFFN(S("rloadknfbqtgmhcsipje"), "iclat", 19, 1, 19)); + BOOST_TEST(testFFN(S("mgjhkolrnadqbpetcifs"), "rkhnf", 19, 2, 19)); + BOOST_TEST(testFFN(S("cmlfakiojdrgtbsphqen"), "clshq", 19, 4, 19)); + BOOST_TEST(testFFN(S("kghbfipeomsntdalrqjc"), "dtcoj", 19, 5, S::npos)); + BOOST_TEST(testFFN(S("eldiqckrnmtasbghjfpo"), "rqosnjmfth", 19, 0, 19)); + BOOST_TEST(testFFN(S("abqjcfedgotihlnspkrm"), "siatdfqglh", 19, 1, 19)); + BOOST_TEST(testFFN(S("qfbadrtjsimkolcenhpg"), "mrlshtpgjq", 19, 5, 19)); + BOOST_TEST(testFFN(S("abseghclkjqifmtodrnp"), "adlcskgqjt", 19, 9, 19)); + BOOST_TEST(testFFN(S("ibmsnlrjefhtdokacqpg"), "drshcjknaf", 19, 10, 19)); + BOOST_TEST(testFFN(S("mrkfciqjebaponsthldg"), "etsaqroinghpkjdlfcbm", 19, 0, 19)); + BOOST_TEST(testFFN(S("mjkticdeoqshpalrfbgn"), "sgepdnkqliambtrocfhj", 19, 1, 19)); + BOOST_TEST(testFFN(S("rqnoclbdejgiphtfsakm"), "nlmcjaqgbsortfdihkpe", 19, 10, S::npos)); + BOOST_TEST(testFFN(S("plkqbhmtfaeodjcrsing"), "racfnpmosldibqkghjet", 19, 19, S::npos)); + BOOST_TEST(testFFN(S("oegalhmstjrfickpbndq"), "fjhdsctkqeiolagrnmbp", 19, 20, S::npos)); + BOOST_TEST(testFFN(S("rdtgjcaohpblniekmsfq"), "", 20, 0, S::npos)); + BOOST_TEST(testFFN(S("ofkqbnjetrmsaidphglc"), "ejanp", 20, 0, S::npos)); + BOOST_TEST(testFFN(S("grkpahljcftesdmonqib"), "odife", 20, 1, S::npos)); + BOOST_TEST(testFFN(S("jimlgbhfqkteospardcn"), "okaqd", 20, 2, S::npos)); + BOOST_TEST(testFFN(S("gftenihpmslrjkqadcob"), "lcdbi", 20, 4, S::npos)); + BOOST_TEST(testFFN(S("bmhldogtckrfsanijepq"), "fsqbj", 20, 5, S::npos)); + BOOST_TEST(testFFN(S("nfqkrpjdesabgtlcmoih"), "bigdomnplq", 20, 0, S::npos)); + BOOST_TEST(testFFN(S("focalnrpiqmdkstehbjg"), "apiblotgcd", 20, 1, S::npos)); + BOOST_TEST(testFFN(S("rhqdspkmebiflcotnjga"), "acfhdenops", 20, 5, S::npos)); + BOOST_TEST(testFFN(S("rahdtmsckfboqlpniegj"), "jopdeamcrk", 20, 9, S::npos)); + BOOST_TEST(testFFN(S("fbkeiopclstmdqranjhg"), "trqncbkgmh", 20, 10, S::npos)); + BOOST_TEST(testFFN(S("lifhpdgmbconstjeqark"), "tomglrkencbsfjqpihda", 20, 0, S::npos)); + BOOST_TEST(testFFN(S("pboqganrhedjmltsicfk"), "gbkhdnpoietfcmrslajq", 20, 1, S::npos)); + BOOST_TEST(testFFN(S("klchabsimetjnqgorfpd"), "rtfnmbsglkjaichoqedp", 20, 10, S::npos)); + BOOST_TEST(testFFN(S("sirfgmjqhctndbklaepo"), "ohkmdpfqbsacrtjnlgei", 20, 19, S::npos)); + BOOST_TEST(testFFN(S("rlbdsiceaonqjtfpghkm"), "dlbrteoisgphmkncajfq", 20, 20, S::npos)); + BOOST_TEST(testFFN(S("ecgdanriptblhjfqskom"), "", 21, 0, S::npos)); + BOOST_TEST(testFFN(S("fdmiarlpgcskbhoteqjn"), "sjrlo", 21, 0, S::npos)); + BOOST_TEST(testFFN(S("rlbstjqopignecmfadkh"), "qjpor", 21, 1, S::npos)); + BOOST_TEST(testFFN(S("grjpqmbshektdolcafni"), "odhfn", 21, 2, S::npos)); + BOOST_TEST(testFFN(S("sakfcohtqnibprjmlged"), "qtfin", 21, 4, S::npos)); + BOOST_TEST(testFFN(S("mjtdglasihqpocebrfkn"), "hpqfo", 21, 5, S::npos)); + BOOST_TEST(testFFN(S("okaplfrntghqbmeicsdj"), "fabmertkos", 21, 0, S::npos)); + BOOST_TEST(testFFN(S("sahngemrtcjidqbklfpo"), "brqtgkmaej", 21, 1, S::npos)); + BOOST_TEST(testFFN(S("dlmsipcnekhbgoaftqjr"), "nfrdeihsgl", 21, 5, S::npos)); + BOOST_TEST(testFFN(S("ahegrmqnoiklpfsdbcjt"), "hlfrosekpi", 21, 9, S::npos)); + BOOST_TEST(testFFN(S("hdsjbnmlegtkqripacof"), "atgbkrjdsm", 21, 10, S::npos)); + BOOST_TEST(testFFN(S("pcnedrfjihqbalkgtoms"), "blnrptjgqmaifsdkhoec", 21, 0, S::npos)); + BOOST_TEST(testFFN(S("qjidealmtpskrbfhocng"), "ctpmdahebfqjgknloris", 21, 1, S::npos)); + BOOST_TEST(testFFN(S("qeindtagmokpfhsclrbj"), "apnkeqthrmlbfodiscgj", 21, 10, S::npos)); + BOOST_TEST(testFFN(S("kpfegbjhsrnodltqciam"), "jdgictpframeoqlsbknh", 21, 19, S::npos)); BOOST_TEST(testFFN(S("hnbrcplsjfgiktoedmaq"), "qprlsfojamgndekthibc", 21, 20, S::npos)); // find_last_not_of @@ -5336,325 +5337,325 @@ testFind() BOOST_TEST(fs1.find_last_not_of('1', 3) == 3); - BOOST_TEST(testFLN(S(""), "", 0, 0, S::npos)); - BOOST_TEST(testFLN(S(""), "irkhs", 0, 0, S::npos)); - BOOST_TEST(testFLN(S(""), "kante", 0, 1, S::npos)); - BOOST_TEST(testFLN(S(""), "oknlr", 0, 2, S::npos)); - BOOST_TEST(testFLN(S(""), "pcdro", 0, 4, S::npos)); - BOOST_TEST(testFLN(S(""), "bnrpe", 0, 5, S::npos)); - BOOST_TEST(testFLN(S(""), "jtdaefblso", 0, 0, S::npos)); - BOOST_TEST(testFLN(S(""), "oselktgbca", 0, 1, S::npos)); - BOOST_TEST(testFLN(S(""), "eqgaplhckj", 0, 5, S::npos)); - BOOST_TEST(testFLN(S(""), "bjahtcmnlp", 0, 9, S::npos)); - BOOST_TEST(testFLN(S(""), "hjlcmgpket", 0, 10, S::npos)); - BOOST_TEST(testFLN(S(""), "htaobedqikfplcgjsmrn", 0, 0, S::npos)); - BOOST_TEST(testFLN(S(""), "hpqiarojkcdlsgnmfetb", 0, 1, S::npos)); - BOOST_TEST(testFLN(S(""), "dfkaprhjloqetcsimnbg", 0, 10, S::npos)); - BOOST_TEST(testFLN(S(""), "ihqrfebgadntlpmjksoc", 0, 19, S::npos)); - BOOST_TEST(testFLN(S(""), "ngtjfcalbseiqrphmkdo", 0, 20, S::npos)); - BOOST_TEST(testFLN(S(""), "", 1, 0, S::npos)); - BOOST_TEST(testFLN(S(""), "lbtqd", 1, 0, S::npos)); - BOOST_TEST(testFLN(S(""), "tboim", 1, 1, S::npos)); - BOOST_TEST(testFLN(S(""), "slcer", 1, 2, S::npos)); - BOOST_TEST(testFLN(S(""), "cbjfs", 1, 4, S::npos)); - BOOST_TEST(testFLN(S(""), "aqibs", 1, 5, S::npos)); - BOOST_TEST(testFLN(S(""), "gtfblmqinc", 1, 0, S::npos)); - BOOST_TEST(testFLN(S(""), "mkqpbtdalg", 1, 1, S::npos)); - BOOST_TEST(testFLN(S(""), "kphatlimcd", 1, 5, S::npos)); - BOOST_TEST(testFLN(S(""), "pblasqogic", 1, 9, S::npos)); - BOOST_TEST(testFLN(S(""), "arosdhcfme", 1, 10, S::npos)); - BOOST_TEST(testFLN(S(""), "blkhjeogicatqfnpdmsr", 1, 0, S::npos)); - BOOST_TEST(testFLN(S(""), "bmhineprjcoadgstflqk", 1, 1, S::npos)); - BOOST_TEST(testFLN(S(""), "djkqcmetslnghpbarfoi", 1, 10, S::npos)); - BOOST_TEST(testFLN(S(""), "lgokshjtpbemarcdqnfi", 1, 19, S::npos)); - BOOST_TEST(testFLN(S(""), "bqjhtkfepimcnsgrlado", 1, 20, S::npos)); - BOOST_TEST(testFLN(S("eaint"), "", 0, 0, 0)); - BOOST_TEST(testFLN(S("binja"), "gfsrt", 0, 0, 0)); - BOOST_TEST(testFLN(S("latkm"), "pfsoc", 0, 1, 0)); - BOOST_TEST(testFLN(S("lecfr"), "tpflm", 0, 2, 0)); - BOOST_TEST(testFLN(S("eqkst"), "sgkec", 0, 4, S::npos)); - BOOST_TEST(testFLN(S("cdafr"), "romds", 0, 5, 0)); - BOOST_TEST(testFLN(S("prbhe"), "qhjistlgmr", 0, 0, 0)); - BOOST_TEST(testFLN(S("lbisk"), "pedfirsglo", 0, 1, 0)); - BOOST_TEST(testFLN(S("hrlpd"), "aqcoslgrmk", 0, 5, 0)); - BOOST_TEST(testFLN(S("ehmja"), "dabckmepqj", 0, 9, S::npos)); - BOOST_TEST(testFLN(S("mhqgd"), "pqscrjthli", 0, 10, 0)); - BOOST_TEST(testFLN(S("tgklq"), "kfphdcsjqmobliagtren", 0, 0, 0)); - BOOST_TEST(testFLN(S("bocjs"), "rokpefncljibsdhqtagm", 0, 1, 0)); - BOOST_TEST(testFLN(S("grbsd"), "afionmkphlebtcjqsgrd", 0, 10, 0)); - BOOST_TEST(testFLN(S("ofjqr"), "aenmqplidhkofrjbctsg", 0, 19, S::npos)); - BOOST_TEST(testFLN(S("btlfi"), "osjmbtcadhiklegrpqnf", 0, 20, S::npos)); - BOOST_TEST(testFLN(S("clrgb"), "", 1, 0, 1)); - BOOST_TEST(testFLN(S("tjmek"), "osmia", 1, 0, 1)); - BOOST_TEST(testFLN(S("bgstp"), "ckonl", 1, 1, 1)); - BOOST_TEST(testFLN(S("hstrk"), "ilcaj", 1, 2, 1)); - BOOST_TEST(testFLN(S("kmspj"), "lasiq", 1, 4, 1)); - BOOST_TEST(testFLN(S("tjboh"), "kfqmr", 1, 5, 1)); - BOOST_TEST(testFLN(S("ilbcj"), "klnitfaobg", 1, 0, 1)); - BOOST_TEST(testFLN(S("jkngf"), "gjhmdlqikp", 1, 1, 1)); - BOOST_TEST(testFLN(S("gfcql"), "skbgtahqej", 1, 5, 1)); - BOOST_TEST(testFLN(S("dqtlg"), "bjsdgtlpkf", 1, 9, 1)); - BOOST_TEST(testFLN(S("bthpg"), "bjgfmnlkio", 1, 10, 1)); - BOOST_TEST(testFLN(S("dgsnq"), "lbhepotfsjdqigcnamkr", 1, 0, 1)); - BOOST_TEST(testFLN(S("rmfhp"), "tebangckmpsrqdlfojhi", 1, 1, 1)); - BOOST_TEST(testFLN(S("jfdam"), "joflqbdkhtegimscpanr", 1, 10, S::npos)); - BOOST_TEST(testFLN(S("edapb"), "adpmcohetfbsrjinlqkg", 1, 19, S::npos)); - BOOST_TEST(testFLN(S("brfsm"), "iacldqjpfnogbsrhmetk", 1, 20, S::npos)); - BOOST_TEST(testFLN(S("ndrhl"), "", 2, 0, 2)); - BOOST_TEST(testFLN(S("mrecp"), "otkgb", 2, 0, 2)); - BOOST_TEST(testFLN(S("qlasf"), "cqsjl", 2, 1, 2)); - BOOST_TEST(testFLN(S("smaqd"), "dpifl", 2, 2, 2)); - BOOST_TEST(testFLN(S("hjeni"), "oapht", 2, 4, 2)); - BOOST_TEST(testFLN(S("ocmfj"), "cifts", 2, 5, 2)); - BOOST_TEST(testFLN(S("hmftq"), "nmsckbgalo", 2, 0, 2)); - BOOST_TEST(testFLN(S("fklad"), "tpksqhamle", 2, 1, 2)); - BOOST_TEST(testFLN(S("dirnm"), "tpdrchmkji", 2, 5, 1)); - BOOST_TEST(testFLN(S("hrgdc"), "ijagfkblst", 2, 9, 1)); - BOOST_TEST(testFLN(S("ifakg"), "kpocsignjb", 2, 10, 2)); - BOOST_TEST(testFLN(S("ebrgd"), "pecqtkjsnbdrialgmohf", 2, 0, 2)); - BOOST_TEST(testFLN(S("rcjml"), "aiortphfcmkjebgsndql", 2, 1, 2)); - BOOST_TEST(testFLN(S("peqmt"), "sdbkeamglhipojqftrcn", 2, 10, 2)); - BOOST_TEST(testFLN(S("frehn"), "ljqncehgmfktroapidbs", 2, 19, S::npos)); - BOOST_TEST(testFLN(S("tqolf"), "rtcfodilamkbenjghqps", 2, 20, S::npos)); - BOOST_TEST(testFLN(S("cjgao"), "", 4, 0, 4)); - BOOST_TEST(testFLN(S("kjplq"), "mabns", 4, 0, 4)); - BOOST_TEST(testFLN(S("herni"), "bdnrp", 4, 1, 4)); - BOOST_TEST(testFLN(S("tadrb"), "scidp", 4, 2, 4)); - BOOST_TEST(testFLN(S("pkfeo"), "agbjl", 4, 4, 4)); - BOOST_TEST(testFLN(S("hoser"), "jfmpr", 4, 5, 3)); - BOOST_TEST(testFLN(S("kgrsp"), "rbpefghsmj", 4, 0, 4)); - BOOST_TEST(testFLN(S("pgejb"), "apsfntdoqc", 4, 1, 4)); - BOOST_TEST(testFLN(S("thlnq"), "ndkjeisgcl", 4, 5, 4)); - BOOST_TEST(testFLN(S("nbmit"), "rnfpqatdeo", 4, 9, 3)); - BOOST_TEST(testFLN(S("jgmib"), "bntjlqrfik", 4, 10, 2)); - BOOST_TEST(testFLN(S("ncrfj"), "kcrtmpolnaqejghsfdbi", 4, 0, 4)); - BOOST_TEST(testFLN(S("ncsik"), "lobheanpkmqidsrtcfgj", 4, 1, 4)); - BOOST_TEST(testFLN(S("sgbfh"), "athdkljcnreqbgpmisof", 4, 10, 3)); - BOOST_TEST(testFLN(S("dktbn"), "qkdmjialrscpbhefgont", 4, 19, 2)); - BOOST_TEST(testFLN(S("fthqm"), "dmasojntqleribkgfchp", 4, 20, S::npos)); - BOOST_TEST(testFLN(S("klopi"), "", 5, 0, 4)); - BOOST_TEST(testFLN(S("dajhn"), "psthd", 5, 0, 4)); - BOOST_TEST(testFLN(S("jbgno"), "rpmjd", 5, 1, 4)); - BOOST_TEST(testFLN(S("hkjae"), "dfsmk", 5, 2, 4)); - BOOST_TEST(testFLN(S("gbhqo"), "skqne", 5, 4, 4)); - BOOST_TEST(testFLN(S("ktdor"), "kipnf", 5, 5, 4)); - BOOST_TEST(testFLN(S("ldprn"), "hmrnqdgifl", 5, 0, 4)); - BOOST_TEST(testFLN(S("egmjk"), "fsmjcdairn", 5, 1, 4)); - BOOST_TEST(testFLN(S("armql"), "pcdgltbrfj", 5, 5, 3)); - BOOST_TEST(testFLN(S("cdhjo"), "aekfctpirg", 5, 9, 4)); - BOOST_TEST(testFLN(S("jcons"), "ledihrsgpf", 5, 10, 3)); - BOOST_TEST(testFLN(S("cbrkp"), "mqcklahsbtirgopefndj", 5, 0, 4)); - BOOST_TEST(testFLN(S("fhgna"), "kmlthaoqgecrnpdbjfis", 5, 1, 4)); - BOOST_TEST(testFLN(S("ejfcd"), "sfhbamcdptojlkrenqgi", 5, 10, 1)); - BOOST_TEST(testFLN(S("kqjhe"), "pbniofmcedrkhlstgaqj", 5, 19, 2)); - BOOST_TEST(testFLN(S("pbdjl"), "mongjratcskbhqiepfdl", 5, 20, S::npos)); - BOOST_TEST(testFLN(S("gajqn"), "", 6, 0, 4)); - BOOST_TEST(testFLN(S("stedk"), "hrnat", 6, 0, 4)); - BOOST_TEST(testFLN(S("tjkaf"), "gsqdt", 6, 1, 4)); - BOOST_TEST(testFLN(S("dthpe"), "bspkd", 6, 2, 4)); - BOOST_TEST(testFLN(S("klhde"), "ohcmb", 6, 4, 4)); - BOOST_TEST(testFLN(S("bhlki"), "heatr", 6, 5, 4)); - BOOST_TEST(testFLN(S("lqmoh"), "pmblckedfn", 6, 0, 4)); - BOOST_TEST(testFLN(S("mtqin"), "aceqmsrbik", 6, 1, 4)); - BOOST_TEST(testFLN(S("dpqbr"), "lmbtdehjrn", 6, 5, 4)); - BOOST_TEST(testFLN(S("kdhmo"), "teqmcrlgib", 6, 9, 4)); - BOOST_TEST(testFLN(S("jblqp"), "njolbmspac", 6, 10, 3)); - BOOST_TEST(testFLN(S("qmjgl"), "pofnhidklamecrbqjgst", 6, 0, 4)); - BOOST_TEST(testFLN(S("rothp"), "jbhckmtgrqnosafedpli", 6, 1, 4)); - BOOST_TEST(testFLN(S("ghknq"), "dobntpmqklicsahgjerf", 6, 10, 1)); - BOOST_TEST(testFLN(S("eopfi"), "tpdshainjkbfoemlrgcq", 6, 19, S::npos)); - BOOST_TEST(testFLN(S("dsnmg"), "oldpfgeakrnitscbjmqh", 6, 20, S::npos)); - BOOST_TEST(testFLN(S("jnkrfhotgl"), "", 0, 0, 0)); - BOOST_TEST(testFLN(S("dltjfngbko"), "rqegt", 0, 0, 0)); - BOOST_TEST(testFLN(S("bmjlpkiqde"), "dashm", 0, 1, 0)); - BOOST_TEST(testFLN(S("skrflobnqm"), "jqirk", 0, 2, 0)); - BOOST_TEST(testFLN(S("jkpldtshrm"), "rckeg", 0, 4, 0)); - BOOST_TEST(testFLN(S("ghasdbnjqo"), "jscie", 0, 5, 0)); - BOOST_TEST(testFLN(S("igrkhpbqjt"), "efsphndliq", 0, 0, 0)); - BOOST_TEST(testFLN(S("ikthdgcamf"), "gdicosleja", 0, 1, 0)); - BOOST_TEST(testFLN(S("pcofgeniam"), "qcpjibosfl", 0, 5, S::npos)); - BOOST_TEST(testFLN(S("rlfjgesqhc"), "lrhmefnjcq", 0, 9, S::npos)); - BOOST_TEST(testFLN(S("itphbqsker"), "dtablcrseo", 0, 10, 0)); - BOOST_TEST(testFLN(S("skjafcirqm"), "apckjsftedbhgomrnilq", 0, 0, 0)); - BOOST_TEST(testFLN(S("tcqomarsfd"), "pcbrgflehjtiadnsokqm", 0, 1, 0)); - BOOST_TEST(testFLN(S("rocfeldqpk"), "nsiadegjklhobrmtqcpf", 0, 10, 0)); - BOOST_TEST(testFLN(S("cfpegndlkt"), "cpmajdqnolikhgsbretf", 0, 19, S::npos)); - BOOST_TEST(testFLN(S("fqbtnkeasj"), "jcflkntmgiqrphdosaeb", 0, 20, S::npos)); - BOOST_TEST(testFLN(S("shbcqnmoar"), "", 1, 0, 1)); - BOOST_TEST(testFLN(S("bdoshlmfin"), "ontrs", 1, 0, 1)); - BOOST_TEST(testFLN(S("khfrebnsgq"), "pfkna", 1, 1, 1)); - BOOST_TEST(testFLN(S("getcrsaoji"), "ekosa", 1, 2, 0)); - BOOST_TEST(testFLN(S("fjiknedcpq"), "anqhk", 1, 4, 1)); - BOOST_TEST(testFLN(S("tkejgnafrm"), "jekca", 1, 5, 0)); - BOOST_TEST(testFLN(S("jnakolqrde"), "ikemsjgacf", 1, 0, 1)); - BOOST_TEST(testFLN(S("lcjptsmgbe"), "arolgsjkhm", 1, 1, 1)); - BOOST_TEST(testFLN(S("itfsmcjorl"), "oftkbldhre", 1, 5, 0)); - BOOST_TEST(testFLN(S("omchkfrjea"), "gbkqdoeftl", 1, 9, 1)); - BOOST_TEST(testFLN(S("cigfqkated"), "sqcflrgtim", 1, 10, S::npos)); - BOOST_TEST(testFLN(S("tscenjikml"), "fmhbkislrjdpanogqcet", 1, 0, 1)); - BOOST_TEST(testFLN(S("qcpaemsinf"), "rnioadktqlgpbcjsmhef", 1, 1, 1)); - BOOST_TEST(testFLN(S("gltkojeipd"), "oakgtnldpsefihqmjcbr", 1, 10, S::npos)); - BOOST_TEST(testFLN(S("qistfrgnmp"), "gbnaelosidmcjqktfhpr", 1, 19, S::npos)); - BOOST_TEST(testFLN(S("bdnpfcqaem"), "akbripjhlosndcmqgfet", 1, 20, S::npos)); - BOOST_TEST(testFLN(S("ectnhskflp"), "", 5, 0, 5)); - BOOST_TEST(testFLN(S("fgtianblpq"), "pijag", 5, 0, 5)); - BOOST_TEST(testFLN(S("mfeqklirnh"), "jrckd", 5, 1, 5)); - BOOST_TEST(testFLN(S("astedncjhk"), "qcloh", 5, 2, 5)); - BOOST_TEST(testFLN(S("fhlqgcajbr"), "thlmp", 5, 4, 5)); - BOOST_TEST(testFLN(S("epfhocmdng"), "qidmo", 5, 5, 5)); - BOOST_TEST(testFLN(S("apcnsibger"), "lnegpsjqrd", 5, 0, 5)); - BOOST_TEST(testFLN(S("aqkocrbign"), "rjqdablmfs", 5, 1, 4)); - BOOST_TEST(testFLN(S("ijsmdtqgce"), "enkgpbsjaq", 5, 5, 5)); - BOOST_TEST(testFLN(S("clobgsrken"), "kdsgoaijfh", 5, 9, 3)); - BOOST_TEST(testFLN(S("jbhcfposld"), "trfqgmckbe", 5, 10, 5)); - BOOST_TEST(testFLN(S("oqnpblhide"), "igetsracjfkdnpoblhqm", 5, 0, 5)); - BOOST_TEST(testFLN(S("lroeasctif"), "nqctfaogirshlekbdjpm", 5, 1, 5)); - BOOST_TEST(testFLN(S("bpjlgmiedh"), "csehfgomljdqinbartkp", 5, 10, 1)); - BOOST_TEST(testFLN(S("pamkeoidrj"), "qahoegcmplkfsjbdnitr", 5, 19, S::npos)); - BOOST_TEST(testFLN(S("espogqbthk"), "dpteiajrqmsognhlfbkc", 5, 20, S::npos)); - BOOST_TEST(testFLN(S("shoiedtcjb"), "", 9, 0, 9)); - BOOST_TEST(testFLN(S("ebcinjgads"), "tqbnh", 9, 0, 9)); - BOOST_TEST(testFLN(S("dqmregkcfl"), "akmle", 9, 1, 9)); - BOOST_TEST(testFLN(S("ngcrieqajf"), "iqfkm", 9, 2, 9)); - BOOST_TEST(testFLN(S("qosmilgnjb"), "tqjsr", 9, 4, 9)); - BOOST_TEST(testFLN(S("ikabsjtdfl"), "jplqg", 9, 5, 8)); - BOOST_TEST(testFLN(S("ersmicafdh"), "oilnrbcgtj", 9, 0, 9)); - BOOST_TEST(testFLN(S("fdnplotmgh"), "morkglpesn", 9, 1, 9)); - BOOST_TEST(testFLN(S("fdbicojerm"), "dmicerngat", 9, 5, 8)); - BOOST_TEST(testFLN(S("mbtafndjcq"), "radgeskbtc", 9, 9, 9)); - BOOST_TEST(testFLN(S("mlenkpfdtc"), "ljikprsmqo", 9, 10, 9)); - BOOST_TEST(testFLN(S("ahlcifdqgs"), "trqihkcgsjamfdbolnpe", 9, 0, 9)); - BOOST_TEST(testFLN(S("bgjemaltks"), "lqmthbsrekajgnofcipd", 9, 1, 9)); - BOOST_TEST(testFLN(S("pdhslbqrfc"), "jtalmedribkgqsopcnfh", 9, 10, 9)); - BOOST_TEST(testFLN(S("dirhtsnjkc"), "spqfoiclmtagejbndkrh", 9, 19, 3)); - BOOST_TEST(testFLN(S("dlroktbcja"), "nmotklspigjrdhcfaebq", 9, 20, S::npos)); - BOOST_TEST(testFLN(S("ncjpmaekbs"), "", 10, 0, 9)); - BOOST_TEST(testFLN(S("hlbosgmrak"), "hpmsd", 10, 0, 9)); - BOOST_TEST(testFLN(S("pqfhsgilen"), "qnpor", 10, 1, 9)); - BOOST_TEST(testFLN(S("gqtjsbdckh"), "otdma", 10, 2, 9)); - BOOST_TEST(testFLN(S("cfkqpjlegi"), "efhjg", 10, 4, 9)); - BOOST_TEST(testFLN(S("beanrfodgj"), "odpte", 10, 5, 9)); - BOOST_TEST(testFLN(S("adtkqpbjfi"), "bctdgfmolr", 10, 0, 9)); - BOOST_TEST(testFLN(S("iomkfthagj"), "oaklidrbqg", 10, 1, 9)); - BOOST_TEST(testFLN(S("sdpcilonqj"), "dnjfsagktr", 10, 5, 8)); - BOOST_TEST(testFLN(S("gtfbdkqeml"), "nejaktmiqg", 10, 9, 9)); - BOOST_TEST(testFLN(S("bmeqgcdorj"), "pjqonlebsf", 10, 10, 8)); - BOOST_TEST(testFLN(S("etqlcanmob"), "dshmnbtolcjepgaikfqr", 10, 0, 9)); - BOOST_TEST(testFLN(S("roqmkbdtia"), "iogfhpabtjkqlrnemcds", 10, 1, 9)); - BOOST_TEST(testFLN(S("kadsithljf"), "ngridfabjsecpqltkmoh", 10, 10, 7)); - BOOST_TEST(testFLN(S("sgtkpbfdmh"), "athmknplcgofrqejsdib", 10, 19, 5)); - BOOST_TEST(testFLN(S("qgmetnabkl"), "ldobhmqcafnjtkeisgrp", 10, 20, S::npos)); - BOOST_TEST(testFLN(S("cqjohampgd"), "", 11, 0, 9)); - BOOST_TEST(testFLN(S("hobitmpsan"), "aocjb", 11, 0, 9)); - BOOST_TEST(testFLN(S("tjehkpsalm"), "jbrnk", 11, 1, 9)); - BOOST_TEST(testFLN(S("ngfbojitcl"), "tqedg", 11, 2, 9)); - BOOST_TEST(testFLN(S("rcfkdbhgjo"), "nqskp", 11, 4, 9)); - BOOST_TEST(testFLN(S("qghptonrea"), "eaqkl", 11, 5, 7)); - BOOST_TEST(testFLN(S("hnprfgqjdl"), "reaoicljqm", 11, 0, 9)); - BOOST_TEST(testFLN(S("hlmgabenti"), "lsftgajqpm", 11, 1, 9)); - BOOST_TEST(testFLN(S("ofcjanmrbs"), "rlpfogmits", 11, 5, 9)); - BOOST_TEST(testFLN(S("jqedtkornm"), "shkncmiaqj", 11, 9, 7)); - BOOST_TEST(testFLN(S("rfedlasjmg"), "fpnatrhqgs", 11, 10, 8)); - BOOST_TEST(testFLN(S("talpqjsgkm"), "sjclemqhnpdbgikarfot", 11, 0, 9)); - BOOST_TEST(testFLN(S("lrkcbtqpie"), "otcmedjikgsfnqbrhpla", 11, 1, 9)); - BOOST_TEST(testFLN(S("cipogdskjf"), "bonsaefdqiprkhlgtjcm", 11, 10, 8)); - BOOST_TEST(testFLN(S("nqedcojahi"), "egpscmahijlfnkrodqtb", 11, 19, S::npos)); - BOOST_TEST(testFLN(S("hefnrkmctj"), "kmqbfepjthgilscrndoa", 11, 20, S::npos)); - BOOST_TEST(testFLN(S("atqirnmekfjolhpdsgcb"), "", 0, 0, 0)); - BOOST_TEST(testFLN(S("echfkmlpribjnqsaogtd"), "prboq", 0, 0, 0)); - BOOST_TEST(testFLN(S("qnhiftdgcleajbpkrosm"), "fjcqh", 0, 1, 0)); - BOOST_TEST(testFLN(S("chamfknorbedjitgslpq"), "fmosa", 0, 2, 0)); - BOOST_TEST(testFLN(S("njhqpibfmtlkaecdrgso"), "qdbok", 0, 4, 0)); - BOOST_TEST(testFLN(S("ebnghfsqkprmdcljoiat"), "amslg", 0, 5, 0)); - BOOST_TEST(testFLN(S("letjomsgihfrpqbkancd"), "smpltjneqb", 0, 0, 0)); - BOOST_TEST(testFLN(S("nblgoipcrqeaktshjdmf"), "flitskrnge", 0, 1, 0)); - BOOST_TEST(testFLN(S("cehkbngtjoiflqapsmrd"), "pgqihmlbef", 0, 5, 0)); - BOOST_TEST(testFLN(S("mignapfoklbhcqjetdrs"), "cfpdqjtgsb", 0, 9, 0)); - BOOST_TEST(testFLN(S("ceatbhlsqjgpnokfrmdi"), "htpsiaflom", 0, 10, 0)); - BOOST_TEST(testFLN(S("ocihkjgrdelpfnmastqb"), "kpjfiaceghsrdtlbnomq", 0, 0, 0)); - BOOST_TEST(testFLN(S("noelgschdtbrjfmiqkap"), "qhtbomidljgafneksprc", 0, 1, 0)); - BOOST_TEST(testFLN(S("dkclqfombepritjnghas"), "nhtjobkcefldimpsaqgr", 0, 10, 0)); - BOOST_TEST(testFLN(S("miklnresdgbhqcojftap"), "prabcjfqnoeskilmtgdh", 0, 19, S::npos)); - BOOST_TEST(testFLN(S("htbcigojaqmdkfrnlsep"), "dtrgmchilkasqoebfpjn", 0, 20, S::npos)); - BOOST_TEST(testFLN(S("febhmqtjanokscdirpgl"), "", 1, 0, 1)); - BOOST_TEST(testFLN(S("loakbsqjpcrdhftniegm"), "sqome", 1, 0, 1)); - BOOST_TEST(testFLN(S("reagphsqflbitdcjmkno"), "smfte", 1, 1, 1)); - BOOST_TEST(testFLN(S("jitlfrqemsdhkopncabg"), "ciboh", 1, 2, 0)); - BOOST_TEST(testFLN(S("mhtaepscdnrjqgbkifol"), "haois", 1, 4, 0)); - BOOST_TEST(testFLN(S("tocesrfmnglpbjihqadk"), "abfki", 1, 5, 1)); - BOOST_TEST(testFLN(S("lpfmctjrhdagneskbqoi"), "frdkocntmq", 1, 0, 1)); - BOOST_TEST(testFLN(S("lsmqaepkdhncirbtjfgo"), "oasbpedlnr", 1, 1, 1)); - BOOST_TEST(testFLN(S("epoiqmtldrabnkjhcfsg"), "kltqmhgand", 1, 5, 1)); - BOOST_TEST(testFLN(S("emgasrilpknqojhtbdcf"), "gdtfjchpmr", 1, 9, 0)); - BOOST_TEST(testFLN(S("hnfiagdpcklrjetqbsom"), "ponmcqblet", 1, 10, 0)); - BOOST_TEST(testFLN(S("nsdfebgajhmtricpoklq"), "sgphqdnofeiklatbcmjr", 1, 0, 1)); - BOOST_TEST(testFLN(S("atjgfsdlpobmeiqhncrk"), "ljqprsmigtfoneadckbh", 1, 1, 1)); - BOOST_TEST(testFLN(S("sitodfgnrejlahcbmqkp"), "ligeojhafnkmrcsqtbdp", 1, 10, 0)); - BOOST_TEST(testFLN(S("fraghmbiceknltjpqosd"), "lsimqfnjarbopedkhcgt", 1, 19, S::npos)); - BOOST_TEST(testFLN(S("pmafenlhqtdbkirjsogc"), "abedmfjlghniorcqptks", 1, 20, S::npos)); - BOOST_TEST(testFLN(S("pihgmoeqtnakrjslcbfd"), "", 10, 0, 10)); - BOOST_TEST(testFLN(S("gjdkeprctqblnhiafsom"), "hqtoa", 10, 0, 10)); - BOOST_TEST(testFLN(S("mkpnblfdsahrcqijteog"), "cahif", 10, 1, 10)); - BOOST_TEST(testFLN(S("gckarqnelodfjhmbptis"), "kehis", 10, 2, 10)); - BOOST_TEST(testFLN(S("gqpskidtbclomahnrjfe"), "kdlmh", 10, 4, 9)); - BOOST_TEST(testFLN(S("pkldjsqrfgitbhmaecno"), "paeql", 10, 5, 10)); - BOOST_TEST(testFLN(S("aftsijrbeklnmcdqhgop"), "aghoqiefnb", 10, 0, 10)); - BOOST_TEST(testFLN(S("mtlgdrhafjkbiepqnsoc"), "jrbqaikpdo", 10, 1, 10)); - BOOST_TEST(testFLN(S("pqgirnaefthokdmbsclj"), "smjonaeqcl", 10, 5, 10)); - BOOST_TEST(testFLN(S("kpdbgjmtherlsfcqoina"), "eqbdrkcfah", 10, 9, 8)); - BOOST_TEST(testFLN(S("jrlbothiknqmdgcfasep"), "kapmsienhf", 10, 10, 10)); - BOOST_TEST(testFLN(S("mjogldqferckabinptsh"), "jpqotrlenfcsbhkaimdg", 10, 0, 10)); - BOOST_TEST(testFLN(S("apoklnefbhmgqcdrisjt"), "jlbmhnfgtcqprikeados", 10, 1, 10)); - BOOST_TEST(testFLN(S("ifeopcnrjbhkdgatmqls"), "stgbhfmdaljnpqoicker", 10, 10, 8)); - BOOST_TEST(testFLN(S("ckqhaiesmjdnrgolbtpf"), "oihcetflbjagdsrkmqpn", 10, 19, S::npos)); - BOOST_TEST(testFLN(S("bnlgapfimcoterskqdjh"), "adtclebmnpjsrqfkigoh", 10, 20, S::npos)); - BOOST_TEST(testFLN(S("kgdlrobpmjcthqsafeni"), "", 19, 0, 19)); - BOOST_TEST(testFLN(S("dfkechomjapgnslbtqir"), "beafg", 19, 0, 19)); - BOOST_TEST(testFLN(S("rloadknfbqtgmhcsipje"), "iclat", 19, 1, 19)); - BOOST_TEST(testFLN(S("mgjhkolrnadqbpetcifs"), "rkhnf", 19, 2, 19)); - BOOST_TEST(testFLN(S("cmlfakiojdrgtbsphqen"), "clshq", 19, 4, 19)); - BOOST_TEST(testFLN(S("kghbfipeomsntdalrqjc"), "dtcoj", 19, 5, 17)); - BOOST_TEST(testFLN(S("eldiqckrnmtasbghjfpo"), "rqosnjmfth", 19, 0, 19)); - BOOST_TEST(testFLN(S("abqjcfedgotihlnspkrm"), "siatdfqglh", 19, 1, 19)); - BOOST_TEST(testFLN(S("qfbadrtjsimkolcenhpg"), "mrlshtpgjq", 19, 5, 19)); - BOOST_TEST(testFLN(S("abseghclkjqifmtodrnp"), "adlcskgqjt", 19, 9, 19)); - BOOST_TEST(testFLN(S("ibmsnlrjefhtdokacqpg"), "drshcjknaf", 19, 10, 19)); - BOOST_TEST(testFLN(S("mrkfciqjebaponsthldg"), "etsaqroinghpkjdlfcbm", 19, 0, 19)); - BOOST_TEST(testFLN(S("mjkticdeoqshpalrfbgn"), "sgepdnkqliambtrocfhj", 19, 1, 19)); - BOOST_TEST(testFLN(S("rqnoclbdejgiphtfsakm"), "nlmcjaqgbsortfdihkpe", 19, 10, 18)); - BOOST_TEST(testFLN(S("plkqbhmtfaeodjcrsing"), "racfnpmosldibqkghjet", 19, 19, 7)); - BOOST_TEST(testFLN(S("oegalhmstjrfickpbndq"), "fjhdsctkqeiolagrnmbp", 19, 20, S::npos)); - BOOST_TEST(testFLN(S("rdtgjcaohpblniekmsfq"), "", 20, 0, 19)); - BOOST_TEST(testFLN(S("ofkqbnjetrmsaidphglc"), "ejanp", 20, 0, 19)); - BOOST_TEST(testFLN(S("grkpahljcftesdmonqib"), "odife", 20, 1, 19)); - BOOST_TEST(testFLN(S("jimlgbhfqkteospardcn"), "okaqd", 20, 2, 19)); - BOOST_TEST(testFLN(S("gftenihpmslrjkqadcob"), "lcdbi", 20, 4, 18)); - BOOST_TEST(testFLN(S("bmhldogtckrfsanijepq"), "fsqbj", 20, 5, 18)); - BOOST_TEST(testFLN(S("nfqkrpjdesabgtlcmoih"), "bigdomnplq", 20, 0, 19)); - BOOST_TEST(testFLN(S("focalnrpiqmdkstehbjg"), "apiblotgcd", 20, 1, 19)); - BOOST_TEST(testFLN(S("rhqdspkmebiflcotnjga"), "acfhdenops", 20, 5, 18)); - BOOST_TEST(testFLN(S("rahdtmsckfboqlpniegj"), "jopdeamcrk", 20, 9, 18)); - BOOST_TEST(testFLN(S("fbkeiopclstmdqranjhg"), "trqncbkgmh", 20, 10, 17)); - BOOST_TEST(testFLN(S("lifhpdgmbconstjeqark"), "tomglrkencbsfjqpihda", 20, 0, 19)); - BOOST_TEST(testFLN(S("pboqganrhedjmltsicfk"), "gbkhdnpoietfcmrslajq", 20, 1, 19)); - BOOST_TEST(testFLN(S("klchabsimetjnqgorfpd"), "rtfnmbsglkjaichoqedp", 20, 10, 19)); - BOOST_TEST(testFLN(S("sirfgmjqhctndbklaepo"), "ohkmdpfqbsacrtjnlgei", 20, 19, 1)); - BOOST_TEST(testFLN(S("rlbdsiceaonqjtfpghkm"), "dlbrteoisgphmkncajfq", 20, 20, S::npos)); - BOOST_TEST(testFLN(S("ecgdanriptblhjfqskom"), "", 21, 0, 19)); - BOOST_TEST(testFLN(S("fdmiarlpgcskbhoteqjn"), "sjrlo", 21, 0, 19)); - BOOST_TEST(testFLN(S("rlbstjqopignecmfadkh"), "qjpor", 21, 1, 19)); - BOOST_TEST(testFLN(S("grjpqmbshektdolcafni"), "odhfn", 21, 2, 19)); - BOOST_TEST(testFLN(S("sakfcohtqnibprjmlged"), "qtfin", 21, 4, 19)); - BOOST_TEST(testFLN(S("mjtdglasihqpocebrfkn"), "hpqfo", 21, 5, 19)); - BOOST_TEST(testFLN(S("okaplfrntghqbmeicsdj"), "fabmertkos", 21, 0, 19)); - BOOST_TEST(testFLN(S("sahngemrtcjidqbklfpo"), "brqtgkmaej", 21, 1, 19)); - BOOST_TEST(testFLN(S("dlmsipcnekhbgoaftqjr"), "nfrdeihsgl", 21, 5, 18)); - BOOST_TEST(testFLN(S("ahegrmqnoiklpfsdbcjt"), "hlfrosekpi", 21, 9, 19)); - BOOST_TEST(testFLN(S("hdsjbnmlegtkqripacof"), "atgbkrjdsm", 21, 10, 19)); - BOOST_TEST(testFLN(S("pcnedrfjihqbalkgtoms"), "blnrptjgqmaifsdkhoec", 21, 0, 19)); - BOOST_TEST(testFLN(S("qjidealmtpskrbfhocng"), "ctpmdahebfqjgknloris", 21, 1, 19)); - BOOST_TEST(testFLN(S("qeindtagmokpfhsclrbj"), "apnkeqthrmlbfodiscgj", 21, 10, 19)); - BOOST_TEST(testFLN(S("kpfegbjhsrnodltqciam"), "jdgictpframeoqlsbknh", 21, 19, 7)); + BOOST_TEST(testFLN(S(""), "", 0, 0, S::npos)); + BOOST_TEST(testFLN(S(""), "irkhs", 0, 0, S::npos)); + BOOST_TEST(testFLN(S(""), "kante", 0, 1, S::npos)); + BOOST_TEST(testFLN(S(""), "oknlr", 0, 2, S::npos)); + BOOST_TEST(testFLN(S(""), "pcdro", 0, 4, S::npos)); + BOOST_TEST(testFLN(S(""), "bnrpe", 0, 5, S::npos)); + BOOST_TEST(testFLN(S(""), "jtdaefblso", 0, 0, S::npos)); + BOOST_TEST(testFLN(S(""), "oselktgbca", 0, 1, S::npos)); + BOOST_TEST(testFLN(S(""), "eqgaplhckj", 0, 5, S::npos)); + BOOST_TEST(testFLN(S(""), "bjahtcmnlp", 0, 9, S::npos)); + BOOST_TEST(testFLN(S(""), "hjlcmgpket", 0, 10, S::npos)); + BOOST_TEST(testFLN(S(""), "htaobedqikfplcgjsmrn", 0, 0, S::npos)); + BOOST_TEST(testFLN(S(""), "hpqiarojkcdlsgnmfetb", 0, 1, S::npos)); + BOOST_TEST(testFLN(S(""), "dfkaprhjloqetcsimnbg", 0, 10, S::npos)); + BOOST_TEST(testFLN(S(""), "ihqrfebgadntlpmjksoc", 0, 19, S::npos)); + BOOST_TEST(testFLN(S(""), "ngtjfcalbseiqrphmkdo", 0, 20, S::npos)); + BOOST_TEST(testFLN(S(""), "", 1, 0, S::npos)); + BOOST_TEST(testFLN(S(""), "lbtqd", 1, 0, S::npos)); + BOOST_TEST(testFLN(S(""), "tboim", 1, 1, S::npos)); + BOOST_TEST(testFLN(S(""), "slcer", 1, 2, S::npos)); + BOOST_TEST(testFLN(S(""), "cbjfs", 1, 4, S::npos)); + BOOST_TEST(testFLN(S(""), "aqibs", 1, 5, S::npos)); + BOOST_TEST(testFLN(S(""), "gtfblmqinc", 1, 0, S::npos)); + BOOST_TEST(testFLN(S(""), "mkqpbtdalg", 1, 1, S::npos)); + BOOST_TEST(testFLN(S(""), "kphatlimcd", 1, 5, S::npos)); + BOOST_TEST(testFLN(S(""), "pblasqogic", 1, 9, S::npos)); + BOOST_TEST(testFLN(S(""), "arosdhcfme", 1, 10, S::npos)); + BOOST_TEST(testFLN(S(""), "blkhjeogicatqfnpdmsr", 1, 0, S::npos)); + BOOST_TEST(testFLN(S(""), "bmhineprjcoadgstflqk", 1, 1, S::npos)); + BOOST_TEST(testFLN(S(""), "djkqcmetslnghpbarfoi", 1, 10, S::npos)); + BOOST_TEST(testFLN(S(""), "lgokshjtpbemarcdqnfi", 1, 19, S::npos)); + BOOST_TEST(testFLN(S(""), "bqjhtkfepimcnsgrlado", 1, 20, S::npos)); + BOOST_TEST(testFLN(S("eaint"), "", 0, 0, 0)); + BOOST_TEST(testFLN(S("binja"), "gfsrt", 0, 0, 0)); + BOOST_TEST(testFLN(S("latkm"), "pfsoc", 0, 1, 0)); + BOOST_TEST(testFLN(S("lecfr"), "tpflm", 0, 2, 0)); + BOOST_TEST(testFLN(S("eqkst"), "sgkec", 0, 4, S::npos)); + BOOST_TEST(testFLN(S("cdafr"), "romds", 0, 5, 0)); + BOOST_TEST(testFLN(S("prbhe"), "qhjistlgmr", 0, 0, 0)); + BOOST_TEST(testFLN(S("lbisk"), "pedfirsglo", 0, 1, 0)); + BOOST_TEST(testFLN(S("hrlpd"), "aqcoslgrmk", 0, 5, 0)); + BOOST_TEST(testFLN(S("ehmja"), "dabckmepqj", 0, 9, S::npos)); + BOOST_TEST(testFLN(S("mhqgd"), "pqscrjthli", 0, 10, 0)); + BOOST_TEST(testFLN(S("tgklq"), "kfphdcsjqmobliagtren", 0, 0, 0)); + BOOST_TEST(testFLN(S("bocjs"), "rokpefncljibsdhqtagm", 0, 1, 0)); + BOOST_TEST(testFLN(S("grbsd"), "afionmkphlebtcjqsgrd", 0, 10, 0)); + BOOST_TEST(testFLN(S("ofjqr"), "aenmqplidhkofrjbctsg", 0, 19, S::npos)); + BOOST_TEST(testFLN(S("btlfi"), "osjmbtcadhiklegrpqnf", 0, 20, S::npos)); + BOOST_TEST(testFLN(S("clrgb"), "", 1, 0, 1)); + BOOST_TEST(testFLN(S("tjmek"), "osmia", 1, 0, 1)); + BOOST_TEST(testFLN(S("bgstp"), "ckonl", 1, 1, 1)); + BOOST_TEST(testFLN(S("hstrk"), "ilcaj", 1, 2, 1)); + BOOST_TEST(testFLN(S("kmspj"), "lasiq", 1, 4, 1)); + BOOST_TEST(testFLN(S("tjboh"), "kfqmr", 1, 5, 1)); + BOOST_TEST(testFLN(S("ilbcj"), "klnitfaobg", 1, 0, 1)); + BOOST_TEST(testFLN(S("jkngf"), "gjhmdlqikp", 1, 1, 1)); + BOOST_TEST(testFLN(S("gfcql"), "skbgtahqej", 1, 5, 1)); + BOOST_TEST(testFLN(S("dqtlg"), "bjsdgtlpkf", 1, 9, 1)); + BOOST_TEST(testFLN(S("bthpg"), "bjgfmnlkio", 1, 10, 1)); + BOOST_TEST(testFLN(S("dgsnq"), "lbhepotfsjdqigcnamkr", 1, 0, 1)); + BOOST_TEST(testFLN(S("rmfhp"), "tebangckmpsrqdlfojhi", 1, 1, 1)); + BOOST_TEST(testFLN(S("jfdam"), "joflqbdkhtegimscpanr", 1, 10, S::npos)); + BOOST_TEST(testFLN(S("edapb"), "adpmcohetfbsrjinlqkg", 1, 19, S::npos)); + BOOST_TEST(testFLN(S("brfsm"), "iacldqjpfnogbsrhmetk", 1, 20, S::npos)); + BOOST_TEST(testFLN(S("ndrhl"), "", 2, 0, 2)); + BOOST_TEST(testFLN(S("mrecp"), "otkgb", 2, 0, 2)); + BOOST_TEST(testFLN(S("qlasf"), "cqsjl", 2, 1, 2)); + BOOST_TEST(testFLN(S("smaqd"), "dpifl", 2, 2, 2)); + BOOST_TEST(testFLN(S("hjeni"), "oapht", 2, 4, 2)); + BOOST_TEST(testFLN(S("ocmfj"), "cifts", 2, 5, 2)); + BOOST_TEST(testFLN(S("hmftq"), "nmsckbgalo", 2, 0, 2)); + BOOST_TEST(testFLN(S("fklad"), "tpksqhamle", 2, 1, 2)); + BOOST_TEST(testFLN(S("dirnm"), "tpdrchmkji", 2, 5, 1)); + BOOST_TEST(testFLN(S("hrgdc"), "ijagfkblst", 2, 9, 1)); + BOOST_TEST(testFLN(S("ifakg"), "kpocsignjb", 2, 10, 2)); + BOOST_TEST(testFLN(S("ebrgd"), "pecqtkjsnbdrialgmohf", 2, 0, 2)); + BOOST_TEST(testFLN(S("rcjml"), "aiortphfcmkjebgsndql", 2, 1, 2)); + BOOST_TEST(testFLN(S("peqmt"), "sdbkeamglhipojqftrcn", 2, 10, 2)); + BOOST_TEST(testFLN(S("frehn"), "ljqncehgmfktroapidbs", 2, 19, S::npos)); + BOOST_TEST(testFLN(S("tqolf"), "rtcfodilamkbenjghqps", 2, 20, S::npos)); + BOOST_TEST(testFLN(S("cjgao"), "", 4, 0, 4)); + BOOST_TEST(testFLN(S("kjplq"), "mabns", 4, 0, 4)); + BOOST_TEST(testFLN(S("herni"), "bdnrp", 4, 1, 4)); + BOOST_TEST(testFLN(S("tadrb"), "scidp", 4, 2, 4)); + BOOST_TEST(testFLN(S("pkfeo"), "agbjl", 4, 4, 4)); + BOOST_TEST(testFLN(S("hoser"), "jfmpr", 4, 5, 3)); + BOOST_TEST(testFLN(S("kgrsp"), "rbpefghsmj", 4, 0, 4)); + BOOST_TEST(testFLN(S("pgejb"), "apsfntdoqc", 4, 1, 4)); + BOOST_TEST(testFLN(S("thlnq"), "ndkjeisgcl", 4, 5, 4)); + BOOST_TEST(testFLN(S("nbmit"), "rnfpqatdeo", 4, 9, 3)); + BOOST_TEST(testFLN(S("jgmib"), "bntjlqrfik", 4, 10, 2)); + BOOST_TEST(testFLN(S("ncrfj"), "kcrtmpolnaqejghsfdbi", 4, 0, 4)); + BOOST_TEST(testFLN(S("ncsik"), "lobheanpkmqidsrtcfgj", 4, 1, 4)); + BOOST_TEST(testFLN(S("sgbfh"), "athdkljcnreqbgpmisof", 4, 10, 3)); + BOOST_TEST(testFLN(S("dktbn"), "qkdmjialrscpbhefgont", 4, 19, 2)); + BOOST_TEST(testFLN(S("fthqm"), "dmasojntqleribkgfchp", 4, 20, S::npos)); + BOOST_TEST(testFLN(S("klopi"), "", 5, 0, 4)); + BOOST_TEST(testFLN(S("dajhn"), "psthd", 5, 0, 4)); + BOOST_TEST(testFLN(S("jbgno"), "rpmjd", 5, 1, 4)); + BOOST_TEST(testFLN(S("hkjae"), "dfsmk", 5, 2, 4)); + BOOST_TEST(testFLN(S("gbhqo"), "skqne", 5, 4, 4)); + BOOST_TEST(testFLN(S("ktdor"), "kipnf", 5, 5, 4)); + BOOST_TEST(testFLN(S("ldprn"), "hmrnqdgifl", 5, 0, 4)); + BOOST_TEST(testFLN(S("egmjk"), "fsmjcdairn", 5, 1, 4)); + BOOST_TEST(testFLN(S("armql"), "pcdgltbrfj", 5, 5, 3)); + BOOST_TEST(testFLN(S("cdhjo"), "aekfctpirg", 5, 9, 4)); + BOOST_TEST(testFLN(S("jcons"), "ledihrsgpf", 5, 10, 3)); + BOOST_TEST(testFLN(S("cbrkp"), "mqcklahsbtirgopefndj", 5, 0, 4)); + BOOST_TEST(testFLN(S("fhgna"), "kmlthaoqgecrnpdbjfis", 5, 1, 4)); + BOOST_TEST(testFLN(S("ejfcd"), "sfhbamcdptojlkrenqgi", 5, 10, 1)); + BOOST_TEST(testFLN(S("kqjhe"), "pbniofmcedrkhlstgaqj", 5, 19, 2)); + BOOST_TEST(testFLN(S("pbdjl"), "mongjratcskbhqiepfdl", 5, 20, S::npos)); + BOOST_TEST(testFLN(S("gajqn"), "", 6, 0, 4)); + BOOST_TEST(testFLN(S("stedk"), "hrnat", 6, 0, 4)); + BOOST_TEST(testFLN(S("tjkaf"), "gsqdt", 6, 1, 4)); + BOOST_TEST(testFLN(S("dthpe"), "bspkd", 6, 2, 4)); + BOOST_TEST(testFLN(S("klhde"), "ohcmb", 6, 4, 4)); + BOOST_TEST(testFLN(S("bhlki"), "heatr", 6, 5, 4)); + BOOST_TEST(testFLN(S("lqmoh"), "pmblckedfn", 6, 0, 4)); + BOOST_TEST(testFLN(S("mtqin"), "aceqmsrbik", 6, 1, 4)); + BOOST_TEST(testFLN(S("dpqbr"), "lmbtdehjrn", 6, 5, 4)); + BOOST_TEST(testFLN(S("kdhmo"), "teqmcrlgib", 6, 9, 4)); + BOOST_TEST(testFLN(S("jblqp"), "njolbmspac", 6, 10, 3)); + BOOST_TEST(testFLN(S("qmjgl"), "pofnhidklamecrbqjgst", 6, 0, 4)); + BOOST_TEST(testFLN(S("rothp"), "jbhckmtgrqnosafedpli", 6, 1, 4)); + BOOST_TEST(testFLN(S("ghknq"), "dobntpmqklicsahgjerf", 6, 10, 1)); + BOOST_TEST(testFLN(S("eopfi"), "tpdshainjkbfoemlrgcq", 6, 19, S::npos)); + BOOST_TEST(testFLN(S("dsnmg"), "oldpfgeakrnitscbjmqh", 6, 20, S::npos)); + BOOST_TEST(testFLN(S("jnkrfhotgl"), "", 0, 0, 0)); + BOOST_TEST(testFLN(S("dltjfngbko"), "rqegt", 0, 0, 0)); + BOOST_TEST(testFLN(S("bmjlpkiqde"), "dashm", 0, 1, 0)); + BOOST_TEST(testFLN(S("skrflobnqm"), "jqirk", 0, 2, 0)); + BOOST_TEST(testFLN(S("jkpldtshrm"), "rckeg", 0, 4, 0)); + BOOST_TEST(testFLN(S("ghasdbnjqo"), "jscie", 0, 5, 0)); + BOOST_TEST(testFLN(S("igrkhpbqjt"), "efsphndliq", 0, 0, 0)); + BOOST_TEST(testFLN(S("ikthdgcamf"), "gdicosleja", 0, 1, 0)); + BOOST_TEST(testFLN(S("pcofgeniam"), "qcpjibosfl", 0, 5, S::npos)); + BOOST_TEST(testFLN(S("rlfjgesqhc"), "lrhmefnjcq", 0, 9, S::npos)); + BOOST_TEST(testFLN(S("itphbqsker"), "dtablcrseo", 0, 10, 0)); + BOOST_TEST(testFLN(S("skjafcirqm"), "apckjsftedbhgomrnilq", 0, 0, 0)); + BOOST_TEST(testFLN(S("tcqomarsfd"), "pcbrgflehjtiadnsokqm", 0, 1, 0)); + BOOST_TEST(testFLN(S("rocfeldqpk"), "nsiadegjklhobrmtqcpf", 0, 10, 0)); + BOOST_TEST(testFLN(S("cfpegndlkt"), "cpmajdqnolikhgsbretf", 0, 19, S::npos)); + BOOST_TEST(testFLN(S("fqbtnkeasj"), "jcflkntmgiqrphdosaeb", 0, 20, S::npos)); + BOOST_TEST(testFLN(S("shbcqnmoar"), "", 1, 0, 1)); + BOOST_TEST(testFLN(S("bdoshlmfin"), "ontrs", 1, 0, 1)); + BOOST_TEST(testFLN(S("khfrebnsgq"), "pfkna", 1, 1, 1)); + BOOST_TEST(testFLN(S("getcrsaoji"), "ekosa", 1, 2, 0)); + BOOST_TEST(testFLN(S("fjiknedcpq"), "anqhk", 1, 4, 1)); + BOOST_TEST(testFLN(S("tkejgnafrm"), "jekca", 1, 5, 0)); + BOOST_TEST(testFLN(S("jnakolqrde"), "ikemsjgacf", 1, 0, 1)); + BOOST_TEST(testFLN(S("lcjptsmgbe"), "arolgsjkhm", 1, 1, 1)); + BOOST_TEST(testFLN(S("itfsmcjorl"), "oftkbldhre", 1, 5, 0)); + BOOST_TEST(testFLN(S("omchkfrjea"), "gbkqdoeftl", 1, 9, 1)); + BOOST_TEST(testFLN(S("cigfqkated"), "sqcflrgtim", 1, 10, S::npos)); + BOOST_TEST(testFLN(S("tscenjikml"), "fmhbkislrjdpanogqcet", 1, 0, 1)); + BOOST_TEST(testFLN(S("qcpaemsinf"), "rnioadktqlgpbcjsmhef", 1, 1, 1)); + BOOST_TEST(testFLN(S("gltkojeipd"), "oakgtnldpsefihqmjcbr", 1, 10, S::npos)); + BOOST_TEST(testFLN(S("qistfrgnmp"), "gbnaelosidmcjqktfhpr", 1, 19, S::npos)); + BOOST_TEST(testFLN(S("bdnpfcqaem"), "akbripjhlosndcmqgfet", 1, 20, S::npos)); + BOOST_TEST(testFLN(S("ectnhskflp"), "", 5, 0, 5)); + BOOST_TEST(testFLN(S("fgtianblpq"), "pijag", 5, 0, 5)); + BOOST_TEST(testFLN(S("mfeqklirnh"), "jrckd", 5, 1, 5)); + BOOST_TEST(testFLN(S("astedncjhk"), "qcloh", 5, 2, 5)); + BOOST_TEST(testFLN(S("fhlqgcajbr"), "thlmp", 5, 4, 5)); + BOOST_TEST(testFLN(S("epfhocmdng"), "qidmo", 5, 5, 5)); + BOOST_TEST(testFLN(S("apcnsibger"), "lnegpsjqrd", 5, 0, 5)); + BOOST_TEST(testFLN(S("aqkocrbign"), "rjqdablmfs", 5, 1, 4)); + BOOST_TEST(testFLN(S("ijsmdtqgce"), "enkgpbsjaq", 5, 5, 5)); + BOOST_TEST(testFLN(S("clobgsrken"), "kdsgoaijfh", 5, 9, 3)); + BOOST_TEST(testFLN(S("jbhcfposld"), "trfqgmckbe", 5, 10, 5)); + BOOST_TEST(testFLN(S("oqnpblhide"), "igetsracjfkdnpoblhqm", 5, 0, 5)); + BOOST_TEST(testFLN(S("lroeasctif"), "nqctfaogirshlekbdjpm", 5, 1, 5)); + BOOST_TEST(testFLN(S("bpjlgmiedh"), "csehfgomljdqinbartkp", 5, 10, 1)); + BOOST_TEST(testFLN(S("pamkeoidrj"), "qahoegcmplkfsjbdnitr", 5, 19, S::npos)); + BOOST_TEST(testFLN(S("espogqbthk"), "dpteiajrqmsognhlfbkc", 5, 20, S::npos)); + BOOST_TEST(testFLN(S("shoiedtcjb"), "", 9, 0, 9)); + BOOST_TEST(testFLN(S("ebcinjgads"), "tqbnh", 9, 0, 9)); + BOOST_TEST(testFLN(S("dqmregkcfl"), "akmle", 9, 1, 9)); + BOOST_TEST(testFLN(S("ngcrieqajf"), "iqfkm", 9, 2, 9)); + BOOST_TEST(testFLN(S("qosmilgnjb"), "tqjsr", 9, 4, 9)); + BOOST_TEST(testFLN(S("ikabsjtdfl"), "jplqg", 9, 5, 8)); + BOOST_TEST(testFLN(S("ersmicafdh"), "oilnrbcgtj", 9, 0, 9)); + BOOST_TEST(testFLN(S("fdnplotmgh"), "morkglpesn", 9, 1, 9)); + BOOST_TEST(testFLN(S("fdbicojerm"), "dmicerngat", 9, 5, 8)); + BOOST_TEST(testFLN(S("mbtafndjcq"), "radgeskbtc", 9, 9, 9)); + BOOST_TEST(testFLN(S("mlenkpfdtc"), "ljikprsmqo", 9, 10, 9)); + BOOST_TEST(testFLN(S("ahlcifdqgs"), "trqihkcgsjamfdbolnpe", 9, 0, 9)); + BOOST_TEST(testFLN(S("bgjemaltks"), "lqmthbsrekajgnofcipd", 9, 1, 9)); + BOOST_TEST(testFLN(S("pdhslbqrfc"), "jtalmedribkgqsopcnfh", 9, 10, 9)); + BOOST_TEST(testFLN(S("dirhtsnjkc"), "spqfoiclmtagejbndkrh", 9, 19, 3)); + BOOST_TEST(testFLN(S("dlroktbcja"), "nmotklspigjrdhcfaebq", 9, 20, S::npos)); + BOOST_TEST(testFLN(S("ncjpmaekbs"), "", 10, 0, 9)); + BOOST_TEST(testFLN(S("hlbosgmrak"), "hpmsd", 10, 0, 9)); + BOOST_TEST(testFLN(S("pqfhsgilen"), "qnpor", 10, 1, 9)); + BOOST_TEST(testFLN(S("gqtjsbdckh"), "otdma", 10, 2, 9)); + BOOST_TEST(testFLN(S("cfkqpjlegi"), "efhjg", 10, 4, 9)); + BOOST_TEST(testFLN(S("beanrfodgj"), "odpte", 10, 5, 9)); + BOOST_TEST(testFLN(S("adtkqpbjfi"), "bctdgfmolr", 10, 0, 9)); + BOOST_TEST(testFLN(S("iomkfthagj"), "oaklidrbqg", 10, 1, 9)); + BOOST_TEST(testFLN(S("sdpcilonqj"), "dnjfsagktr", 10, 5, 8)); + BOOST_TEST(testFLN(S("gtfbdkqeml"), "nejaktmiqg", 10, 9, 9)); + BOOST_TEST(testFLN(S("bmeqgcdorj"), "pjqonlebsf", 10, 10, 8)); + BOOST_TEST(testFLN(S("etqlcanmob"), "dshmnbtolcjepgaikfqr", 10, 0, 9)); + BOOST_TEST(testFLN(S("roqmkbdtia"), "iogfhpabtjkqlrnemcds", 10, 1, 9)); + BOOST_TEST(testFLN(S("kadsithljf"), "ngridfabjsecpqltkmoh", 10, 10, 7)); + BOOST_TEST(testFLN(S("sgtkpbfdmh"), "athmknplcgofrqejsdib", 10, 19, 5)); + BOOST_TEST(testFLN(S("qgmetnabkl"), "ldobhmqcafnjtkeisgrp", 10, 20, S::npos)); + BOOST_TEST(testFLN(S("cqjohampgd"), "", 11, 0, 9)); + BOOST_TEST(testFLN(S("hobitmpsan"), "aocjb", 11, 0, 9)); + BOOST_TEST(testFLN(S("tjehkpsalm"), "jbrnk", 11, 1, 9)); + BOOST_TEST(testFLN(S("ngfbojitcl"), "tqedg", 11, 2, 9)); + BOOST_TEST(testFLN(S("rcfkdbhgjo"), "nqskp", 11, 4, 9)); + BOOST_TEST(testFLN(S("qghptonrea"), "eaqkl", 11, 5, 7)); + BOOST_TEST(testFLN(S("hnprfgqjdl"), "reaoicljqm", 11, 0, 9)); + BOOST_TEST(testFLN(S("hlmgabenti"), "lsftgajqpm", 11, 1, 9)); + BOOST_TEST(testFLN(S("ofcjanmrbs"), "rlpfogmits", 11, 5, 9)); + BOOST_TEST(testFLN(S("jqedtkornm"), "shkncmiaqj", 11, 9, 7)); + BOOST_TEST(testFLN(S("rfedlasjmg"), "fpnatrhqgs", 11, 10, 8)); + BOOST_TEST(testFLN(S("talpqjsgkm"), "sjclemqhnpdbgikarfot", 11, 0, 9)); + BOOST_TEST(testFLN(S("lrkcbtqpie"), "otcmedjikgsfnqbrhpla", 11, 1, 9)); + BOOST_TEST(testFLN(S("cipogdskjf"), "bonsaefdqiprkhlgtjcm", 11, 10, 8)); + BOOST_TEST(testFLN(S("nqedcojahi"), "egpscmahijlfnkrodqtb", 11, 19, S::npos)); + BOOST_TEST(testFLN(S("hefnrkmctj"), "kmqbfepjthgilscrndoa", 11, 20, S::npos)); + BOOST_TEST(testFLN(S("atqirnmekfjolhpdsgcb"), "", 0, 0, 0)); + BOOST_TEST(testFLN(S("echfkmlpribjnqsaogtd"), "prboq", 0, 0, 0)); + BOOST_TEST(testFLN(S("qnhiftdgcleajbpkrosm"), "fjcqh", 0, 1, 0)); + BOOST_TEST(testFLN(S("chamfknorbedjitgslpq"), "fmosa", 0, 2, 0)); + BOOST_TEST(testFLN(S("njhqpibfmtlkaecdrgso"), "qdbok", 0, 4, 0)); + BOOST_TEST(testFLN(S("ebnghfsqkprmdcljoiat"), "amslg", 0, 5, 0)); + BOOST_TEST(testFLN(S("letjomsgihfrpqbkancd"), "smpltjneqb", 0, 0, 0)); + BOOST_TEST(testFLN(S("nblgoipcrqeaktshjdmf"), "flitskrnge", 0, 1, 0)); + BOOST_TEST(testFLN(S("cehkbngtjoiflqapsmrd"), "pgqihmlbef", 0, 5, 0)); + BOOST_TEST(testFLN(S("mignapfoklbhcqjetdrs"), "cfpdqjtgsb", 0, 9, 0)); + BOOST_TEST(testFLN(S("ceatbhlsqjgpnokfrmdi"), "htpsiaflom", 0, 10, 0)); + BOOST_TEST(testFLN(S("ocihkjgrdelpfnmastqb"), "kpjfiaceghsrdtlbnomq", 0, 0, 0)); + BOOST_TEST(testFLN(S("noelgschdtbrjfmiqkap"), "qhtbomidljgafneksprc", 0, 1, 0)); + BOOST_TEST(testFLN(S("dkclqfombepritjnghas"), "nhtjobkcefldimpsaqgr", 0, 10, 0)); + BOOST_TEST(testFLN(S("miklnresdgbhqcojftap"), "prabcjfqnoeskilmtgdh", 0, 19, S::npos)); + BOOST_TEST(testFLN(S("htbcigojaqmdkfrnlsep"), "dtrgmchilkasqoebfpjn", 0, 20, S::npos)); + BOOST_TEST(testFLN(S("febhmqtjanokscdirpgl"), "", 1, 0, 1)); + BOOST_TEST(testFLN(S("loakbsqjpcrdhftniegm"), "sqome", 1, 0, 1)); + BOOST_TEST(testFLN(S("reagphsqflbitdcjmkno"), "smfte", 1, 1, 1)); + BOOST_TEST(testFLN(S("jitlfrqemsdhkopncabg"), "ciboh", 1, 2, 0)); + BOOST_TEST(testFLN(S("mhtaepscdnrjqgbkifol"), "haois", 1, 4, 0)); + BOOST_TEST(testFLN(S("tocesrfmnglpbjihqadk"), "abfki", 1, 5, 1)); + BOOST_TEST(testFLN(S("lpfmctjrhdagneskbqoi"), "frdkocntmq", 1, 0, 1)); + BOOST_TEST(testFLN(S("lsmqaepkdhncirbtjfgo"), "oasbpedlnr", 1, 1, 1)); + BOOST_TEST(testFLN(S("epoiqmtldrabnkjhcfsg"), "kltqmhgand", 1, 5, 1)); + BOOST_TEST(testFLN(S("emgasrilpknqojhtbdcf"), "gdtfjchpmr", 1, 9, 0)); + BOOST_TEST(testFLN(S("hnfiagdpcklrjetqbsom"), "ponmcqblet", 1, 10, 0)); + BOOST_TEST(testFLN(S("nsdfebgajhmtricpoklq"), "sgphqdnofeiklatbcmjr", 1, 0, 1)); + BOOST_TEST(testFLN(S("atjgfsdlpobmeiqhncrk"), "ljqprsmigtfoneadckbh", 1, 1, 1)); + BOOST_TEST(testFLN(S("sitodfgnrejlahcbmqkp"), "ligeojhafnkmrcsqtbdp", 1, 10, 0)); + BOOST_TEST(testFLN(S("fraghmbiceknltjpqosd"), "lsimqfnjarbopedkhcgt", 1, 19, S::npos)); + BOOST_TEST(testFLN(S("pmafenlhqtdbkirjsogc"), "abedmfjlghniorcqptks", 1, 20, S::npos)); + BOOST_TEST(testFLN(S("pihgmoeqtnakrjslcbfd"), "", 10, 0, 10)); + BOOST_TEST(testFLN(S("gjdkeprctqblnhiafsom"), "hqtoa", 10, 0, 10)); + BOOST_TEST(testFLN(S("mkpnblfdsahrcqijteog"), "cahif", 10, 1, 10)); + BOOST_TEST(testFLN(S("gckarqnelodfjhmbptis"), "kehis", 10, 2, 10)); + BOOST_TEST(testFLN(S("gqpskidtbclomahnrjfe"), "kdlmh", 10, 4, 9)); + BOOST_TEST(testFLN(S("pkldjsqrfgitbhmaecno"), "paeql", 10, 5, 10)); + BOOST_TEST(testFLN(S("aftsijrbeklnmcdqhgop"), "aghoqiefnb", 10, 0, 10)); + BOOST_TEST(testFLN(S("mtlgdrhafjkbiepqnsoc"), "jrbqaikpdo", 10, 1, 10)); + BOOST_TEST(testFLN(S("pqgirnaefthokdmbsclj"), "smjonaeqcl", 10, 5, 10)); + BOOST_TEST(testFLN(S("kpdbgjmtherlsfcqoina"), "eqbdrkcfah", 10, 9, 8)); + BOOST_TEST(testFLN(S("jrlbothiknqmdgcfasep"), "kapmsienhf", 10, 10, 10)); + BOOST_TEST(testFLN(S("mjogldqferckabinptsh"), "jpqotrlenfcsbhkaimdg", 10, 0, 10)); + BOOST_TEST(testFLN(S("apoklnefbhmgqcdrisjt"), "jlbmhnfgtcqprikeados", 10, 1, 10)); + BOOST_TEST(testFLN(S("ifeopcnrjbhkdgatmqls"), "stgbhfmdaljnpqoicker", 10, 10, 8)); + BOOST_TEST(testFLN(S("ckqhaiesmjdnrgolbtpf"), "oihcetflbjagdsrkmqpn", 10, 19, S::npos)); + BOOST_TEST(testFLN(S("bnlgapfimcoterskqdjh"), "adtclebmnpjsrqfkigoh", 10, 20, S::npos)); + BOOST_TEST(testFLN(S("kgdlrobpmjcthqsafeni"), "", 19, 0, 19)); + BOOST_TEST(testFLN(S("dfkechomjapgnslbtqir"), "beafg", 19, 0, 19)); + BOOST_TEST(testFLN(S("rloadknfbqtgmhcsipje"), "iclat", 19, 1, 19)); + BOOST_TEST(testFLN(S("mgjhkolrnadqbpetcifs"), "rkhnf", 19, 2, 19)); + BOOST_TEST(testFLN(S("cmlfakiojdrgtbsphqen"), "clshq", 19, 4, 19)); + BOOST_TEST(testFLN(S("kghbfipeomsntdalrqjc"), "dtcoj", 19, 5, 17)); + BOOST_TEST(testFLN(S("eldiqckrnmtasbghjfpo"), "rqosnjmfth", 19, 0, 19)); + BOOST_TEST(testFLN(S("abqjcfedgotihlnspkrm"), "siatdfqglh", 19, 1, 19)); + BOOST_TEST(testFLN(S("qfbadrtjsimkolcenhpg"), "mrlshtpgjq", 19, 5, 19)); + BOOST_TEST(testFLN(S("abseghclkjqifmtodrnp"), "adlcskgqjt", 19, 9, 19)); + BOOST_TEST(testFLN(S("ibmsnlrjefhtdokacqpg"), "drshcjknaf", 19, 10, 19)); + BOOST_TEST(testFLN(S("mrkfciqjebaponsthldg"), "etsaqroinghpkjdlfcbm", 19, 0, 19)); + BOOST_TEST(testFLN(S("mjkticdeoqshpalrfbgn"), "sgepdnkqliambtrocfhj", 19, 1, 19)); + BOOST_TEST(testFLN(S("rqnoclbdejgiphtfsakm"), "nlmcjaqgbsortfdihkpe", 19, 10, 18)); + BOOST_TEST(testFLN(S("plkqbhmtfaeodjcrsing"), "racfnpmosldibqkghjet", 19, 19, 7)); + BOOST_TEST(testFLN(S("oegalhmstjrfickpbndq"), "fjhdsctkqeiolagrnmbp", 19, 20, S::npos)); + BOOST_TEST(testFLN(S("rdtgjcaohpblniekmsfq"), "", 20, 0, 19)); + BOOST_TEST(testFLN(S("ofkqbnjetrmsaidphglc"), "ejanp", 20, 0, 19)); + BOOST_TEST(testFLN(S("grkpahljcftesdmonqib"), "odife", 20, 1, 19)); + BOOST_TEST(testFLN(S("jimlgbhfqkteospardcn"), "okaqd", 20, 2, 19)); + BOOST_TEST(testFLN(S("gftenihpmslrjkqadcob"), "lcdbi", 20, 4, 18)); + BOOST_TEST(testFLN(S("bmhldogtckrfsanijepq"), "fsqbj", 20, 5, 18)); + BOOST_TEST(testFLN(S("nfqkrpjdesabgtlcmoih"), "bigdomnplq", 20, 0, 19)); + BOOST_TEST(testFLN(S("focalnrpiqmdkstehbjg"), "apiblotgcd", 20, 1, 19)); + BOOST_TEST(testFLN(S("rhqdspkmebiflcotnjga"), "acfhdenops", 20, 5, 18)); + BOOST_TEST(testFLN(S("rahdtmsckfboqlpniegj"), "jopdeamcrk", 20, 9, 18)); + BOOST_TEST(testFLN(S("fbkeiopclstmdqranjhg"), "trqncbkgmh", 20, 10, 17)); + BOOST_TEST(testFLN(S("lifhpdgmbconstjeqark"), "tomglrkencbsfjqpihda", 20, 0, 19)); + BOOST_TEST(testFLN(S("pboqganrhedjmltsicfk"), "gbkhdnpoietfcmrslajq", 20, 1, 19)); + BOOST_TEST(testFLN(S("klchabsimetjnqgorfpd"), "rtfnmbsglkjaichoqedp", 20, 10, 19)); + BOOST_TEST(testFLN(S("sirfgmjqhctndbklaepo"), "ohkmdpfqbsacrtjnlgei", 20, 19, 1)); + BOOST_TEST(testFLN(S("rlbdsiceaonqjtfpghkm"), "dlbrteoisgphmkncajfq", 20, 20, S::npos)); + BOOST_TEST(testFLN(S("ecgdanriptblhjfqskom"), "", 21, 0, 19)); + BOOST_TEST(testFLN(S("fdmiarlpgcskbhoteqjn"), "sjrlo", 21, 0, 19)); + BOOST_TEST(testFLN(S("rlbstjqopignecmfadkh"), "qjpor", 21, 1, 19)); + BOOST_TEST(testFLN(S("grjpqmbshektdolcafni"), "odhfn", 21, 2, 19)); + BOOST_TEST(testFLN(S("sakfcohtqnibprjmlged"), "qtfin", 21, 4, 19)); + BOOST_TEST(testFLN(S("mjtdglasihqpocebrfkn"), "hpqfo", 21, 5, 19)); + BOOST_TEST(testFLN(S("okaplfrntghqbmeicsdj"), "fabmertkos", 21, 0, 19)); + BOOST_TEST(testFLN(S("sahngemrtcjidqbklfpo"), "brqtgkmaej", 21, 1, 19)); + BOOST_TEST(testFLN(S("dlmsipcnekhbgoaftqjr"), "nfrdeihsgl", 21, 5, 18)); + BOOST_TEST(testFLN(S("ahegrmqnoiklpfsdbcjt"), "hlfrosekpi", 21, 9, 19)); + BOOST_TEST(testFLN(S("hdsjbnmlegtkqripacof"), "atgbkrjdsm", 21, 10, 19)); + BOOST_TEST(testFLN(S("pcnedrfjihqbalkgtoms"), "blnrptjgqmaifsdkhoec", 21, 0, 19)); + BOOST_TEST(testFLN(S("qjidealmtpskrbfhocng"), "ctpmdahebfqjgknloris", 21, 1, 19)); + BOOST_TEST(testFLN(S("qeindtagmokpfhsclrbj"), "apnkeqthrmlbfodiscgj", 21, 10, 19)); + BOOST_TEST(testFLN(S("kpfegbjhsrnodltqciam"), "jdgictpframeoqlsbknh", 21, 19, 7)); BOOST_TEST(testFLN(S("hnbrcplsjfgiktoedmaq"), "qprlsfojamgndekthibc", 21, 20, S::npos)); } @@ -5664,966 +5665,966 @@ testReplace() { // replace(size_type pos1, size_type n1, const charT* s, size_type n2); { - fixed_string<20> fs1 = "helloworld"; + static_string<20> fs1 = "helloworld"; BOOST_TEST(fs1.replace(5, 2, fs1.data() + 1, 8) == "helloelloworlrld"); } { - fixed_string<20> fs1 = "helloworld"; + static_string<20> fs1 = "helloworld"; BOOST_TEST(fs1.replace(3, 2, fs1.data() + 2, 2) == "helllworld"); } { - fixed_string<20> fs2 = "0123456789"; + static_string<20> fs2 = "0123456789"; BOOST_TEST(fs2.replace(5, 2, fs2.data(), 2) == "0123401789"); } { - fixed_string<20> fs2 = "0123456789"; + static_string<20> fs2 = "0123456789"; BOOST_TEST(fs2.replace(1, 3, fs2.data() + 1, 5) == "012345456789"); } { - fixed_string<20> fs2 = "0123456789"; + static_string<20> fs2 = "0123456789"; BOOST_TEST(fs2.replace(0, 5, fs2.data(), 5) == "0123456789"); } { - fixed_string<20> fs2 = "0123456789"; + static_string<20> fs2 = "0123456789"; BOOST_TEST(fs2.replace(0, 5, fs2.data() + 5, 5) == "5678956789"); } { - fixed_string<20> fs2 = "0123456789"; + static_string<20> fs2 = "0123456789"; BOOST_TEST(fs2.replace(5, 2, fs2.data() + 3, 5) == "0123434567789"); } { - fixed_string<20> fs2 = "0123456789"; + static_string<20> fs2 = "0123456789"; BOOST_TEST(fs2.replace(5, 2, fs2.data() + 7, 3) == "01234789789"); } { - fixed_string<20> fs2 = "0123456789"; + static_string<20> fs2 = "0123456789"; BOOST_TEST(fs2.replace(3, 5, fs2.data() + 4, 2) == "0124589"); } { - fixed_string<20> fs2 = "0123456789"; + static_string<20> fs2 = "0123456789"; BOOST_TEST(fs2.replace(3, 5, fs2.data() + 1, 3) == "01212389"); } { - fixed_string<20> fs2 = "0123456789"; + static_string<20> fs2 = "0123456789"; BOOST_TEST(fs2.replace(0, 10, fs2.data(), 10) == "0123456789"); } { - fixed_string<20> fs2 = "0123456789"; + static_string<20> fs2 = "0123456789"; BOOST_TEST(fs2.replace(0, 10, fs2.data(), 5) == "01234"); } { - fixed_string<20> fs1 = "helloworld"; + static_string<20> fs1 = "helloworld"; BOOST_TEST(fs1.replace(4, 3, fs1.data() + 1, 3) == "hellellrld"); } { - fixed_string<20> fs1 = "helloworld"; - BOOST_TEST_EQ(fs1.replace(0, 1, fs1.data() + 4, 4), fixed_string<20>("oworelloworld")); + static_string<20> fs1 = "helloworld"; + BOOST_TEST_EQ(fs1.replace(0, 1, fs1.data() + 4, 4), static_string<20>("oworelloworld")); } // replace(size_type pos1, size_type n1, const basic_string& str); { - fixed_string<20> fs1 = "helloworld"; + static_string<20> fs1 = "helloworld"; BOOST_TEST(fs1.replace(0, fs1.size(), fs1) == "helloworld"); } // replace(size_type pos1, size_type n1, const basic_string& str, size_type pos2, size_type n2 = npos); { - fixed_string<20> fs1 = "helloworld"; + static_string<20> fs1 = "helloworld"; BOOST_TEST(fs1.replace(0, fs1.size(), fs1, 0, fs1.size()) == "helloworld"); } // replace(size_type pos1, size_type n1, const T& t); { - fixed_string<20> fs1 = "helloworld"; + static_string<20> fs1 = "helloworld"; BOOST_TEST(fs1.replace(0, fs1.size(), string_view(fs1)) == "helloworld"); } // replace(size_type pos1, size_type n1, const T& t, size_type pos2, size_type n2 = npos); { - fixed_string<20> fs1 = "helloworld"; + static_string<20> fs1 = "helloworld"; BOOST_TEST(fs1.replace(0, fs1.size(), string_view(fs1), 0, fs1.size()) == "helloworld"); } // replace(size_type pos, size_type n, const charT * s); { - fixed_string<20> fs1 = "helloworld"; + static_string<20> fs1 = "helloworld"; BOOST_TEST(fs1.replace(0, fs1.size(), fs1.data()) == "helloworld"); } // replace(size_type pos1, size_type n1, size_type n2, charT c);] { - fixed_string<20> fs1 = "helloworld"; + static_string<20> fs1 = "helloworld"; BOOST_TEST(fs1.replace(0, fs1.size(), fs1.size(), 'a') == "aaaaaaaaaa"); } // replace(const_iterator i1, const_iterator i2, const basic_string& str); { - fixed_string<20> fs1 = "helloworld"; + static_string<20> fs1 = "helloworld"; BOOST_TEST(fs1.replace(fs1.begin(), fs1.end(), fs1) == "helloworld"); } // replace(const_iterator i1, const_iterator i2, const T& t); { - fixed_string<20> fs1 = "helloworld"; + static_string<20> fs1 = "helloworld"; BOOST_TEST(fs1.replace(fs1.begin(), fs1.end(), string_view(fs1)) == "helloworld"); } // replace(const_iterator i1, const_iterator i2, const charT* s, size_type n); { - fixed_string<20> fs1 = "helloworld"; + static_string<20> fs1 = "helloworld"; BOOST_TEST(fs1.replace(fs1.begin(), fs1.end(), fs1.data(), fs1.size()) == "helloworld"); } // replace(const_iterator i1, const_iterator i2, const charT* s); { - fixed_string<20> fs1 = "helloworld"; + static_string<20> fs1 = "helloworld"; BOOST_TEST(fs1.replace(fs1.begin(), fs1.end(), fs1.data()) == "helloworld"); } // replace(const_iterator i1, const_iterator i2, size_type n, charT c); { - fixed_string<20> fs1 = "helloworld"; + static_string<20> fs1 = "helloworld"; BOOST_TEST(fs1.replace(fs1.begin(), fs1.end(), fs1.size(), 'a') == "aaaaaaaaaa"); } // replace(const_iterator i1, const_iterator i2, InputIterator j1, InputIterator j2); { - fixed_string<20> fs1 = "helloworld"; + static_string<20> fs1 = "helloworld"; BOOST_TEST(fs1.replace(fs1.begin(), fs1.end(), fs1.begin(), fs1.end()) == "helloworld"); } // replace(const_iterator i1, const_iterator i2, initializer_list il); { - fixed_string<20> fs1 = "helloworld"; + static_string<20> fs1 = "helloworld"; BOOST_TEST(fs1.replace(fs1.begin(), fs1.end(), {'h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd'}) == "helloworld"); } - using S = fixed_string<400>; - S s_short = "123/"; - S s_long = "Lorem ipsum dolor sit amet, consectetur/"; - + using S = static_string<400>; + S s_short = "123/"; + S s_long = "Lorem ipsum dolor sit amet, consectetur/"; + BOOST_TEST(s_short.replace(s_short.begin(), s_short.begin(), s_short.begin(), s_short.end()) == "123/123/"); BOOST_TEST(s_short.replace(s_short.begin(), s_short.begin(), s_short.begin(), s_short.end()) == "123/123/123/123/"); BOOST_TEST(s_short.replace(s_short.begin(), s_short.begin(), s_short.begin(), s_short.end()) == "123/123/123/123/123/123/123/123/"); BOOST_TEST(s_long.replace(s_long.begin(), s_long.begin(), s_long.begin(), s_long.end()) == "Lorem ipsum dolor sit amet, consectetur/Lorem ipsum dolor sit amet, consectetur/"); - BOOST_TEST(testR(S(""), 0, 0, "", S(""))); - BOOST_TEST(testR(S(""), 0, 0, "12345", S("12345"))); - BOOST_TEST(testR(S(""), 0, 0, "1234567890", S("1234567890"))); - BOOST_TEST(testR(S(""), 0, 0, "12345678901234567890", S("12345678901234567890"))); - BOOST_TEST(testR(S("abcde"), 0, 0, "", S("abcde"))); - BOOST_TEST(testR(S("abcde"), 0, 0, "12345", S("12345abcde"))); - BOOST_TEST(testR(S("abcde"), 0, 0, "1234567890", S("1234567890abcde"))); - BOOST_TEST(testR(S("abcde"), 0, 0, "12345678901234567890", S("12345678901234567890abcde"))); - BOOST_TEST(testR(S("abcde"), 0, 1, "", S("bcde"))); - BOOST_TEST(testR(S("abcde"), 0, 1, "12345", S("12345bcde"))); - BOOST_TEST(testR(S("abcde"), 0, 1, "1234567890", S("1234567890bcde"))); - BOOST_TEST(testR(S("abcde"), 0, 1, "12345678901234567890", S("12345678901234567890bcde"))); - BOOST_TEST(testR(S("abcde"), 0, 2, "", S("cde"))); - BOOST_TEST(testR(S("abcde"), 0, 2, "12345", S("12345cde"))); - BOOST_TEST(testR(S("abcde"), 0, 2, "1234567890", S("1234567890cde"))); - BOOST_TEST(testR(S("abcde"), 0, 2, "12345678901234567890", S("12345678901234567890cde"))); - BOOST_TEST(testR(S("abcde"), 0, 4, "", S("e"))); - BOOST_TEST(testR(S("abcde"), 0, 4, "12345", S("12345e"))); - BOOST_TEST(testR(S("abcde"), 0, 4, "1234567890", S("1234567890e"))); - BOOST_TEST(testR(S("abcde"), 0, 4, "12345678901234567890", S("12345678901234567890e"))); - BOOST_TEST(testR(S("abcde"), 0, 5, "", S(""))); - BOOST_TEST(testR(S("abcde"), 0, 5, "12345", S("12345"))); - BOOST_TEST(testR(S("abcde"), 0, 5, "1234567890", S("1234567890"))); - BOOST_TEST(testR(S("abcde"), 0, 5, "12345678901234567890", S("12345678901234567890"))); - BOOST_TEST(testR(S("abcde"), 1, 0, "", S("abcde"))); - BOOST_TEST(testR(S("abcde"), 1, 0, "12345", S("a12345bcde"))); - BOOST_TEST(testR(S("abcde"), 1, 0, "1234567890", S("a1234567890bcde"))); - BOOST_TEST(testR(S("abcde"), 1, 0, "12345678901234567890", S("a12345678901234567890bcde"))); - BOOST_TEST(testR(S("abcde"), 1, 1, "", S("acde"))); - BOOST_TEST(testR(S("abcde"), 1, 1, "12345", S("a12345cde"))); - BOOST_TEST(testR(S("abcde"), 1, 1, "1234567890", S("a1234567890cde"))); - BOOST_TEST(testR(S("abcde"), 1, 1, "12345678901234567890", S("a12345678901234567890cde"))); - BOOST_TEST(testR(S("abcde"), 1, 2, "", S("ade"))); - BOOST_TEST(testR(S("abcde"), 1, 2, "12345", S("a12345de"))); - BOOST_TEST(testR(S("abcde"), 1, 2, "1234567890", S("a1234567890de"))); - BOOST_TEST(testR(S("abcde"), 1, 2, "12345678901234567890", S("a12345678901234567890de"))); - BOOST_TEST(testR(S("abcde"), 1, 3, "", S("ae"))); - BOOST_TEST(testR(S("abcde"), 1, 3, "12345", S("a12345e"))); - BOOST_TEST(testR(S("abcde"), 1, 3, "1234567890", S("a1234567890e"))); - BOOST_TEST(testR(S("abcde"), 1, 3, "12345678901234567890", S("a12345678901234567890e"))); - BOOST_TEST(testR(S("abcde"), 1, 4, "", S("a"))); - BOOST_TEST(testR(S("abcde"), 1, 4, "12345", S("a12345"))); - BOOST_TEST(testR(S("abcde"), 1, 4, "1234567890", S("a1234567890"))); - BOOST_TEST(testR(S("abcde"), 1, 4, "12345678901234567890", S("a12345678901234567890"))); - BOOST_TEST(testR(S("abcde"), 2, 0, "", S("abcde"))); - BOOST_TEST(testR(S("abcde"), 2, 0, "12345", S("ab12345cde"))); - BOOST_TEST(testR(S("abcde"), 2, 0, "1234567890", S("ab1234567890cde"))); - BOOST_TEST(testR(S("abcde"), 2, 0, "12345678901234567890", S("ab12345678901234567890cde"))); - BOOST_TEST(testR(S("abcde"), 2, 1, "", S("abde"))); - BOOST_TEST(testR(S("abcde"), 2, 1, "12345", S("ab12345de"))); - BOOST_TEST(testR(S("abcde"), 2, 1, "1234567890", S("ab1234567890de"))); - BOOST_TEST(testR(S("abcde"), 2, 1, "12345678901234567890", S("ab12345678901234567890de"))); - BOOST_TEST(testR(S("abcde"), 2, 2, "", S("abe"))); - BOOST_TEST(testR(S("abcde"), 2, 2, "12345", S("ab12345e"))); - BOOST_TEST(testR(S("abcde"), 2, 2, "1234567890", S("ab1234567890e"))); - BOOST_TEST(testR(S("abcde"), 2, 2, "12345678901234567890", S("ab12345678901234567890e"))); - BOOST_TEST(testR(S("abcde"), 2, 3, "", S("ab"))); - BOOST_TEST(testR(S("abcde"), 2, 3, "12345", S("ab12345"))); - BOOST_TEST(testR(S("abcde"), 2, 3, "1234567890", S("ab1234567890"))); - BOOST_TEST(testR(S("abcde"), 2, 3, "12345678901234567890", S("ab12345678901234567890"))); - BOOST_TEST(testR(S("abcde"), 4, 0, "", S("abcde"))); - BOOST_TEST(testR(S("abcde"), 4, 0, "12345", S("abcd12345e"))); - BOOST_TEST(testR(S("abcde"), 4, 0, "1234567890", S("abcd1234567890e"))); - BOOST_TEST(testR(S("abcde"), 4, 0, "12345678901234567890", S("abcd12345678901234567890e"))); - BOOST_TEST(testR(S("abcde"), 4, 1, "", S("abcd"))); - BOOST_TEST(testR(S("abcde"), 4, 1, "12345", S("abcd12345"))); - BOOST_TEST(testR(S("abcde"), 4, 1, "1234567890", S("abcd1234567890"))); - BOOST_TEST(testR(S("abcde"), 4, 1, "12345678901234567890", S("abcd12345678901234567890"))); - BOOST_TEST(testR(S("abcde"), 5, 0, "", S("abcde"))); - BOOST_TEST(testR(S("abcde"), 5, 0, "12345", S("abcde12345"))); - BOOST_TEST(testR(S("abcde"), 5, 0, "1234567890", S("abcde1234567890"))); - BOOST_TEST(testR(S("abcde"), 5, 0, "12345678901234567890", S("abcde12345678901234567890"))); - BOOST_TEST(testR(S("abcdefghij"), 0, 0, "", S("abcdefghij"))); - BOOST_TEST(testR(S("abcdefghij"), 0, 0, "12345", S("12345abcdefghij"))); - BOOST_TEST(testR(S("abcdefghij"), 0, 0, "1234567890", S("1234567890abcdefghij"))); - BOOST_TEST(testR(S("abcdefghij"), 0, 0, "12345678901234567890", S("12345678901234567890abcdefghij"))); - BOOST_TEST(testR(S("abcdefghij"), 0, 1, "", S("bcdefghij"))); - BOOST_TEST(testR(S("abcdefghij"), 0, 1, "12345", S("12345bcdefghij"))); - BOOST_TEST(testR(S("abcdefghij"), 0, 1, "1234567890", S("1234567890bcdefghij"))); - BOOST_TEST(testR(S("abcdefghij"), 0, 1, "12345678901234567890", S("12345678901234567890bcdefghij"))); - BOOST_TEST(testR(S("abcdefghij"), 0, 5, "", S("fghij"))); - BOOST_TEST(testR(S("abcdefghij"), 0, 5, "12345", S("12345fghij"))); - BOOST_TEST(testR(S("abcdefghij"), 0, 5, "1234567890", S("1234567890fghij"))); - BOOST_TEST(testR(S("abcdefghij"), 0, 5, "12345678901234567890", S("12345678901234567890fghij"))); - BOOST_TEST(testR(S("abcdefghij"), 0, 9, "", S("j"))); - BOOST_TEST(testR(S("abcdefghij"), 0, 9, "12345", S("12345j"))); - BOOST_TEST(testR(S("abcdefghij"), 0, 9, "1234567890", S("1234567890j"))); - BOOST_TEST(testR(S("abcdefghij"), 0, 9, "12345678901234567890", S("12345678901234567890j"))); - BOOST_TEST(testR(S("abcdefghij"), 0, 10, "", S(""))); - BOOST_TEST(testR(S("abcdefghij"), 0, 10, "12345", S("12345"))); - BOOST_TEST(testR(S("abcdefghij"), 0, 10, "1234567890", S("1234567890"))); - BOOST_TEST(testR(S("abcdefghij"), 0, 10, "12345678901234567890", S("12345678901234567890"))); - BOOST_TEST(testR(S("abcdefghij"), 1, 0, "", S("abcdefghij"))); - BOOST_TEST(testR(S("abcdefghij"), 1, 0, "12345", S("a12345bcdefghij"))); - BOOST_TEST(testR(S("abcdefghij"), 1, 0, "1234567890", S("a1234567890bcdefghij"))); - BOOST_TEST(testR(S("abcdefghij"), 1, 0, "12345678901234567890", S("a12345678901234567890bcdefghij"))); - BOOST_TEST(testR(S("abcdefghij"), 1, 1, "", S("acdefghij"))); - BOOST_TEST(testR(S("abcdefghij"), 1, 1, "12345", S("a12345cdefghij"))); - BOOST_TEST(testR(S("abcdefghij"), 1, 1, "1234567890", S("a1234567890cdefghij"))); + BOOST_TEST(testR(S(""), 0, 0, "", S(""))); + BOOST_TEST(testR(S(""), 0, 0, "12345", S("12345"))); + BOOST_TEST(testR(S(""), 0, 0, "1234567890", S("1234567890"))); + BOOST_TEST(testR(S(""), 0, 0, "12345678901234567890", S("12345678901234567890"))); + BOOST_TEST(testR(S("abcde"), 0, 0, "", S("abcde"))); + BOOST_TEST(testR(S("abcde"), 0, 0, "12345", S("12345abcde"))); + BOOST_TEST(testR(S("abcde"), 0, 0, "1234567890", S("1234567890abcde"))); + BOOST_TEST(testR(S("abcde"), 0, 0, "12345678901234567890", S("12345678901234567890abcde"))); + BOOST_TEST(testR(S("abcde"), 0, 1, "", S("bcde"))); + BOOST_TEST(testR(S("abcde"), 0, 1, "12345", S("12345bcde"))); + BOOST_TEST(testR(S("abcde"), 0, 1, "1234567890", S("1234567890bcde"))); + BOOST_TEST(testR(S("abcde"), 0, 1, "12345678901234567890", S("12345678901234567890bcde"))); + BOOST_TEST(testR(S("abcde"), 0, 2, "", S("cde"))); + BOOST_TEST(testR(S("abcde"), 0, 2, "12345", S("12345cde"))); + BOOST_TEST(testR(S("abcde"), 0, 2, "1234567890", S("1234567890cde"))); + BOOST_TEST(testR(S("abcde"), 0, 2, "12345678901234567890", S("12345678901234567890cde"))); + BOOST_TEST(testR(S("abcde"), 0, 4, "", S("e"))); + BOOST_TEST(testR(S("abcde"), 0, 4, "12345", S("12345e"))); + BOOST_TEST(testR(S("abcde"), 0, 4, "1234567890", S("1234567890e"))); + BOOST_TEST(testR(S("abcde"), 0, 4, "12345678901234567890", S("12345678901234567890e"))); + BOOST_TEST(testR(S("abcde"), 0, 5, "", S(""))); + BOOST_TEST(testR(S("abcde"), 0, 5, "12345", S("12345"))); + BOOST_TEST(testR(S("abcde"), 0, 5, "1234567890", S("1234567890"))); + BOOST_TEST(testR(S("abcde"), 0, 5, "12345678901234567890", S("12345678901234567890"))); + BOOST_TEST(testR(S("abcde"), 1, 0, "", S("abcde"))); + BOOST_TEST(testR(S("abcde"), 1, 0, "12345", S("a12345bcde"))); + BOOST_TEST(testR(S("abcde"), 1, 0, "1234567890", S("a1234567890bcde"))); + BOOST_TEST(testR(S("abcde"), 1, 0, "12345678901234567890", S("a12345678901234567890bcde"))); + BOOST_TEST(testR(S("abcde"), 1, 1, "", S("acde"))); + BOOST_TEST(testR(S("abcde"), 1, 1, "12345", S("a12345cde"))); + BOOST_TEST(testR(S("abcde"), 1, 1, "1234567890", S("a1234567890cde"))); + BOOST_TEST(testR(S("abcde"), 1, 1, "12345678901234567890", S("a12345678901234567890cde"))); + BOOST_TEST(testR(S("abcde"), 1, 2, "", S("ade"))); + BOOST_TEST(testR(S("abcde"), 1, 2, "12345", S("a12345de"))); + BOOST_TEST(testR(S("abcde"), 1, 2, "1234567890", S("a1234567890de"))); + BOOST_TEST(testR(S("abcde"), 1, 2, "12345678901234567890", S("a12345678901234567890de"))); + BOOST_TEST(testR(S("abcde"), 1, 3, "", S("ae"))); + BOOST_TEST(testR(S("abcde"), 1, 3, "12345", S("a12345e"))); + BOOST_TEST(testR(S("abcde"), 1, 3, "1234567890", S("a1234567890e"))); + BOOST_TEST(testR(S("abcde"), 1, 3, "12345678901234567890", S("a12345678901234567890e"))); + BOOST_TEST(testR(S("abcde"), 1, 4, "", S("a"))); + BOOST_TEST(testR(S("abcde"), 1, 4, "12345", S("a12345"))); + BOOST_TEST(testR(S("abcde"), 1, 4, "1234567890", S("a1234567890"))); + BOOST_TEST(testR(S("abcde"), 1, 4, "12345678901234567890", S("a12345678901234567890"))); + BOOST_TEST(testR(S("abcde"), 2, 0, "", S("abcde"))); + BOOST_TEST(testR(S("abcde"), 2, 0, "12345", S("ab12345cde"))); + BOOST_TEST(testR(S("abcde"), 2, 0, "1234567890", S("ab1234567890cde"))); + BOOST_TEST(testR(S("abcde"), 2, 0, "12345678901234567890", S("ab12345678901234567890cde"))); + BOOST_TEST(testR(S("abcde"), 2, 1, "", S("abde"))); + BOOST_TEST(testR(S("abcde"), 2, 1, "12345", S("ab12345de"))); + BOOST_TEST(testR(S("abcde"), 2, 1, "1234567890", S("ab1234567890de"))); + BOOST_TEST(testR(S("abcde"), 2, 1, "12345678901234567890", S("ab12345678901234567890de"))); + BOOST_TEST(testR(S("abcde"), 2, 2, "", S("abe"))); + BOOST_TEST(testR(S("abcde"), 2, 2, "12345", S("ab12345e"))); + BOOST_TEST(testR(S("abcde"), 2, 2, "1234567890", S("ab1234567890e"))); + BOOST_TEST(testR(S("abcde"), 2, 2, "12345678901234567890", S("ab12345678901234567890e"))); + BOOST_TEST(testR(S("abcde"), 2, 3, "", S("ab"))); + BOOST_TEST(testR(S("abcde"), 2, 3, "12345", S("ab12345"))); + BOOST_TEST(testR(S("abcde"), 2, 3, "1234567890", S("ab1234567890"))); + BOOST_TEST(testR(S("abcde"), 2, 3, "12345678901234567890", S("ab12345678901234567890"))); + BOOST_TEST(testR(S("abcde"), 4, 0, "", S("abcde"))); + BOOST_TEST(testR(S("abcde"), 4, 0, "12345", S("abcd12345e"))); + BOOST_TEST(testR(S("abcde"), 4, 0, "1234567890", S("abcd1234567890e"))); + BOOST_TEST(testR(S("abcde"), 4, 0, "12345678901234567890", S("abcd12345678901234567890e"))); + BOOST_TEST(testR(S("abcde"), 4, 1, "", S("abcd"))); + BOOST_TEST(testR(S("abcde"), 4, 1, "12345", S("abcd12345"))); + BOOST_TEST(testR(S("abcde"), 4, 1, "1234567890", S("abcd1234567890"))); + BOOST_TEST(testR(S("abcde"), 4, 1, "12345678901234567890", S("abcd12345678901234567890"))); + BOOST_TEST(testR(S("abcde"), 5, 0, "", S("abcde"))); + BOOST_TEST(testR(S("abcde"), 5, 0, "12345", S("abcde12345"))); + BOOST_TEST(testR(S("abcde"), 5, 0, "1234567890", S("abcde1234567890"))); + BOOST_TEST(testR(S("abcde"), 5, 0, "12345678901234567890", S("abcde12345678901234567890"))); + BOOST_TEST(testR(S("abcdefghij"), 0, 0, "", S("abcdefghij"))); + BOOST_TEST(testR(S("abcdefghij"), 0, 0, "12345", S("12345abcdefghij"))); + BOOST_TEST(testR(S("abcdefghij"), 0, 0, "1234567890", S("1234567890abcdefghij"))); + BOOST_TEST(testR(S("abcdefghij"), 0, 0, "12345678901234567890", S("12345678901234567890abcdefghij"))); + BOOST_TEST(testR(S("abcdefghij"), 0, 1, "", S("bcdefghij"))); + BOOST_TEST(testR(S("abcdefghij"), 0, 1, "12345", S("12345bcdefghij"))); + BOOST_TEST(testR(S("abcdefghij"), 0, 1, "1234567890", S("1234567890bcdefghij"))); + BOOST_TEST(testR(S("abcdefghij"), 0, 1, "12345678901234567890", S("12345678901234567890bcdefghij"))); + BOOST_TEST(testR(S("abcdefghij"), 0, 5, "", S("fghij"))); + BOOST_TEST(testR(S("abcdefghij"), 0, 5, "12345", S("12345fghij"))); + BOOST_TEST(testR(S("abcdefghij"), 0, 5, "1234567890", S("1234567890fghij"))); + BOOST_TEST(testR(S("abcdefghij"), 0, 5, "12345678901234567890", S("12345678901234567890fghij"))); + BOOST_TEST(testR(S("abcdefghij"), 0, 9, "", S("j"))); + BOOST_TEST(testR(S("abcdefghij"), 0, 9, "12345", S("12345j"))); + BOOST_TEST(testR(S("abcdefghij"), 0, 9, "1234567890", S("1234567890j"))); + BOOST_TEST(testR(S("abcdefghij"), 0, 9, "12345678901234567890", S("12345678901234567890j"))); + BOOST_TEST(testR(S("abcdefghij"), 0, 10, "", S(""))); + BOOST_TEST(testR(S("abcdefghij"), 0, 10, "12345", S("12345"))); + BOOST_TEST(testR(S("abcdefghij"), 0, 10, "1234567890", S("1234567890"))); + BOOST_TEST(testR(S("abcdefghij"), 0, 10, "12345678901234567890", S("12345678901234567890"))); + BOOST_TEST(testR(S("abcdefghij"), 1, 0, "", S("abcdefghij"))); + BOOST_TEST(testR(S("abcdefghij"), 1, 0, "12345", S("a12345bcdefghij"))); + BOOST_TEST(testR(S("abcdefghij"), 1, 0, "1234567890", S("a1234567890bcdefghij"))); + BOOST_TEST(testR(S("abcdefghij"), 1, 0, "12345678901234567890", S("a12345678901234567890bcdefghij"))); + BOOST_TEST(testR(S("abcdefghij"), 1, 1, "", S("acdefghij"))); + BOOST_TEST(testR(S("abcdefghij"), 1, 1, "12345", S("a12345cdefghij"))); + BOOST_TEST(testR(S("abcdefghij"), 1, 1, "1234567890", S("a1234567890cdefghij"))); BOOST_TEST(testR(S("abcdefghij"), 1, 1, "12345678901234567890", S("a12345678901234567890cdefghij"))); - BOOST_TEST(testR(S(""), 0, 0, 0, '2', S(""))); - BOOST_TEST(testR(S(""), 0, 0, 5, '2', S("22222"))); - BOOST_TEST(testR(S(""), 0, 0, 10, '2', S("2222222222"))); - BOOST_TEST(testR(S(""), 0, 0, 20, '2', S("22222222222222222222"))); - BOOST_TEST(testR(S(""), 0, 1, 0, '2', S(""))); - BOOST_TEST(testR(S(""), 0, 1, 5, '2', S("22222"))); - BOOST_TEST(testR(S(""), 0, 1, 10, '2', S("2222222222"))); - BOOST_TEST(testR(S(""), 0, 1, 20, '2', S("22222222222222222222"))); - BOOST_TEST(testR(S("abcde"), 0, 0, 0, '2', S("abcde"))); - BOOST_TEST(testR(S("abcde"), 0, 0, 5, '2', S("22222abcde"))); - BOOST_TEST(testR(S("abcde"), 0, 0, 10, '2', S("2222222222abcde"))); - BOOST_TEST(testR(S("abcde"), 0, 0, 20, '2', S("22222222222222222222abcde"))); - BOOST_TEST(testR(S("abcde"), 0, 1, 0, '2', S("bcde"))); - BOOST_TEST(testR(S("abcde"), 0, 1, 5, '2', S("22222bcde"))); - BOOST_TEST(testR(S("abcde"), 0, 1, 10, '2', S("2222222222bcde"))); - BOOST_TEST(testR(S("abcde"), 0, 1, 20, '2', S("22222222222222222222bcde"))); - BOOST_TEST(testR(S("abcde"), 0, 2, 0, '2', S("cde"))); - BOOST_TEST(testR(S("abcde"), 0, 2, 5, '2', S("22222cde"))); - BOOST_TEST(testR(S("abcde"), 0, 2, 10, '2', S("2222222222cde"))); - BOOST_TEST(testR(S("abcde"), 0, 2, 20, '2', S("22222222222222222222cde"))); - BOOST_TEST(testR(S("abcde"), 0, 4, 0, '2', S("e"))); - BOOST_TEST(testR(S("abcde"), 0, 4, 5, '2', S("22222e"))); - BOOST_TEST(testR(S("abcde"), 0, 4, 10, '2', S("2222222222e"))); - BOOST_TEST(testR(S("abcde"), 0, 4, 20, '2', S("22222222222222222222e"))); - BOOST_TEST(testR(S("abcde"), 0, 5, 0, '2', S(""))); - BOOST_TEST(testR(S("abcde"), 0, 5, 5, '2', S("22222"))); - BOOST_TEST(testR(S("abcde"), 0, 5, 10, '2', S("2222222222"))); - BOOST_TEST(testR(S("abcde"), 0, 5, 20, '2', S("22222222222222222222"))); - BOOST_TEST(testR(S("abcde"), 0, 6, 0, '2', S(""))); - BOOST_TEST(testR(S("abcde"), 0, 6, 5, '2', S("22222"))); - BOOST_TEST(testR(S("abcde"), 0, 6, 10, '2', S("2222222222"))); - BOOST_TEST(testR(S("abcde"), 0, 6, 20, '2', S("22222222222222222222"))); - BOOST_TEST(testR(S("abcde"), 1, 0, 0, '2', S("abcde"))); - BOOST_TEST(testR(S("abcde"), 1, 0, 5, '2', S("a22222bcde"))); - BOOST_TEST(testR(S("abcde"), 1, 0, 10, '2', S("a2222222222bcde"))); - BOOST_TEST(testR(S("abcde"), 1, 0, 20, '2', S("a22222222222222222222bcde"))); - BOOST_TEST(testR(S("abcde"), 1, 1, 0, '2', S("acde"))); - BOOST_TEST(testR(S("abcde"), 1, 1, 5, '2', S("a22222cde"))); - BOOST_TEST(testR(S("abcde"), 1, 1, 10, '2', S("a2222222222cde"))); - BOOST_TEST(testR(S("abcde"), 1, 1, 20, '2', S("a22222222222222222222cde"))); - BOOST_TEST(testR(S("abcde"), 1, 2, 0, '2', S("ade"))); - BOOST_TEST(testR(S("abcde"), 1, 2, 5, '2', S("a22222de"))); - BOOST_TEST(testR(S("abcde"), 1, 2, 10, '2', S("a2222222222de"))); - BOOST_TEST(testR(S("abcde"), 1, 2, 20, '2', S("a22222222222222222222de"))); - BOOST_TEST(testR(S("abcde"), 1, 3, 0, '2', S("ae"))); - BOOST_TEST(testR(S("abcde"), 1, 3, 5, '2', S("a22222e"))); - BOOST_TEST(testR(S("abcde"), 1, 3, 10, '2', S("a2222222222e"))); - BOOST_TEST(testR(S("abcde"), 1, 3, 20, '2', S("a22222222222222222222e"))); - BOOST_TEST(testR(S("abcde"), 1, 4, 0, '2', S("a"))); - BOOST_TEST(testR(S("abcde"), 1, 4, 5, '2', S("a22222"))); - BOOST_TEST(testR(S("abcde"), 1, 4, 10, '2', S("a2222222222"))); - BOOST_TEST(testR(S("abcde"), 1, 4, 20, '2', S("a22222222222222222222"))); - BOOST_TEST(testR(S("abcde"), 1, 5, 0, '2', S("a"))); - BOOST_TEST(testR(S("abcde"), 1, 5, 5, '2', S("a22222"))); - BOOST_TEST(testR(S("abcde"), 1, 5, 10, '2', S("a2222222222"))); - BOOST_TEST(testR(S("abcde"), 1, 5, 20, '2', S("a22222222222222222222"))); - BOOST_TEST(testR(S("abcde"), 2, 0, 0, '2', S("abcde"))); - BOOST_TEST(testR(S("abcde"), 2, 0, 5, '2', S("ab22222cde"))); - BOOST_TEST(testR(S("abcde"), 2, 0, 10, '2', S("ab2222222222cde"))); - BOOST_TEST(testR(S("abcde"), 2, 0, 20, '2', S("ab22222222222222222222cde"))); - BOOST_TEST(testR(S("abcde"), 2, 1, 0, '2', S("abde"))); - BOOST_TEST(testR(S("abcde"), 2, 1, 5, '2', S("ab22222de"))); - BOOST_TEST(testR(S("abcde"), 2, 1, 10, '2', S("ab2222222222de"))); - BOOST_TEST(testR(S("abcde"), 2, 1, 20, '2', S("ab22222222222222222222de"))); - BOOST_TEST(testR(S("abcde"), 2, 2, 0, '2', S("abe"))); - BOOST_TEST(testR(S("abcde"), 2, 2, 5, '2', S("ab22222e"))); - BOOST_TEST(testR(S("abcde"), 2, 2, 10, '2', S("ab2222222222e"))); - BOOST_TEST(testR(S("abcde"), 2, 2, 20, '2', S("ab22222222222222222222e"))); - BOOST_TEST(testR(S("abcde"), 2, 3, 0, '2', S("ab"))); - BOOST_TEST(testR(S("abcde"), 2, 3, 5, '2', S("ab22222"))); - BOOST_TEST(testR(S("abcde"), 2, 3, 10, '2', S("ab2222222222"))); - BOOST_TEST(testR(S("abcde"), 2, 3, 20, '2', S("ab22222222222222222222"))); - BOOST_TEST(testR(S("abcde"), 2, 4, 0, '2', S("ab"))); - BOOST_TEST(testR(S("abcde"), 2, 4, 5, '2', S("ab22222"))); - BOOST_TEST(testR(S("abcde"), 2, 4, 10, '2', S("ab2222222222"))); - BOOST_TEST(testR(S("abcde"), 2, 4, 20, '2', S("ab22222222222222222222"))); - BOOST_TEST(testR(S("abcde"), 4, 0, 0, '2', S("abcde"))); - BOOST_TEST(testR(S("abcde"), 4, 0, 5, '2', S("abcd22222e"))); - BOOST_TEST(testR(S("abcde"), 4, 0, 10, '2', S("abcd2222222222e"))); - BOOST_TEST(testR(S("abcde"), 4, 0, 20, '2', S("abcd22222222222222222222e"))); - BOOST_TEST(testR(S("abcde"), 4, 1, 0, '2', S("abcd"))); - BOOST_TEST(testR(S("abcde"), 4, 1, 5, '2', S("abcd22222"))); - BOOST_TEST(testR(S("abcde"), 4, 1, 10, '2', S("abcd2222222222"))); - BOOST_TEST(testR(S("abcde"), 4, 1, 20, '2', S("abcd22222222222222222222"))); - BOOST_TEST(testR(S("abcde"), 4, 2, 0, '2', S("abcd"))); - - BOOST_TEST(testR(S("abcde"), 4, 2, 5, '2', S("abcd22222"))); - BOOST_TEST(testR(S("abcde"), 4, 2, 10, '2', S("abcd2222222222"))); - BOOST_TEST(testR(S("abcde"), 4, 2, 20, '2', S("abcd22222222222222222222"))); - - BOOST_TEST(testR(S("abcde"), 5, 0, 0, '2', S("abcde"))); - BOOST_TEST(testR(S("abcde"), 5, 0, 5, '2', S("abcde22222"))); - BOOST_TEST(testR(S("abcde"), 5, 0, 10, '2', S("abcde2222222222"))); - BOOST_TEST(testR(S("abcde"), 5, 0, 20, '2', S("abcde22222222222222222222"))); - - BOOST_TEST(testR(S("abcde"), 5, 1, 0, '2', S("abcde"))); - BOOST_TEST(testR(S("abcde"), 5, 1, 5, '2', S("abcde22222"))); - BOOST_TEST(testR(S("abcde"), 5, 1, 10, '2', S("abcde2222222222"))); + BOOST_TEST(testR(S(""), 0, 0, 0, '2', S(""))); + BOOST_TEST(testR(S(""), 0, 0, 5, '2', S("22222"))); + BOOST_TEST(testR(S(""), 0, 0, 10, '2', S("2222222222"))); + BOOST_TEST(testR(S(""), 0, 0, 20, '2', S("22222222222222222222"))); + BOOST_TEST(testR(S(""), 0, 1, 0, '2', S(""))); + BOOST_TEST(testR(S(""), 0, 1, 5, '2', S("22222"))); + BOOST_TEST(testR(S(""), 0, 1, 10, '2', S("2222222222"))); + BOOST_TEST(testR(S(""), 0, 1, 20, '2', S("22222222222222222222"))); + BOOST_TEST(testR(S("abcde"), 0, 0, 0, '2', S("abcde"))); + BOOST_TEST(testR(S("abcde"), 0, 0, 5, '2', S("22222abcde"))); + BOOST_TEST(testR(S("abcde"), 0, 0, 10, '2', S("2222222222abcde"))); + BOOST_TEST(testR(S("abcde"), 0, 0, 20, '2', S("22222222222222222222abcde"))); + BOOST_TEST(testR(S("abcde"), 0, 1, 0, '2', S("bcde"))); + BOOST_TEST(testR(S("abcde"), 0, 1, 5, '2', S("22222bcde"))); + BOOST_TEST(testR(S("abcde"), 0, 1, 10, '2', S("2222222222bcde"))); + BOOST_TEST(testR(S("abcde"), 0, 1, 20, '2', S("22222222222222222222bcde"))); + BOOST_TEST(testR(S("abcde"), 0, 2, 0, '2', S("cde"))); + BOOST_TEST(testR(S("abcde"), 0, 2, 5, '2', S("22222cde"))); + BOOST_TEST(testR(S("abcde"), 0, 2, 10, '2', S("2222222222cde"))); + BOOST_TEST(testR(S("abcde"), 0, 2, 20, '2', S("22222222222222222222cde"))); + BOOST_TEST(testR(S("abcde"), 0, 4, 0, '2', S("e"))); + BOOST_TEST(testR(S("abcde"), 0, 4, 5, '2', S("22222e"))); + BOOST_TEST(testR(S("abcde"), 0, 4, 10, '2', S("2222222222e"))); + BOOST_TEST(testR(S("abcde"), 0, 4, 20, '2', S("22222222222222222222e"))); + BOOST_TEST(testR(S("abcde"), 0, 5, 0, '2', S(""))); + BOOST_TEST(testR(S("abcde"), 0, 5, 5, '2', S("22222"))); + BOOST_TEST(testR(S("abcde"), 0, 5, 10, '2', S("2222222222"))); + BOOST_TEST(testR(S("abcde"), 0, 5, 20, '2', S("22222222222222222222"))); + BOOST_TEST(testR(S("abcde"), 0, 6, 0, '2', S(""))); + BOOST_TEST(testR(S("abcde"), 0, 6, 5, '2', S("22222"))); + BOOST_TEST(testR(S("abcde"), 0, 6, 10, '2', S("2222222222"))); + BOOST_TEST(testR(S("abcde"), 0, 6, 20, '2', S("22222222222222222222"))); + BOOST_TEST(testR(S("abcde"), 1, 0, 0, '2', S("abcde"))); + BOOST_TEST(testR(S("abcde"), 1, 0, 5, '2', S("a22222bcde"))); + BOOST_TEST(testR(S("abcde"), 1, 0, 10, '2', S("a2222222222bcde"))); + BOOST_TEST(testR(S("abcde"), 1, 0, 20, '2', S("a22222222222222222222bcde"))); + BOOST_TEST(testR(S("abcde"), 1, 1, 0, '2', S("acde"))); + BOOST_TEST(testR(S("abcde"), 1, 1, 5, '2', S("a22222cde"))); + BOOST_TEST(testR(S("abcde"), 1, 1, 10, '2', S("a2222222222cde"))); + BOOST_TEST(testR(S("abcde"), 1, 1, 20, '2', S("a22222222222222222222cde"))); + BOOST_TEST(testR(S("abcde"), 1, 2, 0, '2', S("ade"))); + BOOST_TEST(testR(S("abcde"), 1, 2, 5, '2', S("a22222de"))); + BOOST_TEST(testR(S("abcde"), 1, 2, 10, '2', S("a2222222222de"))); + BOOST_TEST(testR(S("abcde"), 1, 2, 20, '2', S("a22222222222222222222de"))); + BOOST_TEST(testR(S("abcde"), 1, 3, 0, '2', S("ae"))); + BOOST_TEST(testR(S("abcde"), 1, 3, 5, '2', S("a22222e"))); + BOOST_TEST(testR(S("abcde"), 1, 3, 10, '2', S("a2222222222e"))); + BOOST_TEST(testR(S("abcde"), 1, 3, 20, '2', S("a22222222222222222222e"))); + BOOST_TEST(testR(S("abcde"), 1, 4, 0, '2', S("a"))); + BOOST_TEST(testR(S("abcde"), 1, 4, 5, '2', S("a22222"))); + BOOST_TEST(testR(S("abcde"), 1, 4, 10, '2', S("a2222222222"))); + BOOST_TEST(testR(S("abcde"), 1, 4, 20, '2', S("a22222222222222222222"))); + BOOST_TEST(testR(S("abcde"), 1, 5, 0, '2', S("a"))); + BOOST_TEST(testR(S("abcde"), 1, 5, 5, '2', S("a22222"))); + BOOST_TEST(testR(S("abcde"), 1, 5, 10, '2', S("a2222222222"))); + BOOST_TEST(testR(S("abcde"), 1, 5, 20, '2', S("a22222222222222222222"))); + BOOST_TEST(testR(S("abcde"), 2, 0, 0, '2', S("abcde"))); + BOOST_TEST(testR(S("abcde"), 2, 0, 5, '2', S("ab22222cde"))); + BOOST_TEST(testR(S("abcde"), 2, 0, 10, '2', S("ab2222222222cde"))); + BOOST_TEST(testR(S("abcde"), 2, 0, 20, '2', S("ab22222222222222222222cde"))); + BOOST_TEST(testR(S("abcde"), 2, 1, 0, '2', S("abde"))); + BOOST_TEST(testR(S("abcde"), 2, 1, 5, '2', S("ab22222de"))); + BOOST_TEST(testR(S("abcde"), 2, 1, 10, '2', S("ab2222222222de"))); + BOOST_TEST(testR(S("abcde"), 2, 1, 20, '2', S("ab22222222222222222222de"))); + BOOST_TEST(testR(S("abcde"), 2, 2, 0, '2', S("abe"))); + BOOST_TEST(testR(S("abcde"), 2, 2, 5, '2', S("ab22222e"))); + BOOST_TEST(testR(S("abcde"), 2, 2, 10, '2', S("ab2222222222e"))); + BOOST_TEST(testR(S("abcde"), 2, 2, 20, '2', S("ab22222222222222222222e"))); + BOOST_TEST(testR(S("abcde"), 2, 3, 0, '2', S("ab"))); + BOOST_TEST(testR(S("abcde"), 2, 3, 5, '2', S("ab22222"))); + BOOST_TEST(testR(S("abcde"), 2, 3, 10, '2', S("ab2222222222"))); + BOOST_TEST(testR(S("abcde"), 2, 3, 20, '2', S("ab22222222222222222222"))); + BOOST_TEST(testR(S("abcde"), 2, 4, 0, '2', S("ab"))); + BOOST_TEST(testR(S("abcde"), 2, 4, 5, '2', S("ab22222"))); + BOOST_TEST(testR(S("abcde"), 2, 4, 10, '2', S("ab2222222222"))); + BOOST_TEST(testR(S("abcde"), 2, 4, 20, '2', S("ab22222222222222222222"))); + BOOST_TEST(testR(S("abcde"), 4, 0, 0, '2', S("abcde"))); + BOOST_TEST(testR(S("abcde"), 4, 0, 5, '2', S("abcd22222e"))); + BOOST_TEST(testR(S("abcde"), 4, 0, 10, '2', S("abcd2222222222e"))); + BOOST_TEST(testR(S("abcde"), 4, 0, 20, '2', S("abcd22222222222222222222e"))); + BOOST_TEST(testR(S("abcde"), 4, 1, 0, '2', S("abcd"))); + BOOST_TEST(testR(S("abcde"), 4, 1, 5, '2', S("abcd22222"))); + BOOST_TEST(testR(S("abcde"), 4, 1, 10, '2', S("abcd2222222222"))); + BOOST_TEST(testR(S("abcde"), 4, 1, 20, '2', S("abcd22222222222222222222"))); + BOOST_TEST(testR(S("abcde"), 4, 2, 0, '2', S("abcd"))); + + BOOST_TEST(testR(S("abcde"), 4, 2, 5, '2', S("abcd22222"))); + BOOST_TEST(testR(S("abcde"), 4, 2, 10, '2', S("abcd2222222222"))); + BOOST_TEST(testR(S("abcde"), 4, 2, 20, '2', S("abcd22222222222222222222"))); + + BOOST_TEST(testR(S("abcde"), 5, 0, 0, '2', S("abcde"))); + BOOST_TEST(testR(S("abcde"), 5, 0, 5, '2', S("abcde22222"))); + BOOST_TEST(testR(S("abcde"), 5, 0, 10, '2', S("abcde2222222222"))); + BOOST_TEST(testR(S("abcde"), 5, 0, 20, '2', S("abcde22222222222222222222"))); + + BOOST_TEST(testR(S("abcde"), 5, 1, 0, '2', S("abcde"))); + BOOST_TEST(testR(S("abcde"), 5, 1, 5, '2', S("abcde22222"))); + BOOST_TEST(testR(S("abcde"), 5, 1, 10, '2', S("abcde2222222222"))); BOOST_TEST(testR(S("abcde"), 5, 1, 20, '2', S("abcde22222222222222222222"))); - BOOST_TEST(testR(S("abcde"), 0, 4, "12345", 4, S("1234e"))); - BOOST_TEST(testR(S("abcde"), 0, 4, "12345", 5, S("12345e"))); - BOOST_TEST(testR(S("abcde"), 0, 4, "1234567890", 0, S("e"))); - BOOST_TEST(testR(S("abcde"), 0, 4, "1234567890", 1, S("1e"))); - BOOST_TEST(testR(S("abcde"), 0, 4, "1234567890", 5, S("12345e"))); - BOOST_TEST(testR(S("abcde"), 0, 4, "1234567890", 9, S("123456789e"))); - BOOST_TEST(testR(S("abcde"), 0, 4, "1234567890", 10, S("1234567890e"))); - BOOST_TEST(testR(S("abcde"), 0, 4, "12345678901234567890", 0, S("e"))); - BOOST_TEST(testR(S("abcde"), 0, 4, "12345678901234567890", 1, S("1e"))); - BOOST_TEST(testR(S("abcde"), 0, 4, "12345678901234567890", 10, S("1234567890e"))); - BOOST_TEST(testR(S("abcde"), 0, 4, "12345678901234567890", 19, S("1234567890123456789e"))); - BOOST_TEST(testR(S("abcde"), 0, 4, "12345678901234567890", 20, S("12345678901234567890e"))); - BOOST_TEST(testR(S("abcde"), 0, 5, "", 0, S(""))); - BOOST_TEST(testR(S("abcde"), 0, 5, "12345", 0, S(""))); - BOOST_TEST(testR(S("abcde"), 0, 5, "12345", 1, S("1"))); - BOOST_TEST(testR(S("abcde"), 0, 5, "12345", 2, S("12"))); - BOOST_TEST(testR(S("abcde"), 0, 5, "12345", 4, S("1234"))); - BOOST_TEST(testR(S("abcde"), 0, 5, "12345", 5, S("12345"))); - BOOST_TEST(testR(S("abcde"), 0, 5, "1234567890", 0, S(""))); - BOOST_TEST(testR(S("abcde"), 0, 5, "1234567890", 1, S("1"))); - BOOST_TEST(testR(S("abcde"), 0, 5, "1234567890", 5, S("12345"))); - BOOST_TEST(testR(S("abcde"), 0, 5, "1234567890", 9, S("123456789"))); - BOOST_TEST(testR(S("abcde"), 0, 5, "1234567890", 10, S("1234567890"))); - BOOST_TEST(testR(S("abcde"), 0, 5, "12345678901234567890", 0, S(""))); - BOOST_TEST(testR(S("abcde"), 0, 5, "12345678901234567890", 1, S("1"))); - BOOST_TEST(testR(S("abcde"), 0, 5, "12345678901234567890", 10, S("1234567890"))); - BOOST_TEST(testR(S("abcde"), 0, 5, "12345678901234567890", 19, S("1234567890123456789"))); - BOOST_TEST(testR(S("abcde"), 0, 5, "12345678901234567890", 20, S("12345678901234567890"))); - BOOST_TEST(testR(S("abcde"), 0, 6, "", 0, S(""))); - BOOST_TEST(testR(S("abcde"), 0, 6, "12345", 0, S(""))); - BOOST_TEST(testR(S("abcde"), 0, 6, "12345", 1, S("1"))); - BOOST_TEST(testR(S("abcde"), 0, 6, "12345", 2, S("12"))); - BOOST_TEST(testR(S("abcde"), 0, 6, "12345", 4, S("1234"))); - BOOST_TEST(testR(S("abcde"), 0, 6, "12345", 5, S("12345"))); - BOOST_TEST(testR(S("abcde"), 0, 6, "1234567890", 0, S(""))); - BOOST_TEST(testR(S("abcde"), 0, 6, "1234567890", 1, S("1"))); - BOOST_TEST(testR(S("abcde"), 0, 6, "1234567890", 5, S("12345"))); - BOOST_TEST(testR(S("abcde"), 0, 6, "1234567890", 9, S("123456789"))); - BOOST_TEST(testR(S("abcde"), 0, 6, "1234567890", 10, S("1234567890"))); - BOOST_TEST(testR(S("abcde"), 0, 6, "12345678901234567890", 0, S(""))); - BOOST_TEST(testR(S("abcde"), 0, 6, "12345678901234567890", 1, S("1"))); - BOOST_TEST(testR(S("abcde"), 0, 6, "12345678901234567890", 10, S("1234567890"))); - BOOST_TEST(testR(S("abcde"), 0, 6, "12345678901234567890", 19, S("1234567890123456789"))); - BOOST_TEST(testR(S("abcde"), 0, 6, "12345678901234567890", 20, S("12345678901234567890"))); - BOOST_TEST(testR(S("abcde"), 1, 0, "", 0, S("abcde"))); - BOOST_TEST(testR(S("abcde"), 1, 0, "12345", 0, S("abcde"))); - BOOST_TEST(testR(S("abcde"), 1, 0, "12345", 1, S("a1bcde"))); - BOOST_TEST(testR(S("abcde"), 1, 0, "12345", 2, S("a12bcde"))); - BOOST_TEST(testR(S("abcde"), 1, 0, "12345", 4, S("a1234bcde"))); - BOOST_TEST(testR(S("abcde"), 1, 0, "12345", 5, S("a12345bcde"))); - BOOST_TEST(testR(S("abcde"), 1, 0, "1234567890", 0, S("abcde"))); - BOOST_TEST(testR(S("abcde"), 1, 0, "1234567890", 1, S("a1bcde"))); - BOOST_TEST(testR(S("abcde"), 1, 0, "1234567890", 5, S("a12345bcde"))); - BOOST_TEST(testR(S("abcde"), 1, 0, "1234567890", 9, S("a123456789bcde"))); - BOOST_TEST(testR(S("abcde"), 1, 0, "1234567890", 10, S("a1234567890bcde"))); - BOOST_TEST(testR(S("abcde"), 1, 0, "12345678901234567890", 0, S("abcde"))); - BOOST_TEST(testR(S("abcde"), 1, 0, "12345678901234567890", 1, S("a1bcde"))); - BOOST_TEST(testR(S("abcde"), 1, 0, "12345678901234567890", 10, S("a1234567890bcde"))); - BOOST_TEST(testR(S("abcde"), 1, 0, "12345678901234567890", 19, S("a1234567890123456789bcde"))); - BOOST_TEST(testR(S("abcde"), 1, 0, "12345678901234567890", 20, S("a12345678901234567890bcde"))); - BOOST_TEST(testR(S("abcde"), 1, 1, "", 0, S("acde"))); - BOOST_TEST(testR(S("abcde"), 1, 1, "12345", 0, S("acde"))); - BOOST_TEST(testR(S("abcde"), 1, 1, "12345", 1, S("a1cde"))); - BOOST_TEST(testR(S("abcde"), 1, 1, "12345", 2, S("a12cde"))); - BOOST_TEST(testR(S("abcde"), 1, 1, "12345", 4, S("a1234cde"))); - BOOST_TEST(testR(S("abcde"), 1, 1, "12345", 5, S("a12345cde"))); - BOOST_TEST(testR(S("abcde"), 1, 1, "1234567890", 0, S("acde"))); - BOOST_TEST(testR(S("abcde"), 1, 1, "1234567890", 1, S("a1cde"))); - BOOST_TEST(testR(S("abcde"), 1, 1, "1234567890", 5, S("a12345cde"))); - BOOST_TEST(testR(S("abcde"), 1, 1, "1234567890", 9, S("a123456789cde"))); - BOOST_TEST(testR(S("abcde"), 1, 1, "1234567890", 10, S("a1234567890cde"))); - BOOST_TEST(testR(S("abcde"), 1, 1, "12345678901234567890", 0, S("acde"))); - BOOST_TEST(testR(S("abcde"), 1, 1, "12345678901234567890", 1, S("a1cde"))); - BOOST_TEST(testR(S("abcde"), 1, 1, "12345678901234567890", 10, S("a1234567890cde"))); - BOOST_TEST(testR(S("abcde"), 1, 1, "12345678901234567890", 19, S("a1234567890123456789cde"))); - BOOST_TEST(testR(S("abcde"), 1, 1, "12345678901234567890", 20, S("a12345678901234567890cde"))); - BOOST_TEST(testR(S("abcde"), 1, 2, "", 0, S("ade"))); - BOOST_TEST(testR(S("abcde"), 1, 2, "12345", 0, S("ade"))); - BOOST_TEST(testR(S("abcde"), 1, 2, "12345", 1, S("a1de"))); - BOOST_TEST(testR(S("abcde"), 1, 2, "12345", 2, S("a12de"))); - BOOST_TEST(testR(S("abcde"), 1, 2, "12345", 4, S("a1234de"))); - BOOST_TEST(testR(S("abcde"), 1, 2, "12345", 5, S("a12345de"))); - BOOST_TEST(testR(S("abcde"), 1, 2, "1234567890", 0, S("ade"))); - BOOST_TEST(testR(S("abcde"), 1, 2, "1234567890", 1, S("a1de"))); - BOOST_TEST(testR(S("abcde"), 1, 2, "1234567890", 5, S("a12345de"))); - BOOST_TEST(testR(S("abcde"), 1, 2, "1234567890", 9, S("a123456789de"))); - BOOST_TEST(testR(S("abcde"), 1, 2, "1234567890", 10, S("a1234567890de"))); - BOOST_TEST(testR(S("abcde"), 1, 2, "12345678901234567890", 0, S("ade"))); - BOOST_TEST(testR(S("abcde"), 1, 2, "12345678901234567890", 1, S("a1de"))); - BOOST_TEST(testR(S("abcde"), 1, 2, "12345678901234567890", 10, S("a1234567890de"))); - BOOST_TEST(testR(S("abcde"), 1, 2, "12345678901234567890", 19, S("a1234567890123456789de"))); - BOOST_TEST(testR(S("abcde"), 1, 2, "12345678901234567890", 20, S("a12345678901234567890de"))); - BOOST_TEST(testR(S("abcde"), 1, 3, "", 0, S("ae"))); - BOOST_TEST(testR(S("abcde"), 1, 3, "12345", 0, S("ae"))); - BOOST_TEST(testR(S("abcde"), 1, 3, "12345", 1, S("a1e"))); - BOOST_TEST(testR(S("abcde"), 1, 3, "12345", 2, S("a12e"))); - BOOST_TEST(testR(S("abcde"), 1, 3, "12345", 4, S("a1234e"))); - BOOST_TEST(testR(S("abcde"), 1, 3, "12345", 5, S("a12345e"))); - BOOST_TEST(testR(S("abcde"), 1, 3, "1234567890", 0, S("ae"))); - BOOST_TEST(testR(S("abcde"), 1, 3, "1234567890", 1, S("a1e"))); - BOOST_TEST(testR(S("abcdefghij"), 1, 10, "1234567890", 5, S("a12345"))); - BOOST_TEST(testR(S("abcdefghij"), 1, 10, "1234567890", 9, S("a123456789"))); - BOOST_TEST(testR(S("abcdefghij"), 1, 10, "1234567890", 10, S("a1234567890"))); - BOOST_TEST(testR(S("abcdefghij"), 1, 10, "12345678901234567890", 0, S("a"))); - BOOST_TEST(testR(S("abcdefghij"), 1, 10, "12345678901234567890", 1, S("a1"))); - BOOST_TEST(testR(S("abcdefghij"), 1, 10, "12345678901234567890", 10, S("a1234567890"))); - BOOST_TEST(testR(S("abcdefghij"), 1, 10, "12345678901234567890", 19, S("a1234567890123456789"))); - BOOST_TEST(testR(S("abcdefghij"), 1, 10, "12345678901234567890", 20, S("a12345678901234567890"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 0, "", 0, S("abcdefghij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 0, "12345", 0, S("abcdefghij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 0, "12345", 1, S("abcde1fghij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 0, "12345", 2, S("abcde12fghij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 0, "12345", 4, S("abcde1234fghij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 0, "12345", 5, S("abcde12345fghij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 0, "1234567890", 0, S("abcdefghij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 0, "1234567890", 1, S("abcde1fghij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 0, "1234567890", 5, S("abcde12345fghij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 0, "1234567890", 9, S("abcde123456789fghij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 0, "1234567890", 10, S("abcde1234567890fghij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 0, "12345678901234567890", 0, S("abcdefghij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 0, "12345678901234567890", 1, S("abcde1fghij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 0, "12345678901234567890", 10, S("abcde1234567890fghij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 0, "12345678901234567890", 19, S("abcde1234567890123456789fghij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 0, "12345678901234567890", 20, S("abcde12345678901234567890fghij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 1, "", 0, S("abcdeghij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 1, "12345", 0, S("abcdeghij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 1, "12345", 1, S("abcde1ghij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 1, "12345", 2, S("abcde12ghij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 1, "12345", 4, S("abcde1234ghij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 1, "12345", 5, S("abcde12345ghij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 1, "1234567890", 0, S("abcdeghij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 1, "1234567890", 1, S("abcde1ghij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 1, "1234567890", 5, S("abcde12345ghij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 1, "1234567890", 9, S("abcde123456789ghij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 1, "1234567890", 10, S("abcde1234567890ghij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 1, "12345678901234567890", 0, S("abcdeghij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 1, "12345678901234567890", 1, S("abcde1ghij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 1, "12345678901234567890", 10, S("abcde1234567890ghij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 1, "12345678901234567890", 19, S("abcde1234567890123456789ghij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 1, "12345678901234567890", 20, S("abcde12345678901234567890ghij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 2, "", 0, S("abcdehij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 2, "12345", 0, S("abcdehij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 2, "12345", 1, S("abcde1hij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 2, "12345", 2, S("abcde12hij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 2, "12345", 4, S("abcde1234hij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 2, "12345", 5, S("abcde12345hij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 2, "1234567890", 0, S("abcdehij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 2, "1234567890", 1, S("abcde1hij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 2, "1234567890", 5, S("abcde12345hij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 2, "1234567890", 9, S("abcde123456789hij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 2, "1234567890", 10, S("abcde1234567890hij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 2, "12345678901234567890", 0, S("abcdehij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 2, "12345678901234567890", 1, S("abcde1hij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 2, "12345678901234567890", 10, S("abcde1234567890hij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 2, "12345678901234567890", 19, S("abcde1234567890123456789hij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 2, "12345678901234567890", 20, S("abcde12345678901234567890hij"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 4, "", 0, S("abcdej"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 4, "12345", 0, S("abcdej"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 4, "12345", 1, S("abcde1j"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 4, "12345", 2, S("abcde12j"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 4, "12345", 4, S("abcde1234j"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 4, "12345", 5, S("abcde12345j"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 4, "1234567890", 0, S("abcdej"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 4, "1234567890", 1, S("abcde1j"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 4, "1234567890", 5, S("abcde12345j"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 4, "1234567890", 9, S("abcde123456789j"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 4, "1234567890", 10, S("abcde1234567890j"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 4, "12345678901234567890", 0, S("abcdej"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 4, "12345678901234567890", 1, S("abcde1j"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 4, "12345678901234567890", 10, S("abcde1234567890j"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 4, "12345678901234567890", 19, S("abcde1234567890123456789j"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 4, "12345678901234567890", 20, S("abcde12345678901234567890j"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 5, "", 0, S("abcde"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 5, "12345", 0, S("abcde"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 5, "12345", 1, S("abcde1"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 5, "12345", 2, S("abcde12"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 5, "12345", 4, S("abcde1234"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 5, "12345", 5, S("abcde12345"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 5, "1234567890", 0, S("abcde"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 5, "1234567890", 1, S("abcde1"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 5, "1234567890", 5, S("abcde12345"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 5, "1234567890", 9, S("abcde123456789"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 5, "1234567890", 10, S("abcde1234567890"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 5, "12345678901234567890", 0, S("abcde"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 5, "12345678901234567890", 1, S("abcde1"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 5, "12345678901234567890", 10, S("abcde1234567890"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 5, "12345678901234567890", 19, S("abcde1234567890123456789"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 5, "12345678901234567890", 20, S("abcde12345678901234567890"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 6, "", 0, S("abcde"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 6, "12345", 0, S("abcde"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 6, "12345", 1, S("abcde1"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 6, "12345", 2, S("abcde12"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 6, "12345", 4, S("abcde1234"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 6, "12345", 5, S("abcde12345"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 6, "1234567890", 0, S("abcde"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 6, "1234567890", 1, S("abcde1"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 6, "1234567890", 5, S("abcde12345"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 6, "1234567890", 9, S("abcde123456789"))); - BOOST_TEST(testR(S("abcdefghij"), 5, 6, "1234567890", 10, S("abcde1234567890"))); + BOOST_TEST(testR(S("abcde"), 0, 4, "12345", 4, S("1234e"))); + BOOST_TEST(testR(S("abcde"), 0, 4, "12345", 5, S("12345e"))); + BOOST_TEST(testR(S("abcde"), 0, 4, "1234567890", 0, S("e"))); + BOOST_TEST(testR(S("abcde"), 0, 4, "1234567890", 1, S("1e"))); + BOOST_TEST(testR(S("abcde"), 0, 4, "1234567890", 5, S("12345e"))); + BOOST_TEST(testR(S("abcde"), 0, 4, "1234567890", 9, S("123456789e"))); + BOOST_TEST(testR(S("abcde"), 0, 4, "1234567890", 10, S("1234567890e"))); + BOOST_TEST(testR(S("abcde"), 0, 4, "12345678901234567890", 0, S("e"))); + BOOST_TEST(testR(S("abcde"), 0, 4, "12345678901234567890", 1, S("1e"))); + BOOST_TEST(testR(S("abcde"), 0, 4, "12345678901234567890", 10, S("1234567890e"))); + BOOST_TEST(testR(S("abcde"), 0, 4, "12345678901234567890", 19, S("1234567890123456789e"))); + BOOST_TEST(testR(S("abcde"), 0, 4, "12345678901234567890", 20, S("12345678901234567890e"))); + BOOST_TEST(testR(S("abcde"), 0, 5, "", 0, S(""))); + BOOST_TEST(testR(S("abcde"), 0, 5, "12345", 0, S(""))); + BOOST_TEST(testR(S("abcde"), 0, 5, "12345", 1, S("1"))); + BOOST_TEST(testR(S("abcde"), 0, 5, "12345", 2, S("12"))); + BOOST_TEST(testR(S("abcde"), 0, 5, "12345", 4, S("1234"))); + BOOST_TEST(testR(S("abcde"), 0, 5, "12345", 5, S("12345"))); + BOOST_TEST(testR(S("abcde"), 0, 5, "1234567890", 0, S(""))); + BOOST_TEST(testR(S("abcde"), 0, 5, "1234567890", 1, S("1"))); + BOOST_TEST(testR(S("abcde"), 0, 5, "1234567890", 5, S("12345"))); + BOOST_TEST(testR(S("abcde"), 0, 5, "1234567890", 9, S("123456789"))); + BOOST_TEST(testR(S("abcde"), 0, 5, "1234567890", 10, S("1234567890"))); + BOOST_TEST(testR(S("abcde"), 0, 5, "12345678901234567890", 0, S(""))); + BOOST_TEST(testR(S("abcde"), 0, 5, "12345678901234567890", 1, S("1"))); + BOOST_TEST(testR(S("abcde"), 0, 5, "12345678901234567890", 10, S("1234567890"))); + BOOST_TEST(testR(S("abcde"), 0, 5, "12345678901234567890", 19, S("1234567890123456789"))); + BOOST_TEST(testR(S("abcde"), 0, 5, "12345678901234567890", 20, S("12345678901234567890"))); + BOOST_TEST(testR(S("abcde"), 0, 6, "", 0, S(""))); + BOOST_TEST(testR(S("abcde"), 0, 6, "12345", 0, S(""))); + BOOST_TEST(testR(S("abcde"), 0, 6, "12345", 1, S("1"))); + BOOST_TEST(testR(S("abcde"), 0, 6, "12345", 2, S("12"))); + BOOST_TEST(testR(S("abcde"), 0, 6, "12345", 4, S("1234"))); + BOOST_TEST(testR(S("abcde"), 0, 6, "12345", 5, S("12345"))); + BOOST_TEST(testR(S("abcde"), 0, 6, "1234567890", 0, S(""))); + BOOST_TEST(testR(S("abcde"), 0, 6, "1234567890", 1, S("1"))); + BOOST_TEST(testR(S("abcde"), 0, 6, "1234567890", 5, S("12345"))); + BOOST_TEST(testR(S("abcde"), 0, 6, "1234567890", 9, S("123456789"))); + BOOST_TEST(testR(S("abcde"), 0, 6, "1234567890", 10, S("1234567890"))); + BOOST_TEST(testR(S("abcde"), 0, 6, "12345678901234567890", 0, S(""))); + BOOST_TEST(testR(S("abcde"), 0, 6, "12345678901234567890", 1, S("1"))); + BOOST_TEST(testR(S("abcde"), 0, 6, "12345678901234567890", 10, S("1234567890"))); + BOOST_TEST(testR(S("abcde"), 0, 6, "12345678901234567890", 19, S("1234567890123456789"))); + BOOST_TEST(testR(S("abcde"), 0, 6, "12345678901234567890", 20, S("12345678901234567890"))); + BOOST_TEST(testR(S("abcde"), 1, 0, "", 0, S("abcde"))); + BOOST_TEST(testR(S("abcde"), 1, 0, "12345", 0, S("abcde"))); + BOOST_TEST(testR(S("abcde"), 1, 0, "12345", 1, S("a1bcde"))); + BOOST_TEST(testR(S("abcde"), 1, 0, "12345", 2, S("a12bcde"))); + BOOST_TEST(testR(S("abcde"), 1, 0, "12345", 4, S("a1234bcde"))); + BOOST_TEST(testR(S("abcde"), 1, 0, "12345", 5, S("a12345bcde"))); + BOOST_TEST(testR(S("abcde"), 1, 0, "1234567890", 0, S("abcde"))); + BOOST_TEST(testR(S("abcde"), 1, 0, "1234567890", 1, S("a1bcde"))); + BOOST_TEST(testR(S("abcde"), 1, 0, "1234567890", 5, S("a12345bcde"))); + BOOST_TEST(testR(S("abcde"), 1, 0, "1234567890", 9, S("a123456789bcde"))); + BOOST_TEST(testR(S("abcde"), 1, 0, "1234567890", 10, S("a1234567890bcde"))); + BOOST_TEST(testR(S("abcde"), 1, 0, "12345678901234567890", 0, S("abcde"))); + BOOST_TEST(testR(S("abcde"), 1, 0, "12345678901234567890", 1, S("a1bcde"))); + BOOST_TEST(testR(S("abcde"), 1, 0, "12345678901234567890", 10, S("a1234567890bcde"))); + BOOST_TEST(testR(S("abcde"), 1, 0, "12345678901234567890", 19, S("a1234567890123456789bcde"))); + BOOST_TEST(testR(S("abcde"), 1, 0, "12345678901234567890", 20, S("a12345678901234567890bcde"))); + BOOST_TEST(testR(S("abcde"), 1, 1, "", 0, S("acde"))); + BOOST_TEST(testR(S("abcde"), 1, 1, "12345", 0, S("acde"))); + BOOST_TEST(testR(S("abcde"), 1, 1, "12345", 1, S("a1cde"))); + BOOST_TEST(testR(S("abcde"), 1, 1, "12345", 2, S("a12cde"))); + BOOST_TEST(testR(S("abcde"), 1, 1, "12345", 4, S("a1234cde"))); + BOOST_TEST(testR(S("abcde"), 1, 1, "12345", 5, S("a12345cde"))); + BOOST_TEST(testR(S("abcde"), 1, 1, "1234567890", 0, S("acde"))); + BOOST_TEST(testR(S("abcde"), 1, 1, "1234567890", 1, S("a1cde"))); + BOOST_TEST(testR(S("abcde"), 1, 1, "1234567890", 5, S("a12345cde"))); + BOOST_TEST(testR(S("abcde"), 1, 1, "1234567890", 9, S("a123456789cde"))); + BOOST_TEST(testR(S("abcde"), 1, 1, "1234567890", 10, S("a1234567890cde"))); + BOOST_TEST(testR(S("abcde"), 1, 1, "12345678901234567890", 0, S("acde"))); + BOOST_TEST(testR(S("abcde"), 1, 1, "12345678901234567890", 1, S("a1cde"))); + BOOST_TEST(testR(S("abcde"), 1, 1, "12345678901234567890", 10, S("a1234567890cde"))); + BOOST_TEST(testR(S("abcde"), 1, 1, "12345678901234567890", 19, S("a1234567890123456789cde"))); + BOOST_TEST(testR(S("abcde"), 1, 1, "12345678901234567890", 20, S("a12345678901234567890cde"))); + BOOST_TEST(testR(S("abcde"), 1, 2, "", 0, S("ade"))); + BOOST_TEST(testR(S("abcde"), 1, 2, "12345", 0, S("ade"))); + BOOST_TEST(testR(S("abcde"), 1, 2, "12345", 1, S("a1de"))); + BOOST_TEST(testR(S("abcde"), 1, 2, "12345", 2, S("a12de"))); + BOOST_TEST(testR(S("abcde"), 1, 2, "12345", 4, S("a1234de"))); + BOOST_TEST(testR(S("abcde"), 1, 2, "12345", 5, S("a12345de"))); + BOOST_TEST(testR(S("abcde"), 1, 2, "1234567890", 0, S("ade"))); + BOOST_TEST(testR(S("abcde"), 1, 2, "1234567890", 1, S("a1de"))); + BOOST_TEST(testR(S("abcde"), 1, 2, "1234567890", 5, S("a12345de"))); + BOOST_TEST(testR(S("abcde"), 1, 2, "1234567890", 9, S("a123456789de"))); + BOOST_TEST(testR(S("abcde"), 1, 2, "1234567890", 10, S("a1234567890de"))); + BOOST_TEST(testR(S("abcde"), 1, 2, "12345678901234567890", 0, S("ade"))); + BOOST_TEST(testR(S("abcde"), 1, 2, "12345678901234567890", 1, S("a1de"))); + BOOST_TEST(testR(S("abcde"), 1, 2, "12345678901234567890", 10, S("a1234567890de"))); + BOOST_TEST(testR(S("abcde"), 1, 2, "12345678901234567890", 19, S("a1234567890123456789de"))); + BOOST_TEST(testR(S("abcde"), 1, 2, "12345678901234567890", 20, S("a12345678901234567890de"))); + BOOST_TEST(testR(S("abcde"), 1, 3, "", 0, S("ae"))); + BOOST_TEST(testR(S("abcde"), 1, 3, "12345", 0, S("ae"))); + BOOST_TEST(testR(S("abcde"), 1, 3, "12345", 1, S("a1e"))); + BOOST_TEST(testR(S("abcde"), 1, 3, "12345", 2, S("a12e"))); + BOOST_TEST(testR(S("abcde"), 1, 3, "12345", 4, S("a1234e"))); + BOOST_TEST(testR(S("abcde"), 1, 3, "12345", 5, S("a12345e"))); + BOOST_TEST(testR(S("abcde"), 1, 3, "1234567890", 0, S("ae"))); + BOOST_TEST(testR(S("abcde"), 1, 3, "1234567890", 1, S("a1e"))); + BOOST_TEST(testR(S("abcdefghij"), 1, 10, "1234567890", 5, S("a12345"))); + BOOST_TEST(testR(S("abcdefghij"), 1, 10, "1234567890", 9, S("a123456789"))); + BOOST_TEST(testR(S("abcdefghij"), 1, 10, "1234567890", 10, S("a1234567890"))); + BOOST_TEST(testR(S("abcdefghij"), 1, 10, "12345678901234567890", 0, S("a"))); + BOOST_TEST(testR(S("abcdefghij"), 1, 10, "12345678901234567890", 1, S("a1"))); + BOOST_TEST(testR(S("abcdefghij"), 1, 10, "12345678901234567890", 10, S("a1234567890"))); + BOOST_TEST(testR(S("abcdefghij"), 1, 10, "12345678901234567890", 19, S("a1234567890123456789"))); + BOOST_TEST(testR(S("abcdefghij"), 1, 10, "12345678901234567890", 20, S("a12345678901234567890"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 0, "", 0, S("abcdefghij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 0, "12345", 0, S("abcdefghij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 0, "12345", 1, S("abcde1fghij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 0, "12345", 2, S("abcde12fghij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 0, "12345", 4, S("abcde1234fghij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 0, "12345", 5, S("abcde12345fghij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 0, "1234567890", 0, S("abcdefghij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 0, "1234567890", 1, S("abcde1fghij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 0, "1234567890", 5, S("abcde12345fghij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 0, "1234567890", 9, S("abcde123456789fghij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 0, "1234567890", 10, S("abcde1234567890fghij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 0, "12345678901234567890", 0, S("abcdefghij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 0, "12345678901234567890", 1, S("abcde1fghij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 0, "12345678901234567890", 10, S("abcde1234567890fghij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 0, "12345678901234567890", 19, S("abcde1234567890123456789fghij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 0, "12345678901234567890", 20, S("abcde12345678901234567890fghij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 1, "", 0, S("abcdeghij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 1, "12345", 0, S("abcdeghij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 1, "12345", 1, S("abcde1ghij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 1, "12345", 2, S("abcde12ghij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 1, "12345", 4, S("abcde1234ghij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 1, "12345", 5, S("abcde12345ghij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 1, "1234567890", 0, S("abcdeghij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 1, "1234567890", 1, S("abcde1ghij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 1, "1234567890", 5, S("abcde12345ghij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 1, "1234567890", 9, S("abcde123456789ghij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 1, "1234567890", 10, S("abcde1234567890ghij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 1, "12345678901234567890", 0, S("abcdeghij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 1, "12345678901234567890", 1, S("abcde1ghij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 1, "12345678901234567890", 10, S("abcde1234567890ghij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 1, "12345678901234567890", 19, S("abcde1234567890123456789ghij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 1, "12345678901234567890", 20, S("abcde12345678901234567890ghij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 2, "", 0, S("abcdehij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 2, "12345", 0, S("abcdehij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 2, "12345", 1, S("abcde1hij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 2, "12345", 2, S("abcde12hij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 2, "12345", 4, S("abcde1234hij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 2, "12345", 5, S("abcde12345hij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 2, "1234567890", 0, S("abcdehij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 2, "1234567890", 1, S("abcde1hij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 2, "1234567890", 5, S("abcde12345hij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 2, "1234567890", 9, S("abcde123456789hij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 2, "1234567890", 10, S("abcde1234567890hij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 2, "12345678901234567890", 0, S("abcdehij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 2, "12345678901234567890", 1, S("abcde1hij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 2, "12345678901234567890", 10, S("abcde1234567890hij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 2, "12345678901234567890", 19, S("abcde1234567890123456789hij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 2, "12345678901234567890", 20, S("abcde12345678901234567890hij"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 4, "", 0, S("abcdej"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 4, "12345", 0, S("abcdej"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 4, "12345", 1, S("abcde1j"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 4, "12345", 2, S("abcde12j"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 4, "12345", 4, S("abcde1234j"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 4, "12345", 5, S("abcde12345j"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 4, "1234567890", 0, S("abcdej"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 4, "1234567890", 1, S("abcde1j"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 4, "1234567890", 5, S("abcde12345j"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 4, "1234567890", 9, S("abcde123456789j"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 4, "1234567890", 10, S("abcde1234567890j"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 4, "12345678901234567890", 0, S("abcdej"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 4, "12345678901234567890", 1, S("abcde1j"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 4, "12345678901234567890", 10, S("abcde1234567890j"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 4, "12345678901234567890", 19, S("abcde1234567890123456789j"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 4, "12345678901234567890", 20, S("abcde12345678901234567890j"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 5, "", 0, S("abcde"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 5, "12345", 0, S("abcde"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 5, "12345", 1, S("abcde1"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 5, "12345", 2, S("abcde12"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 5, "12345", 4, S("abcde1234"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 5, "12345", 5, S("abcde12345"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 5, "1234567890", 0, S("abcde"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 5, "1234567890", 1, S("abcde1"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 5, "1234567890", 5, S("abcde12345"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 5, "1234567890", 9, S("abcde123456789"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 5, "1234567890", 10, S("abcde1234567890"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 5, "12345678901234567890", 0, S("abcde"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 5, "12345678901234567890", 1, S("abcde1"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 5, "12345678901234567890", 10, S("abcde1234567890"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 5, "12345678901234567890", 19, S("abcde1234567890123456789"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 5, "12345678901234567890", 20, S("abcde12345678901234567890"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 6, "", 0, S("abcde"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 6, "12345", 0, S("abcde"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 6, "12345", 1, S("abcde1"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 6, "12345", 2, S("abcde12"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 6, "12345", 4, S("abcde1234"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 6, "12345", 5, S("abcde12345"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 6, "1234567890", 0, S("abcde"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 6, "1234567890", 1, S("abcde1"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 6, "1234567890", 5, S("abcde12345"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 6, "1234567890", 9, S("abcde123456789"))); + BOOST_TEST(testR(S("abcdefghij"), 5, 6, "1234567890", 10, S("abcde1234567890"))); BOOST_TEST(testR(S("abcdefghij"), 5, 6, "12345678901234567890", 0, S("abcde"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 0, "", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 0, "12345", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 0, "12345", 1, S("1abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 0, "12345", 2, S("12abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 0, "12345", 4, S("1234abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 0, "12345", 5, S("12345abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 0, "1234567890", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 0, "1234567890", 1, S("1abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 0, "1234567890", 5, S("12345abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 0, "1234567890", 9, S("123456789abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 0, "1234567890", 10, S("1234567890abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 0, "12345678901234567890", 1, S("1abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 0, "12345678901234567890", 10, S("1234567890abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 0, "12345678901234567890", 19, S("1234567890123456789abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 0, "12345678901234567890", 20, S("12345678901234567890abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 1, "", 0, S("bcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 1, "12345", 0, S("bcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 1, "12345", 1, S("1bcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 1, "12345", 2, S("12bcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 1, "12345", 4, S("1234bcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 1, "12345", 5, S("12345bcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 1, "1234567890", 0, S("bcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 1, "1234567890", 1, S("1bcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 1, "1234567890", 5, S("12345bcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 1, "1234567890", 9, S("123456789bcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 1, "1234567890", 10, S("1234567890bcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 1, "12345678901234567890", 0, S("bcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 1, "12345678901234567890", 1, S("1bcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 1, "12345678901234567890", 10, S("1234567890bcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 1, "12345678901234567890", 19, S("1234567890123456789bcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 1, "12345678901234567890", 20, S("12345678901234567890bcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 10, "", 0, S("klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 10, "12345", 0, S("klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 10, "12345", 1, S("1klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 10, "12345", 2, S("12klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 10, "12345", 4, S("1234klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 10, "12345", 5, S("12345klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 10, "1234567890", 0, S("klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 10, "1234567890", 1, S("1klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 10, "1234567890", 5, S("12345klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 10, "1234567890", 9, S("123456789klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 10, "1234567890", 10, S("1234567890klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 10, "12345678901234567890", 0, S("klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 10, "12345678901234567890", 1, S("1klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 10, "12345678901234567890", 10, S("1234567890klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 10, "12345678901234567890", 19, S("1234567890123456789klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 10, "12345678901234567890", 20, S("12345678901234567890klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 19, "", 0, S("t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 19, "12345", 0, S("t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 19, "12345", 1, S("1t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 19, "12345", 2, S("12t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 19, "12345", 4, S("1234t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 19, "12345", 5, S("12345t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 19, "1234567890", 0, S("t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 19, "1234567890", 1, S("1t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 19, "1234567890", 5, S("12345t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 19, "1234567890", 9, S("123456789t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 19, "1234567890", 10, S("1234567890t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 19, "12345678901234567890", 0, S("t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 19, "12345678901234567890", 1, S("1t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 19, "12345678901234567890", 10, S("1234567890t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 19, "12345678901234567890", 19, S("1234567890123456789t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 19, "12345678901234567890", 20, S("12345678901234567890t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 20, "", 0, S(""))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 20, "12345", 0, S(""))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 20, "12345", 1, S("1"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 20, "12345", 2, S("12"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 20, "12345", 4, S("1234"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 20, "12345", 5, S("12345"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 20, "1234567890", 0, S(""))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 20, "1234567890", 1, S("1"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 20, "1234567890", 5, S("12345"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 20, "1234567890", 9, S("123456789"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 20, "1234567890", 10, S("1234567890"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 20, "12345678901234567890", 0, S(""))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 20, "12345678901234567890", 1, S("1"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 20, "12345678901234567890", 10, S("1234567890"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 20, "12345678901234567890", 19, S("1234567890123456789"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 20, "12345678901234567890", 20, S("12345678901234567890"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 21, "", 0, S(""))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 21, "12345", 0, S(""))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 21, "12345", 1, S("1"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 21, "12345", 2, S("12"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 21, "12345", 4, S("1234"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 21, "12345", 5, S("12345"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 21, "1234567890", 0, S(""))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 21, "1234567890", 1, S("1"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 21, "1234567890", 5, S("12345"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 21, "1234567890", 9, S("123456789"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 21, "1234567890", 10, S("1234567890"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 21, "12345678901234567890", 0, S(""))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 21, "12345678901234567890", 1, S("1"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 21, "12345678901234567890", 10, S("1234567890"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 21, "12345678901234567890", 19, S("1234567890123456789"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 21, "12345678901234567890", 20, S("12345678901234567890"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 0, "", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 0, "12345", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 0, "12345", 1, S("a1bcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 0, "12345", 2, S("a12bcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 0, "12345", 4, S("a1234bcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 0, "12345", 5, S("a12345bcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 0, "1234567890", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 0, "1234567890", 1, S("a1bcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 0, "1234567890", 5, S("a12345bcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 0, "1234567890", 9, S("a123456789bcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 0, "1234567890", 10, S("a1234567890bcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 0, "12345678901234567890", 1, S("a1bcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 0, "12345678901234567890", 10, S("a1234567890bcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 0, "12345678901234567890", 19, S("a1234567890123456789bcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 0, "12345678901234567890", 20, S("a12345678901234567890bcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 1, "", 0, S("acdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 1, "12345", 0, S("acdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 1, "12345", 1, S("a1cdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 1, "12345", 2, S("a12cdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 1, "12345", 4, S("a1234cdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 1, "12345", 5, S("a12345cdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 1, "1234567890", 0, S("acdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 1, "1234567890", 1, S("a1cdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 1, "1234567890", 5, S("a12345cdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 1, "1234567890", 9, S("a123456789cdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 1, "1234567890", 10, S("a1234567890cdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 1, "12345678901234567890", 0, S("acdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 1, "12345678901234567890", 1, S("a1cdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 1, "12345678901234567890", 10, S("a1234567890cdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 1, "12345678901234567890", 19, S("a1234567890123456789cdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 1, "12345678901234567890", 20, S("a12345678901234567890cdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 9, "", 0, S("aklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 9, "12345", 0, S("aklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 9, "12345", 1, S("a1klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 9, "12345", 2, S("a12klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 9, "12345", 4, S("a1234klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 9, "12345", 5, S("a12345klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 9, "1234567890", 0, S("aklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 9, "1234567890", 1, S("a1klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 9, "1234567890", 5, S("a12345klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 9, "1234567890", 9, S("a123456789klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 9, "1234567890", 10, S("a1234567890klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 9, "12345678901234567890", 0, S("aklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 9, "12345678901234567890", 1, S("a1klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 9, "12345678901234567890", 10, S("a1234567890klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 9, "12345678901234567890", 19, S("a1234567890123456789klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 9, "12345678901234567890", 20, S("a12345678901234567890klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 18, "", 0, S("at"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 18, "12345", 0, S("at"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 18, "12345", 1, S("a1t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 18, "12345", 2, S("a12t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 18, "12345", 4, S("a1234t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 18, "12345", 5, S("a12345t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 18, "1234567890", 0, S("at"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 18, "1234567890", 1, S("a1t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 18, "1234567890", 5, S("a12345t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 18, "1234567890", 9, S("a123456789t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 18, "1234567890", 10, S("a1234567890t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 18, "12345678901234567890", 0, S("at"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 18, "12345678901234567890", 1, S("a1t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 18, "12345678901234567890", 10, S("a1234567890t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 18, "12345678901234567890", 19, S("a1234567890123456789t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 18, "12345678901234567890", 20, S("a12345678901234567890t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 19, "", 0, S("a"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 19, "12345", 0, S("a"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 19, "12345", 1, S("a1"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 19, "12345", 2, S("a12"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 19, "12345", 4, S("a1234"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 19, "12345", 5, S("a12345"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 19, "1234567890", 0, S("a"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 19, "1234567890", 1, S("a1"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 19, "1234567890", 5, S("a12345"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 19, "1234567890", 9, S("a123456789"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 19, "1234567890", 10, S("a1234567890"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 19, "12345678901234567890", 0, S("a"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 19, "12345678901234567890", 1, S("a1"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 19, "12345678901234567890", 10, S("a1234567890"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 19, "12345678901234567890", 19, S("a1234567890123456789"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 19, "12345678901234567890", 20, S("a12345678901234567890"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 20, "", 0, S("a"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 20, "12345", 0, S("a"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 20, "12345", 1, S("a1"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 20, "12345", 2, S("a12"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 20, "12345", 4, S("a1234"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 20, "12345", 5, S("a12345"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 20, "1234567890", 0, S("a"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 20, "1234567890", 1, S("a1"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 20, "1234567890", 5, S("a12345"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 20, "1234567890", 9, S("a123456789"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 20, "1234567890", 10, S("a1234567890"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 20, "12345678901234567890", 0, S("a"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 20, "12345678901234567890", 1, S("a1"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 20, "12345678901234567890", 10, S("a1234567890"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 20, "12345678901234567890", 19, S("a1234567890123456789"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 20, "12345678901234567890", 20, S("a12345678901234567890"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 0, "", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 0, "12345", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 0, "12345", 1, S("abcdefghij1klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 0, "12345", 2, S("abcdefghij12klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 0, "12345", 4, S("abcdefghij1234klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 0, "12345", 5, S("abcdefghij12345klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 0, "1234567890", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 0, "1234567890", 1, S("abcdefghij1klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 0, "1234567890", 5, S("abcdefghij12345klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 0, "1234567890", 9, S("abcdefghij123456789klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 0, "1234567890", 10, S("abcdefghij1234567890klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 0, "12345678901234567890", 1, S("abcdefghij1klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 0, "12345678901234567890", 10, S("abcdefghij1234567890klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 0, "12345678901234567890", 19, S("abcdefghij1234567890123456789klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 0, "12345678901234567890", 20, S("abcdefghij12345678901234567890klmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 1, "", 0, S("abcdefghijlmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 1, "12345", 0, S("abcdefghijlmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 1, "12345", 1, S("abcdefghij1lmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 1, "12345", 2, S("abcdefghij12lmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 1, "12345", 4, S("abcdefghij1234lmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 1, "12345", 5, S("abcdefghij12345lmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 1, "1234567890", 0, S("abcdefghijlmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 1, "1234567890", 1, S("abcdefghij1lmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 1, "1234567890", 5, S("abcdefghij12345lmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 1, "1234567890", 9, S("abcdefghij123456789lmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 1, "1234567890", 10, S("abcdefghij1234567890lmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 1, "12345678901234567890", 0, S("abcdefghijlmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 1, "12345678901234567890", 1, S("abcdefghij1lmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 1, "12345678901234567890", 10, S("abcdefghij1234567890lmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 1, "12345678901234567890", 19, S("abcdefghij1234567890123456789lmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 1, "12345678901234567890", 20, S("abcdefghij12345678901234567890lmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 5, "", 0, S("abcdefghijpqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 5, "12345", 0, S("abcdefghijpqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 5, "12345", 1, S("abcdefghij1pqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 5, "12345", 2, S("abcdefghij12pqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 5, "12345", 4, S("abcdefghij1234pqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 5, "12345", 5, S("abcdefghij12345pqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 5, "1234567890", 0, S("abcdefghijpqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 5, "1234567890", 1, S("abcdefghij1pqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 5, "1234567890", 5, S("abcdefghij12345pqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 5, "1234567890", 9, S("abcdefghij123456789pqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 5, "1234567890", 10, S("abcdefghij1234567890pqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 5, "12345678901234567890", 0, S("abcdefghijpqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 5, "12345678901234567890", 1, S("abcdefghij1pqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 5, "12345678901234567890", 10, S("abcdefghij1234567890pqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 5, "12345678901234567890", 19, S("abcdefghij1234567890123456789pqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 5, "12345678901234567890", 20, S("abcdefghij12345678901234567890pqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 9, "", 0, S("abcdefghijt"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 9, "12345", 0, S("abcdefghijt"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 9, "12345", 1, S("abcdefghij1t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 9, "12345", 2, S("abcdefghij12t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 9, "12345", 4, S("abcdefghij1234t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 9, "12345", 5, S("abcdefghij12345t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 9, "1234567890", 0, S("abcdefghijt"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 9, "1234567890", 1, S("abcdefghij1t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 9, "1234567890", 5, S("abcdefghij12345t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 9, "1234567890", 9, S("abcdefghij123456789t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 9, "1234567890", 10, S("abcdefghij1234567890t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 9, "12345678901234567890", 0, S("abcdefghijt"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 9, "12345678901234567890", 1, S("abcdefghij1t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 9, "12345678901234567890", 10, S("abcdefghij1234567890t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 9, "12345678901234567890", 19, S("abcdefghij1234567890123456789t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 9, "12345678901234567890", 20, S("abcdefghij12345678901234567890t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 10, "", 0, S("abcdefghij"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 10, "12345", 0, S("abcdefghij"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 10, "12345", 1, S("abcdefghij1"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 10, "12345", 2, S("abcdefghij12"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 10, "12345", 4, S("abcdefghij1234"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 10, "12345", 5, S("abcdefghij12345"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 10, "1234567890", 0, S("abcdefghij"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 10, "1234567890", 1, S("abcdefghij1"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 10, "1234567890", 5, S("abcdefghij12345"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 10, "1234567890", 9, S("abcdefghij123456789"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 10, "1234567890", 10, S("abcdefghij1234567890"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 10, "12345678901234567890", 0, S("abcdefghij"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 10, "12345678901234567890", 1, S("abcdefghij1"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 10, "12345678901234567890", 10, S("abcdefghij1234567890"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 10, "12345678901234567890", 19, S("abcdefghij1234567890123456789"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 10, "12345678901234567890", 20, S("abcdefghij12345678901234567890"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 11, "", 0, S("abcdefghij"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 11, "12345", 0, S("abcdefghij"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 11, "12345", 1, S("abcdefghij1"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 11, "12345", 2, S("abcdefghij12"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 11, "12345", 4, S("abcdefghij1234"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 11, "12345", 5, S("abcdefghij12345"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 11, "1234567890", 0, S("abcdefghij"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 11, "1234567890", 1, S("abcdefghij1"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 11, "1234567890", 5, S("abcdefghij12345"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 11, "1234567890", 9, S("abcdefghij123456789"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 11, "1234567890", 10, S("abcdefghij1234567890"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 11, "12345678901234567890", 0, S("abcdefghij"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 11, "12345678901234567890", 1, S("abcdefghij1"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 11, "12345678901234567890", 10, S("abcdefghij1234567890"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 11, "12345678901234567890", 19, S("abcdefghij1234567890123456789"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 11, "12345678901234567890", 20, S("abcdefghij12345678901234567890"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 0, "", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 0, "12345", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 0, "12345", 1, S("abcdefghijklmnopqrs1t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 0, "12345", 2, S("abcdefghijklmnopqrs12t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 0, "12345", 4, S("abcdefghijklmnopqrs1234t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 0, "12345", 5, S("abcdefghijklmnopqrs12345t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 0, "1234567890", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 0, "1234567890", 1, S("abcdefghijklmnopqrs1t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 0, "1234567890", 5, S("abcdefghijklmnopqrs12345t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 0, "1234567890", 9, S("abcdefghijklmnopqrs123456789t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 0, "1234567890", 10, S("abcdefghijklmnopqrs1234567890t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 0, "", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 0, "12345", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 0, "12345", 1, S("1abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 0, "12345", 2, S("12abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 0, "12345", 4, S("1234abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 0, "12345", 5, S("12345abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 0, "1234567890", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 0, "1234567890", 1, S("1abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 0, "1234567890", 5, S("12345abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 0, "1234567890", 9, S("123456789abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 0, "1234567890", 10, S("1234567890abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 0, "12345678901234567890", 1, S("1abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 0, "12345678901234567890", 10, S("1234567890abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 0, "12345678901234567890", 19, S("1234567890123456789abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 0, "12345678901234567890", 20, S("12345678901234567890abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 1, "", 0, S("bcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 1, "12345", 0, S("bcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 1, "12345", 1, S("1bcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 1, "12345", 2, S("12bcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 1, "12345", 4, S("1234bcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 1, "12345", 5, S("12345bcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 1, "1234567890", 0, S("bcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 1, "1234567890", 1, S("1bcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 1, "1234567890", 5, S("12345bcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 1, "1234567890", 9, S("123456789bcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 1, "1234567890", 10, S("1234567890bcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 1, "12345678901234567890", 0, S("bcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 1, "12345678901234567890", 1, S("1bcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 1, "12345678901234567890", 10, S("1234567890bcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 1, "12345678901234567890", 19, S("1234567890123456789bcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 1, "12345678901234567890", 20, S("12345678901234567890bcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 10, "", 0, S("klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 10, "12345", 0, S("klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 10, "12345", 1, S("1klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 10, "12345", 2, S("12klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 10, "12345", 4, S("1234klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 10, "12345", 5, S("12345klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 10, "1234567890", 0, S("klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 10, "1234567890", 1, S("1klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 10, "1234567890", 5, S("12345klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 10, "1234567890", 9, S("123456789klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 10, "1234567890", 10, S("1234567890klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 10, "12345678901234567890", 0, S("klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 10, "12345678901234567890", 1, S("1klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 10, "12345678901234567890", 10, S("1234567890klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 10, "12345678901234567890", 19, S("1234567890123456789klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 10, "12345678901234567890", 20, S("12345678901234567890klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 19, "", 0, S("t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 19, "12345", 0, S("t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 19, "12345", 1, S("1t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 19, "12345", 2, S("12t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 19, "12345", 4, S("1234t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 19, "12345", 5, S("12345t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 19, "1234567890", 0, S("t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 19, "1234567890", 1, S("1t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 19, "1234567890", 5, S("12345t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 19, "1234567890", 9, S("123456789t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 19, "1234567890", 10, S("1234567890t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 19, "12345678901234567890", 0, S("t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 19, "12345678901234567890", 1, S("1t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 19, "12345678901234567890", 10, S("1234567890t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 19, "12345678901234567890", 19, S("1234567890123456789t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 19, "12345678901234567890", 20, S("12345678901234567890t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 20, "", 0, S(""))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 20, "12345", 0, S(""))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 20, "12345", 1, S("1"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 20, "12345", 2, S("12"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 20, "12345", 4, S("1234"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 20, "12345", 5, S("12345"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 20, "1234567890", 0, S(""))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 20, "1234567890", 1, S("1"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 20, "1234567890", 5, S("12345"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 20, "1234567890", 9, S("123456789"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 20, "1234567890", 10, S("1234567890"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 20, "12345678901234567890", 0, S(""))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 20, "12345678901234567890", 1, S("1"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 20, "12345678901234567890", 10, S("1234567890"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 20, "12345678901234567890", 19, S("1234567890123456789"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 20, "12345678901234567890", 20, S("12345678901234567890"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 21, "", 0, S(""))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 21, "12345", 0, S(""))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 21, "12345", 1, S("1"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 21, "12345", 2, S("12"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 21, "12345", 4, S("1234"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 21, "12345", 5, S("12345"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 21, "1234567890", 0, S(""))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 21, "1234567890", 1, S("1"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 21, "1234567890", 5, S("12345"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 21, "1234567890", 9, S("123456789"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 21, "1234567890", 10, S("1234567890"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 21, "12345678901234567890", 0, S(""))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 21, "12345678901234567890", 1, S("1"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 21, "12345678901234567890", 10, S("1234567890"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 21, "12345678901234567890", 19, S("1234567890123456789"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 0, 21, "12345678901234567890", 20, S("12345678901234567890"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 0, "", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 0, "12345", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 0, "12345", 1, S("a1bcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 0, "12345", 2, S("a12bcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 0, "12345", 4, S("a1234bcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 0, "12345", 5, S("a12345bcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 0, "1234567890", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 0, "1234567890", 1, S("a1bcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 0, "1234567890", 5, S("a12345bcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 0, "1234567890", 9, S("a123456789bcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 0, "1234567890", 10, S("a1234567890bcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 0, "12345678901234567890", 1, S("a1bcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 0, "12345678901234567890", 10, S("a1234567890bcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 0, "12345678901234567890", 19, S("a1234567890123456789bcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 0, "12345678901234567890", 20, S("a12345678901234567890bcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 1, "", 0, S("acdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 1, "12345", 0, S("acdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 1, "12345", 1, S("a1cdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 1, "12345", 2, S("a12cdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 1, "12345", 4, S("a1234cdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 1, "12345", 5, S("a12345cdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 1, "1234567890", 0, S("acdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 1, "1234567890", 1, S("a1cdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 1, "1234567890", 5, S("a12345cdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 1, "1234567890", 9, S("a123456789cdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 1, "1234567890", 10, S("a1234567890cdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 1, "12345678901234567890", 0, S("acdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 1, "12345678901234567890", 1, S("a1cdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 1, "12345678901234567890", 10, S("a1234567890cdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 1, "12345678901234567890", 19, S("a1234567890123456789cdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 1, "12345678901234567890", 20, S("a12345678901234567890cdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 9, "", 0, S("aklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 9, "12345", 0, S("aklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 9, "12345", 1, S("a1klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 9, "12345", 2, S("a12klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 9, "12345", 4, S("a1234klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 9, "12345", 5, S("a12345klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 9, "1234567890", 0, S("aklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 9, "1234567890", 1, S("a1klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 9, "1234567890", 5, S("a12345klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 9, "1234567890", 9, S("a123456789klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 9, "1234567890", 10, S("a1234567890klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 9, "12345678901234567890", 0, S("aklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 9, "12345678901234567890", 1, S("a1klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 9, "12345678901234567890", 10, S("a1234567890klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 9, "12345678901234567890", 19, S("a1234567890123456789klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 9, "12345678901234567890", 20, S("a12345678901234567890klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 18, "", 0, S("at"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 18, "12345", 0, S("at"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 18, "12345", 1, S("a1t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 18, "12345", 2, S("a12t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 18, "12345", 4, S("a1234t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 18, "12345", 5, S("a12345t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 18, "1234567890", 0, S("at"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 18, "1234567890", 1, S("a1t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 18, "1234567890", 5, S("a12345t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 18, "1234567890", 9, S("a123456789t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 18, "1234567890", 10, S("a1234567890t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 18, "12345678901234567890", 0, S("at"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 18, "12345678901234567890", 1, S("a1t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 18, "12345678901234567890", 10, S("a1234567890t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 18, "12345678901234567890", 19, S("a1234567890123456789t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 18, "12345678901234567890", 20, S("a12345678901234567890t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 19, "", 0, S("a"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 19, "12345", 0, S("a"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 19, "12345", 1, S("a1"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 19, "12345", 2, S("a12"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 19, "12345", 4, S("a1234"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 19, "12345", 5, S("a12345"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 19, "1234567890", 0, S("a"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 19, "1234567890", 1, S("a1"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 19, "1234567890", 5, S("a12345"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 19, "1234567890", 9, S("a123456789"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 19, "1234567890", 10, S("a1234567890"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 19, "12345678901234567890", 0, S("a"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 19, "12345678901234567890", 1, S("a1"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 19, "12345678901234567890", 10, S("a1234567890"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 19, "12345678901234567890", 19, S("a1234567890123456789"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 19, "12345678901234567890", 20, S("a12345678901234567890"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 20, "", 0, S("a"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 20, "12345", 0, S("a"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 20, "12345", 1, S("a1"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 20, "12345", 2, S("a12"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 20, "12345", 4, S("a1234"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 20, "12345", 5, S("a12345"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 20, "1234567890", 0, S("a"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 20, "1234567890", 1, S("a1"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 20, "1234567890", 5, S("a12345"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 20, "1234567890", 9, S("a123456789"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 20, "1234567890", 10, S("a1234567890"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 20, "12345678901234567890", 0, S("a"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 20, "12345678901234567890", 1, S("a1"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 20, "12345678901234567890", 10, S("a1234567890"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 20, "12345678901234567890", 19, S("a1234567890123456789"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 1, 20, "12345678901234567890", 20, S("a12345678901234567890"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 0, "", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 0, "12345", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 0, "12345", 1, S("abcdefghij1klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 0, "12345", 2, S("abcdefghij12klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 0, "12345", 4, S("abcdefghij1234klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 0, "12345", 5, S("abcdefghij12345klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 0, "1234567890", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 0, "1234567890", 1, S("abcdefghij1klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 0, "1234567890", 5, S("abcdefghij12345klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 0, "1234567890", 9, S("abcdefghij123456789klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 0, "1234567890", 10, S("abcdefghij1234567890klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 0, "12345678901234567890", 1, S("abcdefghij1klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 0, "12345678901234567890", 10, S("abcdefghij1234567890klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 0, "12345678901234567890", 19, S("abcdefghij1234567890123456789klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 0, "12345678901234567890", 20, S("abcdefghij12345678901234567890klmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 1, "", 0, S("abcdefghijlmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 1, "12345", 0, S("abcdefghijlmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 1, "12345", 1, S("abcdefghij1lmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 1, "12345", 2, S("abcdefghij12lmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 1, "12345", 4, S("abcdefghij1234lmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 1, "12345", 5, S("abcdefghij12345lmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 1, "1234567890", 0, S("abcdefghijlmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 1, "1234567890", 1, S("abcdefghij1lmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 1, "1234567890", 5, S("abcdefghij12345lmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 1, "1234567890", 9, S("abcdefghij123456789lmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 1, "1234567890", 10, S("abcdefghij1234567890lmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 1, "12345678901234567890", 0, S("abcdefghijlmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 1, "12345678901234567890", 1, S("abcdefghij1lmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 1, "12345678901234567890", 10, S("abcdefghij1234567890lmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 1, "12345678901234567890", 19, S("abcdefghij1234567890123456789lmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 1, "12345678901234567890", 20, S("abcdefghij12345678901234567890lmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 5, "", 0, S("abcdefghijpqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 5, "12345", 0, S("abcdefghijpqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 5, "12345", 1, S("abcdefghij1pqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 5, "12345", 2, S("abcdefghij12pqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 5, "12345", 4, S("abcdefghij1234pqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 5, "12345", 5, S("abcdefghij12345pqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 5, "1234567890", 0, S("abcdefghijpqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 5, "1234567890", 1, S("abcdefghij1pqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 5, "1234567890", 5, S("abcdefghij12345pqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 5, "1234567890", 9, S("abcdefghij123456789pqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 5, "1234567890", 10, S("abcdefghij1234567890pqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 5, "12345678901234567890", 0, S("abcdefghijpqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 5, "12345678901234567890", 1, S("abcdefghij1pqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 5, "12345678901234567890", 10, S("abcdefghij1234567890pqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 5, "12345678901234567890", 19, S("abcdefghij1234567890123456789pqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 5, "12345678901234567890", 20, S("abcdefghij12345678901234567890pqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 9, "", 0, S("abcdefghijt"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 9, "12345", 0, S("abcdefghijt"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 9, "12345", 1, S("abcdefghij1t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 9, "12345", 2, S("abcdefghij12t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 9, "12345", 4, S("abcdefghij1234t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 9, "12345", 5, S("abcdefghij12345t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 9, "1234567890", 0, S("abcdefghijt"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 9, "1234567890", 1, S("abcdefghij1t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 9, "1234567890", 5, S("abcdefghij12345t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 9, "1234567890", 9, S("abcdefghij123456789t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 9, "1234567890", 10, S("abcdefghij1234567890t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 9, "12345678901234567890", 0, S("abcdefghijt"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 9, "12345678901234567890", 1, S("abcdefghij1t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 9, "12345678901234567890", 10, S("abcdefghij1234567890t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 9, "12345678901234567890", 19, S("abcdefghij1234567890123456789t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 9, "12345678901234567890", 20, S("abcdefghij12345678901234567890t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 10, "", 0, S("abcdefghij"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 10, "12345", 0, S("abcdefghij"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 10, "12345", 1, S("abcdefghij1"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 10, "12345", 2, S("abcdefghij12"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 10, "12345", 4, S("abcdefghij1234"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 10, "12345", 5, S("abcdefghij12345"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 10, "1234567890", 0, S("abcdefghij"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 10, "1234567890", 1, S("abcdefghij1"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 10, "1234567890", 5, S("abcdefghij12345"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 10, "1234567890", 9, S("abcdefghij123456789"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 10, "1234567890", 10, S("abcdefghij1234567890"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 10, "12345678901234567890", 0, S("abcdefghij"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 10, "12345678901234567890", 1, S("abcdefghij1"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 10, "12345678901234567890", 10, S("abcdefghij1234567890"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 10, "12345678901234567890", 19, S("abcdefghij1234567890123456789"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 10, "12345678901234567890", 20, S("abcdefghij12345678901234567890"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 11, "", 0, S("abcdefghij"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 11, "12345", 0, S("abcdefghij"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 11, "12345", 1, S("abcdefghij1"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 11, "12345", 2, S("abcdefghij12"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 11, "12345", 4, S("abcdefghij1234"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 11, "12345", 5, S("abcdefghij12345"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 11, "1234567890", 0, S("abcdefghij"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 11, "1234567890", 1, S("abcdefghij1"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 11, "1234567890", 5, S("abcdefghij12345"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 11, "1234567890", 9, S("abcdefghij123456789"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 11, "1234567890", 10, S("abcdefghij1234567890"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 11, "12345678901234567890", 0, S("abcdefghij"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 11, "12345678901234567890", 1, S("abcdefghij1"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 11, "12345678901234567890", 10, S("abcdefghij1234567890"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 11, "12345678901234567890", 19, S("abcdefghij1234567890123456789"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 10, 11, "12345678901234567890", 20, S("abcdefghij12345678901234567890"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 0, "", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 0, "12345", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 0, "12345", 1, S("abcdefghijklmnopqrs1t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 0, "12345", 2, S("abcdefghijklmnopqrs12t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 0, "12345", 4, S("abcdefghijklmnopqrs1234t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 0, "12345", 5, S("abcdefghijklmnopqrs12345t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 0, "1234567890", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 0, "1234567890", 1, S("abcdefghijklmnopqrs1t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 0, "1234567890", 5, S("abcdefghijklmnopqrs12345t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 0, "1234567890", 9, S("abcdefghijklmnopqrs123456789t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 0, "1234567890", 10, S("abcdefghijklmnopqrs1234567890t"))); BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S(""), 1, 0, "12345", 0, S("can't happen"))); - BOOST_TEST(testR(S(""), 1, 0, "12345", 1, S("can't happen"))); - BOOST_TEST(testR(S(""), 1, 0, "12345", 2, S("can't happen"))); - BOOST_TEST(testR(S(""), 1, 0, "12345", 4, S("can't happen"))); - BOOST_TEST(testR(S(""), 1, 0, "12345", 5, S("can't happen"))); - BOOST_TEST(testR(S(""), 1, 0, "1234567890", 0, S("can't happen"))); - BOOST_TEST(testR(S(""), 1, 0, "1234567890", 1, S("can't happen"))); - BOOST_TEST(testR(S(""), 1, 0, "1234567890", 5, S("can't happen"))); - BOOST_TEST(testR(S(""), 1, 0, "1234567890", 9, S("can't happen"))); - BOOST_TEST(testR(S(""), 1, 0, "1234567890", 10, S("can't happen"))); - BOOST_TEST(testR(S(""), 1, 0, "12345678901234567890", 0, S("can't happen"))); - BOOST_TEST(testR(S(""), 1, 0, "12345678901234567890", 1, S("can't happen"))); - BOOST_TEST(testR(S(""), 1, 0, "12345678901234567890", 10, S("can't happen"))); - BOOST_TEST(testR(S(""), 1, 0, "12345678901234567890", 19, S("can't happen"))); - BOOST_TEST(testR(S(""), 1, 0, "12345678901234567890", 20, S("can't happen"))); - BOOST_TEST(testR(S("abcde"), 6, 0, "", 0, S("can't happen"))); - BOOST_TEST(testR(S("abcde"), 6, 0, "12345", 0, S("can't happen"))); - BOOST_TEST(testR(S("abcde"), 6, 0, "12345", 1, S("can't happen"))); - BOOST_TEST(testR(S("abcde"), 6, 0, "12345", 2, S("can't happen"))); - BOOST_TEST(testR(S("abcde"), 6, 0, "12345", 4, S("can't happen"))); - BOOST_TEST(testR(S("abcde"), 6, 0, "12345", 5, S("can't happen"))); - BOOST_TEST(testR(S("abcde"), 6, 0, "1234567890", 0, S("can't happen"))); - BOOST_TEST(testR(S("abcde"), 6, 0, "1234567890", 1, S("can't happen"))); - BOOST_TEST(testR(S("abcde"), 6, 0, "1234567890", 5, S("can't happen"))); - BOOST_TEST(testR(S("abcde"), 6, 0, "1234567890", 9, S("can't happen"))); - BOOST_TEST(testR(S("abcde"), 6, 0, "1234567890", 10, S("can't happen"))); - BOOST_TEST(testR(S("abcde"), 6, 0, "12345678901234567890", 0, S("can't happen"))); - BOOST_TEST(testR(S("abcde"), 6, 0, "12345678901234567890", 1, S("can't happen"))); - BOOST_TEST(testR(S("abcde"), 6, 0, "12345678901234567890", 10, S("can't happen"))); - BOOST_TEST(testR(S("abcde"), 6, 0, "12345678901234567890", 19, S("can't happen"))); - BOOST_TEST(testR(S("abcde"), 6, 0, "12345678901234567890", 20, S("can't happen"))); - BOOST_TEST(testR(S("abcdefghij"), 11, 0, "", 0, S("can't happen"))); - BOOST_TEST(testR(S("abcdefghij"), 11, 0, "12345", 0, S("can't happen"))); - BOOST_TEST(testR(S("abcdefghij"), 11, 0, "12345", 1, S("can't happen"))); - BOOST_TEST(testR(S("abcdefghij"), 11, 0, "12345", 2, S("can't happen"))); - BOOST_TEST(testR(S("abcdefghij"), 11, 0, "12345", 4, S("can't happen"))); - BOOST_TEST(testR(S("abcdefghij"), 11, 0, "12345", 5, S("can't happen"))); - BOOST_TEST(testR(S("abcdefghij"), 11, 0, "1234567890", 0, S("can't happen"))); - BOOST_TEST(testR(S("abcdefghij"), 11, 0, "1234567890", 1, S("can't happen"))); - BOOST_TEST(testR(S("abcdefghij"), 11, 0, "1234567890", 5, S("can't happen"))); - BOOST_TEST(testR(S("abcdefghij"), 11, 0, "1234567890", 9, S("can't happen"))); - BOOST_TEST(testR(S("abcdefghij"), 11, 0, "1234567890", 10, S("can't happen"))); - BOOST_TEST(testR(S("abcdefghij"), 11, 0, "12345678901234567890", 0, S("can't happen"))); - BOOST_TEST(testR(S("abcdefghij"), 11, 0, "12345678901234567890", 1, S("can't happen"))); - BOOST_TEST(testR(S("abcdefghij"), 11, 0, "12345678901234567890", 10, S("can't happen"))); - BOOST_TEST(testR(S("abcdefghij"), 11, 0, "12345678901234567890", 19, S("can't happen"))); - BOOST_TEST(testR(S("abcdefghij"), 11, 0, "12345678901234567890", 20, S("can't happen"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 21, 0, "", 0, S("can't happen"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 21, 0, "12345", 0, S("can't happen"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 21, 0, "12345", 1, S("can't happen"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 21, 0, "12345", 2, S("can't happen"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 21, 0, "12345", 4, S("can't happen"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 21, 0, "12345", 5, S("can't happen"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 21, 0, "1234567890", 0, S("can't happen"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 21, 0, "1234567890", 1, S("can't happen"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 21, 0, "1234567890", 5, S("can't happen"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 21, 0, "1234567890", 9, S("can't happen"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 21, 0, "1234567890", 10, S("can't happen"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 21, 0, "12345678901234567890", 0, S("can't happen"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 21, 0, "12345678901234567890", 1, S("can't happen"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 21, 0, "12345678901234567890", 10, S("can't happen"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 21, 0, "12345678901234567890", 19, S("can't happen"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 21, 0, "12345678901234567890", 20, S("can't happen"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 0, "12345678901234567890", 1, S("abcdefghijklmnopqrs1t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 0, "12345678901234567890", 10, S("abcdefghijklmnopqrs1234567890t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 0, "12345678901234567890", 19, S("abcdefghijklmnopqrs1234567890123456789t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 0, "12345678901234567890", 20, S("abcdefghijklmnopqrs12345678901234567890t"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 1, "", 0, S("abcdefghijklmnopqrs"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 1, "12345", 0, S("abcdefghijklmnopqrs"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 1, "12345", 1, S("abcdefghijklmnopqrs1"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 1, "12345", 2, S("abcdefghijklmnopqrs12"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 1, "12345", 4, S("abcdefghijklmnopqrs1234"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 1, "12345", 5, S("abcdefghijklmnopqrs12345"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 1, "1234567890", 0, S("abcdefghijklmnopqrs"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 1, "1234567890", 1, S("abcdefghijklmnopqrs1"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 1, "1234567890", 5, S("abcdefghijklmnopqrs12345"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 1, "1234567890", 9, S("abcdefghijklmnopqrs123456789"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 1, "1234567890", 10, S("abcdefghijklmnopqrs1234567890"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 1, "12345678901234567890", 0, S("abcdefghijklmnopqrs"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 1, "12345678901234567890", 1, S("abcdefghijklmnopqrs1"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 1, "12345678901234567890", 10, S("abcdefghijklmnopqrs1234567890"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 1, "12345678901234567890", 19, S("abcdefghijklmnopqrs1234567890123456789"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 1, "12345678901234567890", 20, S("abcdefghijklmnopqrs12345678901234567890"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 2, "", 0, S("abcdefghijklmnopqrs"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 2, "12345", 0, S("abcdefghijklmnopqrs"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 2, "12345", 1, S("abcdefghijklmnopqrs1"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 2, "12345", 2, S("abcdefghijklmnopqrs12"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 2, "12345", 4, S("abcdefghijklmnopqrs1234"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 2, "12345", 5, S("abcdefghijklmnopqrs12345"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 2, "1234567890", 0, S("abcdefghijklmnopqrs"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 2, "1234567890", 1, S("abcdefghijklmnopqrs1"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 2, "1234567890", 5, S("abcdefghijklmnopqrs12345"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 2, "1234567890", 9, S("abcdefghijklmnopqrs123456789"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 2, "1234567890", 10, S("abcdefghijklmnopqrs1234567890"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 2, "12345678901234567890", 0, S("abcdefghijklmnopqrs"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 2, "12345678901234567890", 1, S("abcdefghijklmnopqrs1"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 2, "12345678901234567890", 10, S("abcdefghijklmnopqrs1234567890"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 2, "12345678901234567890", 19, S("abcdefghijklmnopqrs1234567890123456789"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 2, "12345678901234567890", 20, S("abcdefghijklmnopqrs12345678901234567890"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 0, "", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 0, "12345", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 0, "12345", 1, S("abcdefghijklmnopqrst1"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 0, "12345", 2, S("abcdefghijklmnopqrst12"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 0, "12345", 4, S("abcdefghijklmnopqrst1234"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 0, "12345", 5, S("abcdefghijklmnopqrst12345"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 0, "1234567890", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 0, "1234567890", 1, S("abcdefghijklmnopqrst1"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 0, "1234567890", 5, S("abcdefghijklmnopqrst12345"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 0, "1234567890", 9, S("abcdefghijklmnopqrst123456789"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 0, "1234567890", 10, S("abcdefghijklmnopqrst1234567890"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", 1, S("abcdefghijklmnopqrst1"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", 10, S("abcdefghijklmnopqrst1234567890"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", 19, S("abcdefghijklmnopqrst1234567890123456789"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", 20, S("abcdefghijklmnopqrst12345678901234567890"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 1, "", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 1, "12345", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 1, "12345", 1, S("abcdefghijklmnopqrst1"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 1, "12345", 2, S("abcdefghijklmnopqrst12"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 1, "12345", 4, S("abcdefghijklmnopqrst1234"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 1, "12345", 5, S("abcdefghijklmnopqrst12345"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 1, "1234567890", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 1, "1234567890", 1, S("abcdefghijklmnopqrst1"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 1, "1234567890", 5, S("abcdefghijklmnopqrst12345"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 1, "1234567890", 9, S("abcdefghijklmnopqrst123456789"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 1, "1234567890", 10, S("abcdefghijklmnopqrst1234567890"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 1, "12345678901234567890", 0, S("abcdefghijklmnopqrst"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 1, "12345678901234567890", 1, S("abcdefghijklmnopqrst1"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 1, "12345678901234567890", 10, S("abcdefghijklmnopqrst1234567890"))); - BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 1, "12345678901234567890", 19, S("abcdefghijklmnopqrst1234567890123456789"))); + BOOST_TEST(testR(S(""), 1, 0, "12345", 0, S("can't happen"))); + BOOST_TEST(testR(S(""), 1, 0, "12345", 1, S("can't happen"))); + BOOST_TEST(testR(S(""), 1, 0, "12345", 2, S("can't happen"))); + BOOST_TEST(testR(S(""), 1, 0, "12345", 4, S("can't happen"))); + BOOST_TEST(testR(S(""), 1, 0, "12345", 5, S("can't happen"))); + BOOST_TEST(testR(S(""), 1, 0, "1234567890", 0, S("can't happen"))); + BOOST_TEST(testR(S(""), 1, 0, "1234567890", 1, S("can't happen"))); + BOOST_TEST(testR(S(""), 1, 0, "1234567890", 5, S("can't happen"))); + BOOST_TEST(testR(S(""), 1, 0, "1234567890", 9, S("can't happen"))); + BOOST_TEST(testR(S(""), 1, 0, "1234567890", 10, S("can't happen"))); + BOOST_TEST(testR(S(""), 1, 0, "12345678901234567890", 0, S("can't happen"))); + BOOST_TEST(testR(S(""), 1, 0, "12345678901234567890", 1, S("can't happen"))); + BOOST_TEST(testR(S(""), 1, 0, "12345678901234567890", 10, S("can't happen"))); + BOOST_TEST(testR(S(""), 1, 0, "12345678901234567890", 19, S("can't happen"))); + BOOST_TEST(testR(S(""), 1, 0, "12345678901234567890", 20, S("can't happen"))); + BOOST_TEST(testR(S("abcde"), 6, 0, "", 0, S("can't happen"))); + BOOST_TEST(testR(S("abcde"), 6, 0, "12345", 0, S("can't happen"))); + BOOST_TEST(testR(S("abcde"), 6, 0, "12345", 1, S("can't happen"))); + BOOST_TEST(testR(S("abcde"), 6, 0, "12345", 2, S("can't happen"))); + BOOST_TEST(testR(S("abcde"), 6, 0, "12345", 4, S("can't happen"))); + BOOST_TEST(testR(S("abcde"), 6, 0, "12345", 5, S("can't happen"))); + BOOST_TEST(testR(S("abcde"), 6, 0, "1234567890", 0, S("can't happen"))); + BOOST_TEST(testR(S("abcde"), 6, 0, "1234567890", 1, S("can't happen"))); + BOOST_TEST(testR(S("abcde"), 6, 0, "1234567890", 5, S("can't happen"))); + BOOST_TEST(testR(S("abcde"), 6, 0, "1234567890", 9, S("can't happen"))); + BOOST_TEST(testR(S("abcde"), 6, 0, "1234567890", 10, S("can't happen"))); + BOOST_TEST(testR(S("abcde"), 6, 0, "12345678901234567890", 0, S("can't happen"))); + BOOST_TEST(testR(S("abcde"), 6, 0, "12345678901234567890", 1, S("can't happen"))); + BOOST_TEST(testR(S("abcde"), 6, 0, "12345678901234567890", 10, S("can't happen"))); + BOOST_TEST(testR(S("abcde"), 6, 0, "12345678901234567890", 19, S("can't happen"))); + BOOST_TEST(testR(S("abcde"), 6, 0, "12345678901234567890", 20, S("can't happen"))); + BOOST_TEST(testR(S("abcdefghij"), 11, 0, "", 0, S("can't happen"))); + BOOST_TEST(testR(S("abcdefghij"), 11, 0, "12345", 0, S("can't happen"))); + BOOST_TEST(testR(S("abcdefghij"), 11, 0, "12345", 1, S("can't happen"))); + BOOST_TEST(testR(S("abcdefghij"), 11, 0, "12345", 2, S("can't happen"))); + BOOST_TEST(testR(S("abcdefghij"), 11, 0, "12345", 4, S("can't happen"))); + BOOST_TEST(testR(S("abcdefghij"), 11, 0, "12345", 5, S("can't happen"))); + BOOST_TEST(testR(S("abcdefghij"), 11, 0, "1234567890", 0, S("can't happen"))); + BOOST_TEST(testR(S("abcdefghij"), 11, 0, "1234567890", 1, S("can't happen"))); + BOOST_TEST(testR(S("abcdefghij"), 11, 0, "1234567890", 5, S("can't happen"))); + BOOST_TEST(testR(S("abcdefghij"), 11, 0, "1234567890", 9, S("can't happen"))); + BOOST_TEST(testR(S("abcdefghij"), 11, 0, "1234567890", 10, S("can't happen"))); + BOOST_TEST(testR(S("abcdefghij"), 11, 0, "12345678901234567890", 0, S("can't happen"))); + BOOST_TEST(testR(S("abcdefghij"), 11, 0, "12345678901234567890", 1, S("can't happen"))); + BOOST_TEST(testR(S("abcdefghij"), 11, 0, "12345678901234567890", 10, S("can't happen"))); + BOOST_TEST(testR(S("abcdefghij"), 11, 0, "12345678901234567890", 19, S("can't happen"))); + BOOST_TEST(testR(S("abcdefghij"), 11, 0, "12345678901234567890", 20, S("can't happen"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 21, 0, "", 0, S("can't happen"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 21, 0, "12345", 0, S("can't happen"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 21, 0, "12345", 1, S("can't happen"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 21, 0, "12345", 2, S("can't happen"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 21, 0, "12345", 4, S("can't happen"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 21, 0, "12345", 5, S("can't happen"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 21, 0, "1234567890", 0, S("can't happen"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 21, 0, "1234567890", 1, S("can't happen"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 21, 0, "1234567890", 5, S("can't happen"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 21, 0, "1234567890", 9, S("can't happen"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 21, 0, "1234567890", 10, S("can't happen"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 21, 0, "12345678901234567890", 0, S("can't happen"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 21, 0, "12345678901234567890", 1, S("can't happen"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 21, 0, "12345678901234567890", 10, S("can't happen"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 21, 0, "12345678901234567890", 19, S("can't happen"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 21, 0, "12345678901234567890", 20, S("can't happen"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 0, "12345678901234567890", 1, S("abcdefghijklmnopqrs1t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 0, "12345678901234567890", 10, S("abcdefghijklmnopqrs1234567890t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 0, "12345678901234567890", 19, S("abcdefghijklmnopqrs1234567890123456789t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 0, "12345678901234567890", 20, S("abcdefghijklmnopqrs12345678901234567890t"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 1, "", 0, S("abcdefghijklmnopqrs"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 1, "12345", 0, S("abcdefghijklmnopqrs"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 1, "12345", 1, S("abcdefghijklmnopqrs1"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 1, "12345", 2, S("abcdefghijklmnopqrs12"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 1, "12345", 4, S("abcdefghijklmnopqrs1234"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 1, "12345", 5, S("abcdefghijklmnopqrs12345"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 1, "1234567890", 0, S("abcdefghijklmnopqrs"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 1, "1234567890", 1, S("abcdefghijklmnopqrs1"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 1, "1234567890", 5, S("abcdefghijklmnopqrs12345"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 1, "1234567890", 9, S("abcdefghijklmnopqrs123456789"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 1, "1234567890", 10, S("abcdefghijklmnopqrs1234567890"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 1, "12345678901234567890", 0, S("abcdefghijklmnopqrs"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 1, "12345678901234567890", 1, S("abcdefghijklmnopqrs1"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 1, "12345678901234567890", 10, S("abcdefghijklmnopqrs1234567890"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 1, "12345678901234567890", 19, S("abcdefghijklmnopqrs1234567890123456789"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 1, "12345678901234567890", 20, S("abcdefghijklmnopqrs12345678901234567890"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 2, "", 0, S("abcdefghijklmnopqrs"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 2, "12345", 0, S("abcdefghijklmnopqrs"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 2, "12345", 1, S("abcdefghijklmnopqrs1"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 2, "12345", 2, S("abcdefghijklmnopqrs12"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 2, "12345", 4, S("abcdefghijklmnopqrs1234"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 2, "12345", 5, S("abcdefghijklmnopqrs12345"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 2, "1234567890", 0, S("abcdefghijklmnopqrs"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 2, "1234567890", 1, S("abcdefghijklmnopqrs1"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 2, "1234567890", 5, S("abcdefghijklmnopqrs12345"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 2, "1234567890", 9, S("abcdefghijklmnopqrs123456789"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 2, "1234567890", 10, S("abcdefghijklmnopqrs1234567890"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 2, "12345678901234567890", 0, S("abcdefghijklmnopqrs"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 2, "12345678901234567890", 1, S("abcdefghijklmnopqrs1"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 2, "12345678901234567890", 10, S("abcdefghijklmnopqrs1234567890"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 2, "12345678901234567890", 19, S("abcdefghijklmnopqrs1234567890123456789"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 19, 2, "12345678901234567890", 20, S("abcdefghijklmnopqrs12345678901234567890"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 0, "", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 0, "12345", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 0, "12345", 1, S("abcdefghijklmnopqrst1"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 0, "12345", 2, S("abcdefghijklmnopqrst12"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 0, "12345", 4, S("abcdefghijklmnopqrst1234"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 0, "12345", 5, S("abcdefghijklmnopqrst12345"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 0, "1234567890", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 0, "1234567890", 1, S("abcdefghijklmnopqrst1"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 0, "1234567890", 5, S("abcdefghijklmnopqrst12345"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 0, "1234567890", 9, S("abcdefghijklmnopqrst123456789"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 0, "1234567890", 10, S("abcdefghijklmnopqrst1234567890"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", 1, S("abcdefghijklmnopqrst1"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", 10, S("abcdefghijklmnopqrst1234567890"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", 19, S("abcdefghijklmnopqrst1234567890123456789"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", 20, S("abcdefghijklmnopqrst12345678901234567890"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 1, "", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 1, "12345", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 1, "12345", 1, S("abcdefghijklmnopqrst1"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 1, "12345", 2, S("abcdefghijklmnopqrst12"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 1, "12345", 4, S("abcdefghijklmnopqrst1234"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 1, "12345", 5, S("abcdefghijklmnopqrst12345"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 1, "1234567890", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 1, "1234567890", 1, S("abcdefghijklmnopqrst1"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 1, "1234567890", 5, S("abcdefghijklmnopqrst12345"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 1, "1234567890", 9, S("abcdefghijklmnopqrst123456789"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 1, "1234567890", 10, S("abcdefghijklmnopqrst1234567890"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 1, "12345678901234567890", 0, S("abcdefghijklmnopqrst"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 1, "12345678901234567890", 1, S("abcdefghijklmnopqrst1"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 1, "12345678901234567890", 10, S("abcdefghijklmnopqrst1234567890"))); + BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 1, "12345678901234567890", 19, S("abcdefghijklmnopqrst1234567890123456789"))); BOOST_TEST(testR(S("abcdefghijklmnopqrst"), 20, 1, "12345678901234567890", 20, S("abcdefghijklmnopqrst12345678901234567890"))); } @@ -6631,122 +6632,122 @@ testReplace() void testSubstr() { - using S = fixed_string<400>; - BOOST_TEST(testS(S(""), 0, 0)); - BOOST_TEST(testS(S(""), 1, 0)); - BOOST_TEST(testS(S("pniot"), 0, 0)); - BOOST_TEST(testS(S("htaob"), 0, 1)); - BOOST_TEST(testS(S("fodgq"), 0, 2)); - BOOST_TEST(testS(S("hpqia"), 0, 4)); - BOOST_TEST(testS(S("qanej"), 0, 5)); - BOOST_TEST(testS(S("dfkap"), 1, 0)); - BOOST_TEST(testS(S("clbao"), 1, 1)); - BOOST_TEST(testS(S("ihqrf"), 1, 2)); - BOOST_TEST(testS(S("mekdn"), 1, 3)); - BOOST_TEST(testS(S("ngtjf"), 1, 4)); - BOOST_TEST(testS(S("srdfq"), 2, 0)); - BOOST_TEST(testS(S("qkdrs"), 2, 1)); - BOOST_TEST(testS(S("ikcrq"), 2, 2)); - BOOST_TEST(testS(S("cdaih"), 2, 3)); - BOOST_TEST(testS(S("dmajb"), 4, 0)); - BOOST_TEST(testS(S("karth"), 4, 1)); - BOOST_TEST(testS(S("lhcdo"), 5, 0)); - BOOST_TEST(testS(S("acbsj"), 6, 0)); - BOOST_TEST(testS(S("pbsjikaole"), 0, 0)); - BOOST_TEST(testS(S("pcbahntsje"), 0, 1)); - BOOST_TEST(testS(S("mprdjbeiak"), 0, 5)); - BOOST_TEST(testS(S("fhepcrntko"), 0, 9)); - BOOST_TEST(testS(S("eqmpaidtls"), 0, 10)); - BOOST_TEST(testS(S("joidhalcmq"), 1, 0)); - BOOST_TEST(testS(S("omigsphflj"), 1, 1)); - BOOST_TEST(testS(S("kocgbphfji"), 1, 4)); - BOOST_TEST(testS(S("onmjekafbi"), 1, 8)); - BOOST_TEST(testS(S("fbslrjiqkm"), 1, 9)); - BOOST_TEST(testS(S("oqmrjahnkg"), 5, 0)); - BOOST_TEST(testS(S("jeidpcmalh"), 5, 1)); - BOOST_TEST(testS(S("schfalibje"), 5, 2)); - BOOST_TEST(testS(S("crliponbqe"), 5, 4)); - BOOST_TEST(testS(S("igdscopqtm"), 5, 5)); - BOOST_TEST(testS(S("qngpdkimlc"), 9, 0)); - BOOST_TEST(testS(S("thdjgafrlb"), 9, 1)); - BOOST_TEST(testS(S("hcjitbfapl"), 10, 0)); - BOOST_TEST(testS(S("mgojkldsqh"), 11, 0)); - BOOST_TEST(testS(S("gfshlcmdjreqipbontak"), 0, 0)); - BOOST_TEST(testS(S("nadkhpfemgclosibtjrq"), 0, 1)); - BOOST_TEST(testS(S("nkodajteqplrbifhmcgs"), 0, 10)); - BOOST_TEST(testS(S("ofdrqmkeblthacpgijsn"), 0, 19)); - BOOST_TEST(testS(S("gbmetiprqdoasckjfhln"), 0, 20)); - BOOST_TEST(testS(S("bdfjqgatlksriohemnpc"), 1, 0)); - BOOST_TEST(testS(S("crnklpmegdqfiashtojb"), 1, 1)); - BOOST_TEST(testS(S("ejqcnahdrkfsmptilgbo"), 1, 9)); - BOOST_TEST(testS(S("jsbtafedocnirgpmkhql"), 1, 18)); - BOOST_TEST(testS(S("prqgnlbaejsmkhdctoif"), 1, 19)); - BOOST_TEST(testS(S("qnmodrtkebhpasifgcjl"), 10, 0)); - BOOST_TEST(testS(S("pejafmnokrqhtisbcdgl"), 10, 1)); - BOOST_TEST(testS(S("cpebqsfmnjdolhkratgi"), 10, 5)); - BOOST_TEST(testS(S("odnqkgijrhabfmcestlp"), 10, 9)); - BOOST_TEST(testS(S("lmofqdhpkibagnrcjste"), 10, 10)); - BOOST_TEST(testS(S("lgjqketopbfahrmnsicd"), 19, 0)); - BOOST_TEST(testS(S("ktsrmnqagdecfhijpobl"), 19, 1)); - BOOST_TEST(testS(S("lsaijeqhtrbgcdmpfkno"), 20, 0)); - BOOST_TEST(testS(S("dplqartnfgejichmoskb"), 21, 0)); - BOOST_TEST(testS(S(""), 0, 0)); - BOOST_TEST(testS(S(""), 1, 0)); - BOOST_TEST(testS(S("pniot"), 0, 0)); - BOOST_TEST(testS(S("htaob"), 0, 1)); - BOOST_TEST(testS(S("fodgq"), 0, 2)); - BOOST_TEST(testS(S("hpqia"), 0, 4)); - BOOST_TEST(testS(S("qanej"), 0, 5)); - BOOST_TEST(testS(S("dfkap"), 1, 0)); - BOOST_TEST(testS(S("clbao"), 1, 1)); - BOOST_TEST(testS(S("ihqrf"), 1, 2)); - BOOST_TEST(testS(S("mekdn"), 1, 3)); - BOOST_TEST(testS(S("ngtjf"), 1, 4)); - BOOST_TEST(testS(S("srdfq"), 2, 0)); - BOOST_TEST(testS(S("qkdrs"), 2, 1)); - BOOST_TEST(testS(S("ikcrq"), 2, 2)); - BOOST_TEST(testS(S("cdaih"), 2, 3)); - BOOST_TEST(testS(S("dmajb"), 4, 0)); - BOOST_TEST(testS(S("karth"), 4, 1)); - BOOST_TEST(testS(S("lhcdo"), 5, 0)); - BOOST_TEST(testS(S("acbsj"), 6, 0)); - BOOST_TEST(testS(S("pbsjikaole"), 0, 0)); - BOOST_TEST(testS(S("pcbahntsje"), 0, 1)); - BOOST_TEST(testS(S("mprdjbeiak"), 0, 5)); - BOOST_TEST(testS(S("fhepcrntko"), 0, 9)); - BOOST_TEST(testS(S("eqmpaidtls"), 0, 10)); - BOOST_TEST(testS(S("joidhalcmq"), 1, 0)); - BOOST_TEST(testS(S("omigsphflj"), 1, 1)); - BOOST_TEST(testS(S("kocgbphfji"), 1, 4)); - BOOST_TEST(testS(S("onmjekafbi"), 1, 8)); - BOOST_TEST(testS(S("fbslrjiqkm"), 1, 9)); - BOOST_TEST(testS(S("oqmrjahnkg"), 5, 0)); - BOOST_TEST(testS(S("jeidpcmalh"), 5, 1)); - BOOST_TEST(testS(S("schfalibje"), 5, 2)); - BOOST_TEST(testS(S("crliponbqe"), 5, 4)); - BOOST_TEST(testS(S("igdscopqtm"), 5, 5)); - BOOST_TEST(testS(S("qngpdkimlc"), 9, 0)); - BOOST_TEST(testS(S("thdjgafrlb"), 9, 1)); - BOOST_TEST(testS(S("hcjitbfapl"), 10, 0)); - BOOST_TEST(testS(S("mgojkldsqh"), 11, 0)); - BOOST_TEST(testS(S("gfshlcmdjreqipbontak"), 0, 0)); - BOOST_TEST(testS(S("nadkhpfemgclosibtjrq"), 0, 1)); - BOOST_TEST(testS(S("nkodajteqplrbifhmcgs"), 0, 10)); - BOOST_TEST(testS(S("ofdrqmkeblthacpgijsn"), 0, 19)); - BOOST_TEST(testS(S("gbmetiprqdoasckjfhln"), 0, 20)); - BOOST_TEST(testS(S("bdfjqgatlksriohemnpc"), 1, 0)); - BOOST_TEST(testS(S("crnklpmegdqfiashtojb"), 1, 1)); - BOOST_TEST(testS(S("ejqcnahdrkfsmptilgbo"), 1, 9)); - BOOST_TEST(testS(S("jsbtafedocnirgpmkhql"), 1, 18)); - BOOST_TEST(testS(S("prqgnlbaejsmkhdctoif"), 1, 19)); - BOOST_TEST(testS(S("qnmodrtkebhpasifgcjl"), 10, 0)); - BOOST_TEST(testS(S("pejafmnokrqhtisbcdgl"), 10, 1)); - BOOST_TEST(testS(S("cpebqsfmnjdolhkratgi"), 10, 5)); - BOOST_TEST(testS(S("odnqkgijrhabfmcestlp"), 10, 9)); - BOOST_TEST(testS(S("lmofqdhpkibagnrcjste"), 10, 10)); - BOOST_TEST(testS(S("lgjqketopbfahrmnsicd"), 19, 0)); - BOOST_TEST(testS(S("ktsrmnqagdecfhijpobl"), 19, 1)); - BOOST_TEST(testS(S("lsaijeqhtrbgcdmpfkno"), 20, 0)); + using S = static_string<400>; + BOOST_TEST(testS(S(""), 0, 0)); + BOOST_TEST(testS(S(""), 1, 0)); + BOOST_TEST(testS(S("pniot"), 0, 0)); + BOOST_TEST(testS(S("htaob"), 0, 1)); + BOOST_TEST(testS(S("fodgq"), 0, 2)); + BOOST_TEST(testS(S("hpqia"), 0, 4)); + BOOST_TEST(testS(S("qanej"), 0, 5)); + BOOST_TEST(testS(S("dfkap"), 1, 0)); + BOOST_TEST(testS(S("clbao"), 1, 1)); + BOOST_TEST(testS(S("ihqrf"), 1, 2)); + BOOST_TEST(testS(S("mekdn"), 1, 3)); + BOOST_TEST(testS(S("ngtjf"), 1, 4)); + BOOST_TEST(testS(S("srdfq"), 2, 0)); + BOOST_TEST(testS(S("qkdrs"), 2, 1)); + BOOST_TEST(testS(S("ikcrq"), 2, 2)); + BOOST_TEST(testS(S("cdaih"), 2, 3)); + BOOST_TEST(testS(S("dmajb"), 4, 0)); + BOOST_TEST(testS(S("karth"), 4, 1)); + BOOST_TEST(testS(S("lhcdo"), 5, 0)); + BOOST_TEST(testS(S("acbsj"), 6, 0)); + BOOST_TEST(testS(S("pbsjikaole"), 0, 0)); + BOOST_TEST(testS(S("pcbahntsje"), 0, 1)); + BOOST_TEST(testS(S("mprdjbeiak"), 0, 5)); + BOOST_TEST(testS(S("fhepcrntko"), 0, 9)); + BOOST_TEST(testS(S("eqmpaidtls"), 0, 10)); + BOOST_TEST(testS(S("joidhalcmq"), 1, 0)); + BOOST_TEST(testS(S("omigsphflj"), 1, 1)); + BOOST_TEST(testS(S("kocgbphfji"), 1, 4)); + BOOST_TEST(testS(S("onmjekafbi"), 1, 8)); + BOOST_TEST(testS(S("fbslrjiqkm"), 1, 9)); + BOOST_TEST(testS(S("oqmrjahnkg"), 5, 0)); + BOOST_TEST(testS(S("jeidpcmalh"), 5, 1)); + BOOST_TEST(testS(S("schfalibje"), 5, 2)); + BOOST_TEST(testS(S("crliponbqe"), 5, 4)); + BOOST_TEST(testS(S("igdscopqtm"), 5, 5)); + BOOST_TEST(testS(S("qngpdkimlc"), 9, 0)); + BOOST_TEST(testS(S("thdjgafrlb"), 9, 1)); + BOOST_TEST(testS(S("hcjitbfapl"), 10, 0)); + BOOST_TEST(testS(S("mgojkldsqh"), 11, 0)); + BOOST_TEST(testS(S("gfshlcmdjreqipbontak"), 0, 0)); + BOOST_TEST(testS(S("nadkhpfemgclosibtjrq"), 0, 1)); + BOOST_TEST(testS(S("nkodajteqplrbifhmcgs"), 0, 10)); + BOOST_TEST(testS(S("ofdrqmkeblthacpgijsn"), 0, 19)); + BOOST_TEST(testS(S("gbmetiprqdoasckjfhln"), 0, 20)); + BOOST_TEST(testS(S("bdfjqgatlksriohemnpc"), 1, 0)); + BOOST_TEST(testS(S("crnklpmegdqfiashtojb"), 1, 1)); + BOOST_TEST(testS(S("ejqcnahdrkfsmptilgbo"), 1, 9)); + BOOST_TEST(testS(S("jsbtafedocnirgpmkhql"), 1, 18)); + BOOST_TEST(testS(S("prqgnlbaejsmkhdctoif"), 1, 19)); + BOOST_TEST(testS(S("qnmodrtkebhpasifgcjl"), 10, 0)); + BOOST_TEST(testS(S("pejafmnokrqhtisbcdgl"), 10, 1)); + BOOST_TEST(testS(S("cpebqsfmnjdolhkratgi"), 10, 5)); + BOOST_TEST(testS(S("odnqkgijrhabfmcestlp"), 10, 9)); + BOOST_TEST(testS(S("lmofqdhpkibagnrcjste"), 10, 10)); + BOOST_TEST(testS(S("lgjqketopbfahrmnsicd"), 19, 0)); + BOOST_TEST(testS(S("ktsrmnqagdecfhijpobl"), 19, 1)); + BOOST_TEST(testS(S("lsaijeqhtrbgcdmpfkno"), 20, 0)); + BOOST_TEST(testS(S("dplqartnfgejichmoskb"), 21, 0)); + BOOST_TEST(testS(S(""), 0, 0)); + BOOST_TEST(testS(S(""), 1, 0)); + BOOST_TEST(testS(S("pniot"), 0, 0)); + BOOST_TEST(testS(S("htaob"), 0, 1)); + BOOST_TEST(testS(S("fodgq"), 0, 2)); + BOOST_TEST(testS(S("hpqia"), 0, 4)); + BOOST_TEST(testS(S("qanej"), 0, 5)); + BOOST_TEST(testS(S("dfkap"), 1, 0)); + BOOST_TEST(testS(S("clbao"), 1, 1)); + BOOST_TEST(testS(S("ihqrf"), 1, 2)); + BOOST_TEST(testS(S("mekdn"), 1, 3)); + BOOST_TEST(testS(S("ngtjf"), 1, 4)); + BOOST_TEST(testS(S("srdfq"), 2, 0)); + BOOST_TEST(testS(S("qkdrs"), 2, 1)); + BOOST_TEST(testS(S("ikcrq"), 2, 2)); + BOOST_TEST(testS(S("cdaih"), 2, 3)); + BOOST_TEST(testS(S("dmajb"), 4, 0)); + BOOST_TEST(testS(S("karth"), 4, 1)); + BOOST_TEST(testS(S("lhcdo"), 5, 0)); + BOOST_TEST(testS(S("acbsj"), 6, 0)); + BOOST_TEST(testS(S("pbsjikaole"), 0, 0)); + BOOST_TEST(testS(S("pcbahntsje"), 0, 1)); + BOOST_TEST(testS(S("mprdjbeiak"), 0, 5)); + BOOST_TEST(testS(S("fhepcrntko"), 0, 9)); + BOOST_TEST(testS(S("eqmpaidtls"), 0, 10)); + BOOST_TEST(testS(S("joidhalcmq"), 1, 0)); + BOOST_TEST(testS(S("omigsphflj"), 1, 1)); + BOOST_TEST(testS(S("kocgbphfji"), 1, 4)); + BOOST_TEST(testS(S("onmjekafbi"), 1, 8)); + BOOST_TEST(testS(S("fbslrjiqkm"), 1, 9)); + BOOST_TEST(testS(S("oqmrjahnkg"), 5, 0)); + BOOST_TEST(testS(S("jeidpcmalh"), 5, 1)); + BOOST_TEST(testS(S("schfalibje"), 5, 2)); + BOOST_TEST(testS(S("crliponbqe"), 5, 4)); + BOOST_TEST(testS(S("igdscopqtm"), 5, 5)); + BOOST_TEST(testS(S("qngpdkimlc"), 9, 0)); + BOOST_TEST(testS(S("thdjgafrlb"), 9, 1)); + BOOST_TEST(testS(S("hcjitbfapl"), 10, 0)); + BOOST_TEST(testS(S("mgojkldsqh"), 11, 0)); + BOOST_TEST(testS(S("gfshlcmdjreqipbontak"), 0, 0)); + BOOST_TEST(testS(S("nadkhpfemgclosibtjrq"), 0, 1)); + BOOST_TEST(testS(S("nkodajteqplrbifhmcgs"), 0, 10)); + BOOST_TEST(testS(S("ofdrqmkeblthacpgijsn"), 0, 19)); + BOOST_TEST(testS(S("gbmetiprqdoasckjfhln"), 0, 20)); + BOOST_TEST(testS(S("bdfjqgatlksriohemnpc"), 1, 0)); + BOOST_TEST(testS(S("crnklpmegdqfiashtojb"), 1, 1)); + BOOST_TEST(testS(S("ejqcnahdrkfsmptilgbo"), 1, 9)); + BOOST_TEST(testS(S("jsbtafedocnirgpmkhql"), 1, 18)); + BOOST_TEST(testS(S("prqgnlbaejsmkhdctoif"), 1, 19)); + BOOST_TEST(testS(S("qnmodrtkebhpasifgcjl"), 10, 0)); + BOOST_TEST(testS(S("pejafmnokrqhtisbcdgl"), 10, 1)); + BOOST_TEST(testS(S("cpebqsfmnjdolhkratgi"), 10, 5)); + BOOST_TEST(testS(S("odnqkgijrhabfmcestlp"), 10, 9)); + BOOST_TEST(testS(S("lmofqdhpkibagnrcjste"), 10, 10)); + BOOST_TEST(testS(S("lgjqketopbfahrmnsicd"), 19, 0)); + BOOST_TEST(testS(S("ktsrmnqagdecfhijpobl"), 19, 1)); + BOOST_TEST(testS(S("lsaijeqhtrbgcdmpfkno"), 20, 0)); BOOST_TEST(testS(S("dplqartnfgejichmoskb"), 21, 0)); } @@ -6754,122 +6755,122 @@ testSubstr() void testSubview() { - using S = fixed_string<400>; - BOOST_TEST(testSV(S(""), 0, 0)); - BOOST_TEST(testSV(S(""), 1, 0)); - BOOST_TEST(testSV(S("pniot"), 0, 0)); - BOOST_TEST(testSV(S("htaob"), 0, 1)); - BOOST_TEST(testSV(S("fodgq"), 0, 2)); - BOOST_TEST(testSV(S("hpqia"), 0, 4)); - BOOST_TEST(testSV(S("qanej"), 0, 5)); - BOOST_TEST(testSV(S("dfkap"), 1, 0)); - BOOST_TEST(testSV(S("clbao"), 1, 1)); - BOOST_TEST(testSV(S("ihqrf"), 1, 2)); - BOOST_TEST(testSV(S("mekdn"), 1, 3)); - BOOST_TEST(testSV(S("ngtjf"), 1, 4)); - BOOST_TEST(testSV(S("srdfq"), 2, 0)); - BOOST_TEST(testSV(S("qkdrs"), 2, 1)); - BOOST_TEST(testSV(S("ikcrq"), 2, 2)); - BOOST_TEST(testSV(S("cdaih"), 2, 3)); - BOOST_TEST(testSV(S("dmajb"), 4, 0)); - BOOST_TEST(testSV(S("karth"), 4, 1)); - BOOST_TEST(testSV(S("lhcdo"), 5, 0)); - BOOST_TEST(testSV(S("acbsj"), 6, 0)); - BOOST_TEST(testSV(S("pbsjikaole"), 0, 0)); - BOOST_TEST(testSV(S("pcbahntsje"), 0, 1)); - BOOST_TEST(testSV(S("mprdjbeiak"), 0, 5)); - BOOST_TEST(testSV(S("fhepcrntko"), 0, 9)); - BOOST_TEST(testSV(S("eqmpaidtls"), 0, 10)); - BOOST_TEST(testSV(S("joidhalcmq"), 1, 0)); - BOOST_TEST(testSV(S("omigsphflj"), 1, 1)); - BOOST_TEST(testSV(S("kocgbphfji"), 1, 4)); - BOOST_TEST(testSV(S("onmjekafbi"), 1, 8)); - BOOST_TEST(testSV(S("fbslrjiqkm"), 1, 9)); - BOOST_TEST(testSV(S("oqmrjahnkg"), 5, 0)); - BOOST_TEST(testSV(S("jeidpcmalh"), 5, 1)); - BOOST_TEST(testSV(S("schfalibje"), 5, 2)); - BOOST_TEST(testSV(S("crliponbqe"), 5, 4)); - BOOST_TEST(testSV(S("igdscopqtm"), 5, 5)); - BOOST_TEST(testSV(S("qngpdkimlc"), 9, 0)); - BOOST_TEST(testSV(S("thdjgafrlb"), 9, 1)); - BOOST_TEST(testSV(S("hcjitbfapl"), 10, 0)); - BOOST_TEST(testSV(S("mgojkldsqh"), 11, 0)); - BOOST_TEST(testSV(S("gfshlcmdjreqipbontak"), 0, 0)); - BOOST_TEST(testSV(S("nadkhpfemgclosibtjrq"), 0, 1)); - BOOST_TEST(testSV(S("nkodajteqplrbifhmcgs"), 0, 10)); - BOOST_TEST(testSV(S("ofdrqmkeblthacpgijsn"), 0, 19)); - BOOST_TEST(testSV(S("gbmetiprqdoasckjfhln"), 0, 20)); - BOOST_TEST(testSV(S("bdfjqgatlksriohemnpc"), 1, 0)); - BOOST_TEST(testSV(S("crnklpmegdqfiashtojb"), 1, 1)); - BOOST_TEST(testSV(S("ejqcnahdrkfsmptilgbo"), 1, 9)); - BOOST_TEST(testSV(S("jsbtafedocnirgpmkhql"), 1, 18)); - BOOST_TEST(testSV(S("prqgnlbaejsmkhdctoif"), 1, 19)); - BOOST_TEST(testSV(S("qnmodrtkebhpasifgcjl"), 10, 0)); - BOOST_TEST(testSV(S("pejafmnokrqhtisbcdgl"), 10, 1)); - BOOST_TEST(testSV(S("cpebqsfmnjdolhkratgi"), 10, 5)); - BOOST_TEST(testSV(S("odnqkgijrhabfmcestlp"), 10, 9)); - BOOST_TEST(testSV(S("lmofqdhpkibagnrcjste"), 10, 10)); - BOOST_TEST(testSV(S("lgjqketopbfahrmnsicd"), 19, 0)); - BOOST_TEST(testSV(S("ktsrmnqagdecfhijpobl"), 19, 1)); - BOOST_TEST(testSV(S("lsaijeqhtrbgcdmpfkno"), 20, 0)); - BOOST_TEST(testSV(S("dplqartnfgejichmoskb"), 21, 0)); - BOOST_TEST(testSV(S(""), 0, 0)); - BOOST_TEST(testSV(S(""), 1, 0)); - BOOST_TEST(testSV(S("pniot"), 0, 0)); - BOOST_TEST(testSV(S("htaob"), 0, 1)); - BOOST_TEST(testSV(S("fodgq"), 0, 2)); - BOOST_TEST(testSV(S("hpqia"), 0, 4)); - BOOST_TEST(testSV(S("qanej"), 0, 5)); - BOOST_TEST(testSV(S("dfkap"), 1, 0)); - BOOST_TEST(testSV(S("clbao"), 1, 1)); - BOOST_TEST(testSV(S("ihqrf"), 1, 2)); - BOOST_TEST(testSV(S("mekdn"), 1, 3)); - BOOST_TEST(testSV(S("ngtjf"), 1, 4)); - BOOST_TEST(testSV(S("srdfq"), 2, 0)); - BOOST_TEST(testSV(S("qkdrs"), 2, 1)); - BOOST_TEST(testSV(S("ikcrq"), 2, 2)); - BOOST_TEST(testSV(S("cdaih"), 2, 3)); - BOOST_TEST(testSV(S("dmajb"), 4, 0)); - BOOST_TEST(testSV(S("karth"), 4, 1)); - BOOST_TEST(testSV(S("lhcdo"), 5, 0)); - BOOST_TEST(testSV(S("acbsj"), 6, 0)); - BOOST_TEST(testSV(S("pbsjikaole"), 0, 0)); - BOOST_TEST(testSV(S("pcbahntsje"), 0, 1)); - BOOST_TEST(testSV(S("mprdjbeiak"), 0, 5)); - BOOST_TEST(testSV(S("fhepcrntko"), 0, 9)); - BOOST_TEST(testSV(S("eqmpaidtls"), 0, 10)); - BOOST_TEST(testSV(S("joidhalcmq"), 1, 0)); - BOOST_TEST(testSV(S("omigsphflj"), 1, 1)); - BOOST_TEST(testSV(S("kocgbphfji"), 1, 4)); - BOOST_TEST(testSV(S("onmjekafbi"), 1, 8)); - BOOST_TEST(testSV(S("fbslrjiqkm"), 1, 9)); - BOOST_TEST(testSV(S("oqmrjahnkg"), 5, 0)); - BOOST_TEST(testSV(S("jeidpcmalh"), 5, 1)); - BOOST_TEST(testSV(S("schfalibje"), 5, 2)); - BOOST_TEST(testSV(S("crliponbqe"), 5, 4)); - BOOST_TEST(testSV(S("igdscopqtm"), 5, 5)); - BOOST_TEST(testSV(S("qngpdkimlc"), 9, 0)); - BOOST_TEST(testSV(S("thdjgafrlb"), 9, 1)); - BOOST_TEST(testSV(S("hcjitbfapl"), 10, 0)); - BOOST_TEST(testSV(S("mgojkldsqh"), 11, 0)); - BOOST_TEST(testSV(S("gfshlcmdjreqipbontak"), 0, 0)); - BOOST_TEST(testSV(S("nadkhpfemgclosibtjrq"), 0, 1)); - BOOST_TEST(testSV(S("nkodajteqplrbifhmcgs"), 0, 10)); - BOOST_TEST(testSV(S("ofdrqmkeblthacpgijsn"), 0, 19)); - BOOST_TEST(testSV(S("gbmetiprqdoasckjfhln"), 0, 20)); - BOOST_TEST(testSV(S("bdfjqgatlksriohemnpc"), 1, 0)); - BOOST_TEST(testSV(S("crnklpmegdqfiashtojb"), 1, 1)); - BOOST_TEST(testSV(S("ejqcnahdrkfsmptilgbo"), 1, 9)); - BOOST_TEST(testSV(S("jsbtafedocnirgpmkhql"), 1, 18)); - BOOST_TEST(testSV(S("prqgnlbaejsmkhdctoif"), 1, 19)); - BOOST_TEST(testSV(S("qnmodrtkebhpasifgcjl"), 10, 0)); - BOOST_TEST(testSV(S("pejafmnokrqhtisbcdgl"), 10, 1)); - BOOST_TEST(testSV(S("cpebqsfmnjdolhkratgi"), 10, 5)); - BOOST_TEST(testSV(S("odnqkgijrhabfmcestlp"), 10, 9)); - BOOST_TEST(testSV(S("lmofqdhpkibagnrcjste"), 10, 10)); - BOOST_TEST(testSV(S("lgjqketopbfahrmnsicd"), 19, 0)); - BOOST_TEST(testSV(S("ktsrmnqagdecfhijpobl"), 19, 1)); - BOOST_TEST(testSV(S("lsaijeqhtrbgcdmpfkno"), 20, 0)); + using S = static_string<400>; + BOOST_TEST(testSV(S(""), 0, 0)); + BOOST_TEST(testSV(S(""), 1, 0)); + BOOST_TEST(testSV(S("pniot"), 0, 0)); + BOOST_TEST(testSV(S("htaob"), 0, 1)); + BOOST_TEST(testSV(S("fodgq"), 0, 2)); + BOOST_TEST(testSV(S("hpqia"), 0, 4)); + BOOST_TEST(testSV(S("qanej"), 0, 5)); + BOOST_TEST(testSV(S("dfkap"), 1, 0)); + BOOST_TEST(testSV(S("clbao"), 1, 1)); + BOOST_TEST(testSV(S("ihqrf"), 1, 2)); + BOOST_TEST(testSV(S("mekdn"), 1, 3)); + BOOST_TEST(testSV(S("ngtjf"), 1, 4)); + BOOST_TEST(testSV(S("srdfq"), 2, 0)); + BOOST_TEST(testSV(S("qkdrs"), 2, 1)); + BOOST_TEST(testSV(S("ikcrq"), 2, 2)); + BOOST_TEST(testSV(S("cdaih"), 2, 3)); + BOOST_TEST(testSV(S("dmajb"), 4, 0)); + BOOST_TEST(testSV(S("karth"), 4, 1)); + BOOST_TEST(testSV(S("lhcdo"), 5, 0)); + BOOST_TEST(testSV(S("acbsj"), 6, 0)); + BOOST_TEST(testSV(S("pbsjikaole"), 0, 0)); + BOOST_TEST(testSV(S("pcbahntsje"), 0, 1)); + BOOST_TEST(testSV(S("mprdjbeiak"), 0, 5)); + BOOST_TEST(testSV(S("fhepcrntko"), 0, 9)); + BOOST_TEST(testSV(S("eqmpaidtls"), 0, 10)); + BOOST_TEST(testSV(S("joidhalcmq"), 1, 0)); + BOOST_TEST(testSV(S("omigsphflj"), 1, 1)); + BOOST_TEST(testSV(S("kocgbphfji"), 1, 4)); + BOOST_TEST(testSV(S("onmjekafbi"), 1, 8)); + BOOST_TEST(testSV(S("fbslrjiqkm"), 1, 9)); + BOOST_TEST(testSV(S("oqmrjahnkg"), 5, 0)); + BOOST_TEST(testSV(S("jeidpcmalh"), 5, 1)); + BOOST_TEST(testSV(S("schfalibje"), 5, 2)); + BOOST_TEST(testSV(S("crliponbqe"), 5, 4)); + BOOST_TEST(testSV(S("igdscopqtm"), 5, 5)); + BOOST_TEST(testSV(S("qngpdkimlc"), 9, 0)); + BOOST_TEST(testSV(S("thdjgafrlb"), 9, 1)); + BOOST_TEST(testSV(S("hcjitbfapl"), 10, 0)); + BOOST_TEST(testSV(S("mgojkldsqh"), 11, 0)); + BOOST_TEST(testSV(S("gfshlcmdjreqipbontak"), 0, 0)); + BOOST_TEST(testSV(S("nadkhpfemgclosibtjrq"), 0, 1)); + BOOST_TEST(testSV(S("nkodajteqplrbifhmcgs"), 0, 10)); + BOOST_TEST(testSV(S("ofdrqmkeblthacpgijsn"), 0, 19)); + BOOST_TEST(testSV(S("gbmetiprqdoasckjfhln"), 0, 20)); + BOOST_TEST(testSV(S("bdfjqgatlksriohemnpc"), 1, 0)); + BOOST_TEST(testSV(S("crnklpmegdqfiashtojb"), 1, 1)); + BOOST_TEST(testSV(S("ejqcnahdrkfsmptilgbo"), 1, 9)); + BOOST_TEST(testSV(S("jsbtafedocnirgpmkhql"), 1, 18)); + BOOST_TEST(testSV(S("prqgnlbaejsmkhdctoif"), 1, 19)); + BOOST_TEST(testSV(S("qnmodrtkebhpasifgcjl"), 10, 0)); + BOOST_TEST(testSV(S("pejafmnokrqhtisbcdgl"), 10, 1)); + BOOST_TEST(testSV(S("cpebqsfmnjdolhkratgi"), 10, 5)); + BOOST_TEST(testSV(S("odnqkgijrhabfmcestlp"), 10, 9)); + BOOST_TEST(testSV(S("lmofqdhpkibagnrcjste"), 10, 10)); + BOOST_TEST(testSV(S("lgjqketopbfahrmnsicd"), 19, 0)); + BOOST_TEST(testSV(S("ktsrmnqagdecfhijpobl"), 19, 1)); + BOOST_TEST(testSV(S("lsaijeqhtrbgcdmpfkno"), 20, 0)); + BOOST_TEST(testSV(S("dplqartnfgejichmoskb"), 21, 0)); + BOOST_TEST(testSV(S(""), 0, 0)); + BOOST_TEST(testSV(S(""), 1, 0)); + BOOST_TEST(testSV(S("pniot"), 0, 0)); + BOOST_TEST(testSV(S("htaob"), 0, 1)); + BOOST_TEST(testSV(S("fodgq"), 0, 2)); + BOOST_TEST(testSV(S("hpqia"), 0, 4)); + BOOST_TEST(testSV(S("qanej"), 0, 5)); + BOOST_TEST(testSV(S("dfkap"), 1, 0)); + BOOST_TEST(testSV(S("clbao"), 1, 1)); + BOOST_TEST(testSV(S("ihqrf"), 1, 2)); + BOOST_TEST(testSV(S("mekdn"), 1, 3)); + BOOST_TEST(testSV(S("ngtjf"), 1, 4)); + BOOST_TEST(testSV(S("srdfq"), 2, 0)); + BOOST_TEST(testSV(S("qkdrs"), 2, 1)); + BOOST_TEST(testSV(S("ikcrq"), 2, 2)); + BOOST_TEST(testSV(S("cdaih"), 2, 3)); + BOOST_TEST(testSV(S("dmajb"), 4, 0)); + BOOST_TEST(testSV(S("karth"), 4, 1)); + BOOST_TEST(testSV(S("lhcdo"), 5, 0)); + BOOST_TEST(testSV(S("acbsj"), 6, 0)); + BOOST_TEST(testSV(S("pbsjikaole"), 0, 0)); + BOOST_TEST(testSV(S("pcbahntsje"), 0, 1)); + BOOST_TEST(testSV(S("mprdjbeiak"), 0, 5)); + BOOST_TEST(testSV(S("fhepcrntko"), 0, 9)); + BOOST_TEST(testSV(S("eqmpaidtls"), 0, 10)); + BOOST_TEST(testSV(S("joidhalcmq"), 1, 0)); + BOOST_TEST(testSV(S("omigsphflj"), 1, 1)); + BOOST_TEST(testSV(S("kocgbphfji"), 1, 4)); + BOOST_TEST(testSV(S("onmjekafbi"), 1, 8)); + BOOST_TEST(testSV(S("fbslrjiqkm"), 1, 9)); + BOOST_TEST(testSV(S("oqmrjahnkg"), 5, 0)); + BOOST_TEST(testSV(S("jeidpcmalh"), 5, 1)); + BOOST_TEST(testSV(S("schfalibje"), 5, 2)); + BOOST_TEST(testSV(S("crliponbqe"), 5, 4)); + BOOST_TEST(testSV(S("igdscopqtm"), 5, 5)); + BOOST_TEST(testSV(S("qngpdkimlc"), 9, 0)); + BOOST_TEST(testSV(S("thdjgafrlb"), 9, 1)); + BOOST_TEST(testSV(S("hcjitbfapl"), 10, 0)); + BOOST_TEST(testSV(S("mgojkldsqh"), 11, 0)); + BOOST_TEST(testSV(S("gfshlcmdjreqipbontak"), 0, 0)); + BOOST_TEST(testSV(S("nadkhpfemgclosibtjrq"), 0, 1)); + BOOST_TEST(testSV(S("nkodajteqplrbifhmcgs"), 0, 10)); + BOOST_TEST(testSV(S("ofdrqmkeblthacpgijsn"), 0, 19)); + BOOST_TEST(testSV(S("gbmetiprqdoasckjfhln"), 0, 20)); + BOOST_TEST(testSV(S("bdfjqgatlksriohemnpc"), 1, 0)); + BOOST_TEST(testSV(S("crnklpmegdqfiashtojb"), 1, 1)); + BOOST_TEST(testSV(S("ejqcnahdrkfsmptilgbo"), 1, 9)); + BOOST_TEST(testSV(S("jsbtafedocnirgpmkhql"), 1, 18)); + BOOST_TEST(testSV(S("prqgnlbaejsmkhdctoif"), 1, 19)); + BOOST_TEST(testSV(S("qnmodrtkebhpasifgcjl"), 10, 0)); + BOOST_TEST(testSV(S("pejafmnokrqhtisbcdgl"), 10, 1)); + BOOST_TEST(testSV(S("cpebqsfmnjdolhkratgi"), 10, 5)); + BOOST_TEST(testSV(S("odnqkgijrhabfmcestlp"), 10, 9)); + BOOST_TEST(testSV(S("lmofqdhpkibagnrcjste"), 10, 10)); + BOOST_TEST(testSV(S("lgjqketopbfahrmnsicd"), 19, 0)); + BOOST_TEST(testSV(S("ktsrmnqagdecfhijpobl"), 19, 1)); + BOOST_TEST(testSV(S("lsaijeqhtrbgcdmpfkno"), 20, 0)); BOOST_TEST(testSV(S("dplqartnfgejichmoskb"), 21, 0)); } @@ -6877,7 +6878,7 @@ testSubview() void testStartsEnds() { - using S = fixed_string<400>; + using S = static_string<400>; BOOST_TEST(S("1234567890").starts_with('1')); BOOST_TEST(S("1234567890").starts_with("123")); BOOST_TEST(S("1234567890").starts_with("1234567890")); @@ -6895,15 +6896,86 @@ testStartsEnds() void testHash() { - using U = fixed_string<30>; + using U = static_string<30>; std::hash hasher; BOOST_TEST(hasher(U("1")) != hasher(U("123456789"))); BOOST_TEST(hasher(U("1234567890")) == hasher(U("1234567890"))); } +#ifdef BOOST_STATIC_STRING_CPP14_CONSTEXPR_USED +struct cxper_char_traits +{ + using char_type = char; + using int_type = int; + using state_type = mbstate_t; + + static constexpr void assign(char_type& c1, const char_type& c2) noexcept { } + static constexpr bool eq(char_type c1, char_type c2) noexcept { return true; } + static constexpr bool lt(char_type c1, char_type c2) noexcept { return true; } + + static constexpr int compare(const char_type* s1, const char_type* s2, size_t n) { return 0; } + static constexpr size_t length(const char_type* s) { return 0; } + static constexpr const char_type* find(const char_type* s, size_t n, + const char_type& a) { return 0; } + static constexpr char_type* move(char_type* s1, const char_type* s2, size_t n) { return s1; } + static constexpr char_type* copy(char_type* s1, const char_type* s2, size_t n) { return s1; } + static constexpr char_type* assign(char_type* s, size_t n, char_type a) { return s; } +}; +#endif + +constexpr bool testConstexpr() +{ +#if __cplusplus > 201703L + // c++20 constexpr tests + +#elif __cplusplus >= 201703L + // c++17 constexpr tests + +#elif __cplusplus >= 201402L + // c++14 constexpr tests + static_string<4> a; + + + using S = basic_static_string<16, char, cxper_char_traits>; + // ctor + { + constexpr S s1; + constexpr S s2(1, 'a'); + constexpr S s3(""); + constexpr S s4("", 1); + constexpr S s5 = s1; + constexpr auto b = s1.size(); + constexpr auto c = s1.empty(); + constexpr auto d = s1.max_size(); + constexpr auto e = s1.capacity(); + constexpr auto f = s1.length(); + constexpr auto g = s2.front(); + constexpr auto h = s2.back(); + constexpr auto k = s2.begin(); + constexpr auto l = s2.end(); + constexpr auto i = s2.data(); + constexpr auto j = s2.c_str(); + } + + //constexpr auto g = s1.assign(1, '1'); + //constexpr auto h = s1.assign({'1'}); + //constexpr auto i = s1.assign("", 1); + +#else __cplusplus >= 201103L + // c++11 constexpr tests + static_string<4> a; + auto b = a.size(); + auto c = a.empty(); + auto d = a.empty(); +#endif + return true; +} + int runTests() { + constexpr auto cxper = testConstexpr(); + testConstruct(); testAssignment(); @@ -6939,30 +7011,30 @@ runTests() } static_assert(std::is_base_of< - detail::fixed_string_base_zero<0, char, std::char_traits>, - fixed_string<0>>::value, + detail::static_string_base_zero<0, char, std::char_traits>, + static_string<0>>::value, "the zero size optimization shall be used for N = 0"); -//static_assert(std::is_base_of< -// detail::fixed_string_base_null<1, char, std::char_traits>, -// fixed_string<1>>::value, -// "the null terminator optimization shall be used for N <= (std::numeric_limits::max)()"); -// -//static_assert(std::is_base_of< -// detail::fixed_string_base_null<(std::numeric_limits::max)(), char, std::char_traits>, -// fixed_string<(std::numeric_limits::max)()>>::value, -// "the null terminator optimization shall be used for N <= std::numeric_limits::max()"); +static_assert(std::is_base_of< + detail::static_string_base_null<1, char, std::char_traits>, + static_string<1>>::value, + "the null terminator optimization shall be used for N <= (std::numeric_limits::max)()"); static_assert(std::is_base_of< - detail::fixed_string_base_zero<(std::numeric_limits::max)() + 1, char, std::char_traits>, - fixed_string<(std::numeric_limits::max)() + 1>>::value, + detail::static_string_base_null<(std::numeric_limits::max)(), char, std::char_traits>, + static_string<(std::numeric_limits::max)()>>::value, + "the null terminator optimization shall be used for N <= std::numeric_limits::max()"); + +static_assert(std::is_base_of< + detail::static_string_base_zero<(std::numeric_limits::max)() + 1, char, std::char_traits>, + static_string<(std::numeric_limits::max)() + 1>>::value, "the minimum size type optimization shall be used for N > std::numeric_limits::max()"); -} // fixed_string +} // static_string } // boost int main() { - return boost::fixed_string::runTests(); + return boost::static_string::runTests(); } \ No newline at end of file