diff options
Diffstat (limited to 'libcxx/test/std/strings/basic.string/string.modifiers/string_append')
| -rw-r--r-- | libcxx/test/std/strings/basic.string/string.modifiers/string_append/T_size_size.pass.cpp (renamed from libcxx/test/std/strings/basic.string/string.modifiers/string_append/string_view_size_size.pass.cpp) | 62 |
1 files changed, 59 insertions, 3 deletions
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/string_view_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/T_size_size.pass.cpp index 58585f4ae47..81903796aba 100644 --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/string_view_size_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/T_size_size.pass.cpp @@ -10,9 +10,8 @@ // XFAIL: libcpp-no-exceptions // <string> -// basic_string<charT,traits,Allocator>& -// append(basic_string_view<charT,traits> sv, size_type pos, size_type n = npos); -// the "= npos" was added for C++14 +// template <class T> +// basic_string& append(const T& t, size_type pos, size_type n=npos); // C++17 #include <string> #include <string> @@ -121,4 +120,61 @@ int main() test_npos(S(), SV("12345"), 5, S("")); test_npos(S(), SV("12345"), 6, S("not happening")); } + { + typedef std::string S; + typedef std::string_view SV; + S s; + SV sv = "EFGH"; + char arr[] = "IJKL"; + + s.append("CDEF", 0); // calls append(const char *, len) + assert(s == ""); + s.clear(); + + s.append("QRST", 0, std::string::npos); // calls append(string("QRST"), pos, npos) + assert(s == "QRST"); + s.clear(); + + s.append(sv, 0); // calls append(T, pos, npos) + assert(s == sv); + s.clear(); + + s.append(sv, 0, std::string::npos); // calls append(T, pos, npos) + assert(s == sv); + s.clear(); + + s.append(arr, 0); // calls append(const char *, len) + assert(s == ""); + s.clear(); + + s.append(arr, 0, std::string::npos); // calls append(string("IJKL"), pos, npos) + assert(s == "IJKL"); + s.clear(); + + s.append(arr, 0); // calls append(const char *, len) + assert(s == ""); + s.clear(); + + { + S s = "ABCD"; + SV sv = s; + s.append(sv); + assert(s == "ABCDABCD"); + + sv = s; + s.append(sv, 0, std::string::npos); + assert(s == "ABCDABCDABCDABCD"); + } + + { + S s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + SV sv = s; + s.append(sv); + assert(s == "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ"); + + sv = s; + s.append(sv, 0, std::string::npos); + assert(s == "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ"); + } + } } |

