summaryrefslogtreecommitdiff
path: root/test/std/strings/basic.string/string.modifiers/string_erase
diff options
context:
space:
mode:
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.cpp43
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>