summaryrefslogtreecommitdiff
path: root/libcxx/test/std/strings/basic.string/string.modifiers/string_append/pointer.pass.cpp
diff options
context:
space:
mode:
authorMarshall Clow <mclow.lists@gmail.com>2016-09-05 01:54:30 +0000
committerMarshall Clow <mclow.lists@gmail.com>2016-09-05 01:54:30 +0000
commit7e1a23001d68893ee10d68e8664021a00fa0bb2c (patch)
treec7483c76c95ae7d44c39f7093522ae8174c92411 /libcxx/test/std/strings/basic.string/string.modifiers/string_append/pointer.pass.cpp
parente9dd46f4d0863e8bc9fa55357dd4d3adf563afa0 (diff)
Fix Bug 30240 - std::string: append(first, last) error when aliasing. Add test cases for append/insert/assign/replace while we're at it, and fix a similar bug in insert.
llvm-svn: 280643
Diffstat (limited to 'libcxx/test/std/strings/basic.string/string.modifiers/string_append/pointer.pass.cpp')
-rw-r--r--libcxx/test/std/strings/basic.string/string.modifiers/string_append/pointer.pass.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/pointer.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/pointer.pass.cpp
index 7c45068a53e1..e658d0f94232 100644
--- a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/pointer.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/pointer.pass.cpp
@@ -61,4 +61,20 @@ int main()
S("1234567890123456789012345678901234567890"));
}
#endif
+
+ { // test appending to self
+ typedef std::string S;
+ S s_short = "123/";
+ S s_long = "Lorem ipsum dolor sit amet, consectetur/";
+
+ s_short.append(s_short.c_str());
+ assert(s_short == "123/123/");
+ s_short.append(s_short.c_str());
+ assert(s_short == "123/123/123/123/");
+ s_short.append(s_short.c_str());
+ assert(s_short == "123/123/123/123/123/123/123/123/");
+
+ s_long.append(s_long.c_str());
+ assert(s_long == "Lorem ipsum dolor sit amet, consectetur/Lorem ipsum dolor sit amet, consectetur/");
+ }
}