summaryrefslogtreecommitdiffstats
path: root/libcxx/test/std/strings/basic.string/string.cons
diff options
context:
space:
mode:
Diffstat (limited to 'libcxx/test/std/strings/basic.string/string.cons')
-rw-r--r--libcxx/test/std/strings/basic.string/string.cons/T_size_size.pass.cpp18
1 files changed, 14 insertions, 4 deletions
diff --git a/libcxx/test/std/strings/basic.string/string.cons/T_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/T_size_size.pass.cpp
index edc0f124f69..144a1ab1f58 100644
--- a/libcxx/test/std/strings/basic.string/string.cons/T_size_size.pass.cpp
+++ b/libcxx/test/std/strings/basic.string/string.cons/T_size_size.pass.cpp
@@ -31,7 +31,7 @@ test(SV sv, unsigned pos, unsigned n)
{
typedef typename S::traits_type T;
typedef typename S::allocator_type A;
- try
+ if (pos <= sv.size())
{
S s2(sv, pos, n);
LIBCPP_ASSERT(s2.__invariants());
@@ -42,10 +42,20 @@ test(SV sv, unsigned pos, unsigned n)
assert(s2.get_allocator() == A());
assert(s2.capacity() >= s2.size());
}
- catch (std::out_of_range&)
+#ifndef TEST_HAS_NO_EXCEPTIONS
+ else
{
- assert(pos > sv.size());
+ try
+ {
+ S s2(sv, pos, n);
+ assert(false);
+ }
+ catch (std::out_of_range&)
+ {
+ assert(pos > sv.size());
+ }
}
+#endif
}
template <class S, class SV>
@@ -162,5 +172,5 @@ int main()
S s7(s.data(), 2); // calls ctor(const char *, len)
assert(s7 == "AB");
- }
+ }
}
OpenPOWER on IntegriCloud