summaryrefslogtreecommitdiffstats
path: root/libcxx/test/strings/basic.string/string.modifiers/string_assign
diff options
context:
space:
mode:
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.cpp30
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"));
+ }
}
OpenPOWER on IntegriCloud