From 53b88dad6f5e54ad443ef428b1e1dfcea8f7f3d9 Mon Sep 17 00:00:00 2001 From: Marshall Clow Date: Tue, 4 Mar 2014 19:17:19 +0000 Subject: Implement LWG #2268: Setting a default argument in the declaration of a member function assign of std::basic_string. llvm-svn: 202876 --- .../string_assign/string_size_size.pass.cpp | 30 +++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) (limited to 'libcxx/test/strings/basic.string/string.modifiers/string_assign') 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 @@ // // basic_string& -// assign(const basic_string& str, size_type pos, size_type n); +// assign(const basic_string& str, size_type pos, size_type n=npos); +// the =npos was added for C++14 #include #include @@ -35,6 +36,23 @@ test(S s, S str, typename S::size_type pos, typename S::size_type n, S expected) } } +template +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")); + } } -- cgit v1.2.3