diff options
Diffstat (limited to 'libcxx/test/std/strings/basic.string/string.modifiers/string_append/iterator.pass.cpp')
| -rw-r--r-- | libcxx/test/std/strings/basic.string/string.modifiers/string_append/iterator.pass.cpp | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/iterator.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/iterator.pass.cpp index 8c0d3d78ab8f..31ba8b05faf3 100644 --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/iterator.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/iterator.pass.cpp @@ -34,14 +34,21 @@ template <class S, class It> void test_exceptions(S s, It first, It last) { - S aCopy = s; + S original = s; + typename S::iterator begin = s.begin(); + typename S::iterator end = s.end(); + try { s.append(first, last); assert(false); - } - catch (...) {} + } catch (...) {} + + // Part of "no effects" is that iterators and pointers + // into the string must not have been invalidated. LIBCPP_ASSERT(s.__invariants()); - assert(s == aCopy); + assert(s == original); + assert(s.begin() == begin); + assert(s.end() == end); } #endif |
