summaryrefslogtreecommitdiffstats
path: root/libcxx/test/std/experimental/string.view/string.view.ops/copy.pass.cpp
diff options
context:
space:
mode:
authorEric Fiselier <eric@efcs.ca>2016-05-30 23:53:19 +0000
committerEric Fiselier <eric@efcs.ca>2016-05-30 23:53:19 +0000
commitaf4a5a7f3323c3a6b43653a8475940d10ff7e63f (patch)
tree15b8cf0c30860a16f6ff2b609cf7968d03617c24 /libcxx/test/std/experimental/string.view/string.view.ops/copy.pass.cpp
parent8287fd8abde6228ebab32953e85c78e75ce0fd30 (diff)
downloadbcm5719-llvm-af4a5a7f3323c3a6b43653a8475940d10ff7e63f.tar.gz
bcm5719-llvm-af4a5a7f3323c3a6b43653a8475940d10ff7e63f.zip
Make string_view work with -fno-exceptions and get tests passing.
llvm-svn: 271237
Diffstat (limited to 'libcxx/test/std/experimental/string.view/string.view.ops/copy.pass.cpp')
-rw-r--r--libcxx/test/std/experimental/string.view/string.view.ops/copy.pass.cpp24
1 files changed, 16 insertions, 8 deletions
diff --git a/libcxx/test/std/experimental/string.view/string.view.ops/copy.pass.cpp b/libcxx/test/std/experimental/string.view/string.view.ops/copy.pass.cpp
index 0e4eb9e50bb..7bdb7c40c97 100644
--- a/libcxx/test/std/experimental/string.view/string.view.ops/copy.pass.cpp
+++ b/libcxx/test/std/experimental/string.view/string.view.ops/copy.pass.cpp
@@ -7,8 +7,6 @@
//
//===----------------------------------------------------------------------===//
-
-// XFAIL: libcpp-no-exceptions
// <string_view>
// size_type copy(charT* s, size_type n, size_type pos = 0) const;
@@ -23,21 +21,31 @@
#include <experimental/string_view>
#include <cassert>
+#include "test_macros.h"
+
template<typename CharT>
void test1 ( std::experimental::basic_string_view<CharT> sv, size_t n, size_t pos ) {
const size_t rlen = std::min ( n, sv.size() - pos );
CharT *dest1 = new CharT [rlen + 1]; dest1[rlen] = 0;
CharT *dest2 = new CharT [rlen + 1]; dest2[rlen] = 0;
-
- try {
+
+ if (pos > sv.size()) {
+#ifndef TEST_HAS_NO_EXCEPTIONS
+ try {
+ sv.copy(dest1, n, pos);
+ assert(false);
+ } catch (const std::out_of_range&) {
+ } catch (...) {
+ assert(false);
+ }
+#endif
+ } else {
sv.copy(dest1, n, pos);
std::copy_n(sv.begin() + pos, rlen, dest2);
-
for ( size_t i = 0; i <= rlen; ++i )
assert ( dest1[i] == dest2[i] );
- }
- catch ( const std::out_of_range & ) { assert ( pos > sv.size()); }
+ }
delete [] dest1;
delete [] dest2;
}
@@ -79,7 +87,7 @@ int main () {
test ( L"a" );
test ( L"" );
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
test ( u"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE" );
test ( u"ABCDE" );
test ( u"a" );
OpenPOWER on IntegriCloud