diff options
Diffstat (limited to 'test/std/strings/basic.string/string.modifiers/string_erase')
| -rw-r--r-- | test/std/strings/basic.string/string.modifiers/string_erase/size_size.pass.cpp | 43 |
1 files changed, 30 insertions, 13 deletions
diff --git a/test/std/strings/basic.string/string.modifiers/string_erase/size_size.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_erase/size_size.pass.cpp index 5db97ec2cf5f..eb6be202a350 100644 --- a/test/std/strings/basic.string/string.modifiers/string_erase/size_size.pass.cpp +++ b/test/std/strings/basic.string/string.modifiers/string_erase/size_size.pass.cpp @@ -7,7 +7,6 @@ // //===----------------------------------------------------------------------===// -// XFAIL: libcpp-no-exceptions // <string> // basic_string<charT,traits,Allocator>& @@ -24,40 +23,58 @@ template <class S> void test(S s, typename S::size_type pos, typename S::size_type n, S expected) { - typename S::size_type old_size = s.size(); + const typename S::size_type old_size = s.size(); S s0 = s; - try + if (pos <= old_size) { s.erase(pos, n); LIBCPP_ASSERT(s.__invariants()); - assert(pos <= old_size); assert(s == expected); } - catch (std::out_of_range&) +#ifndef TEST_HAS_NO_EXCEPTIONS + else { - assert(pos > old_size); - assert(s == s0); + try + { + s.erase(pos, n); + assert(false); + } + catch (std::out_of_range&) + { + assert(pos > old_size); + assert(s == s0); + } } +#endif } template <class S> void test(S s, typename S::size_type pos, S expected) { - typename S::size_type old_size = s.size(); + const typename S::size_type old_size = s.size(); S s0 = s; - try + if (pos <= old_size) { s.erase(pos); LIBCPP_ASSERT(s.__invariants()); - assert(pos <= old_size); assert(s == expected); } - catch (std::out_of_range&) +#ifndef TEST_HAS_NO_EXCEPTIONS + else { - assert(pos > old_size); - assert(s == s0); + try + { + s.erase(pos); + assert(false); + } + catch (std::out_of_range&) + { + assert(pos > old_size); + assert(s == s0); + } } +#endif } template <class S> |
