diff options
Diffstat (limited to 'libcxx/test/strings/basic.string/string.modifiers/string_assign')
-rw-r--r-- | libcxx/test/strings/basic.string/string.modifiers/string_assign/string_size_size.pass.cpp | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/libcxx/test/strings/basic.string/string.modifiers/string_assign/string_size_size.pass.cpp b/libcxx/test/strings/basic.string/string.modifiers/string_assign/string_size_size.pass.cpp index 116673cc4dd..5f5983e76c9 100644 --- a/libcxx/test/strings/basic.string/string.modifiers/string_assign/string_size_size.pass.cpp +++ b/libcxx/test/strings/basic.string/string.modifiers/string_assign/string_size_size.pass.cpp @@ -10,7 +10,8 @@ // <string> // basic_string<charT,traits,Allocator>& -// assign(const basic_string<charT,traits>& str, size_type pos, size_type n); +// assign(const basic_string<charT,traits>& str, size_type pos, size_type n=npos); +// the =npos was added for C++14 #include <string> #include <stdexcept> @@ -35,6 +36,23 @@ test(S s, S str, typename S::size_type pos, typename S::size_type n, S expected) } } +template <class S> +void +test_npos(S s, S str, typename S::size_type pos, S expected) +{ + try + { + s.assign(str, pos); + assert(s.__invariants()); + assert(pos <= str.size()); + assert(s == expected); + } + catch (std::out_of_range&) + { + assert(pos > str.size()); + } +} + int main() { { @@ -87,4 +105,14 @@ int main() S("6789012345")); } #endif + { + typedef std::string S; + test_npos(S(), S(), 0, S()); + test_npos(S(), S(), 1, S()); + test_npos(S(), S("12345"), 0, S("12345")); + test_npos(S(), S("12345"), 1, S("2345")); + test_npos(S(), S("12345"), 3, S("45")); + test_npos(S(), S("12345"), 5, S("")); + test_npos(S(), S("12345"), 6, S("not happening")); + } } |