summaryrefslogtreecommitdiff
path: root/test/std/experimental/string.view
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2016-07-23 20:47:26 +0000
committerDimitry Andric <dim@FreeBSD.org>2016-07-23 20:47:26 +0000
commit51072bd6bf79ef2bc6a922079bff57c31c1effbc (patch)
tree91a2effbc9e6f80bdbbf9eb70e06c51ad0867ea0 /test/std/experimental/string.view
parentbb5e33f003797b67974a8893f7f2930fc51b8210 (diff)
Notes
Diffstat (limited to 'test/std/experimental/string.view')
-rw-r--r--test/std/experimental/string.view/string.view.access/at.pass.cpp16
-rw-r--r--test/std/experimental/string.view/string.view.access/back.pass.cpp8
-rw-r--r--test/std/experimental/string.view/string.view.access/data.pass.cpp6
-rw-r--r--test/std/experimental/string.view/string.view.access/front.pass.cpp8
-rw-r--r--test/std/experimental/string.view/string.view.access/index.pass.cpp6
-rw-r--r--test/std/experimental/string.view/string.view.capacity/capacity.pass.cpp6
-rw-r--r--test/std/experimental/string.view/string.view.comparison/opeq.string_view.pointer.pass.cpp2
-rw-r--r--test/std/experimental/string.view/string.view.comparison/opeq.string_view.string.pass.cpp6
-rw-r--r--test/std/experimental/string.view/string.view.comparison/opge.string_view.pointer.pass.cpp2
-rw-r--r--test/std/experimental/string.view/string.view.comparison/opgt.string_view.pointer.pass.cpp2
-rw-r--r--test/std/experimental/string.view/string.view.comparison/ople.string_view.pointer.pass.cpp2
-rw-r--r--test/std/experimental/string.view/string.view.comparison/oplt.string_view.pointer.pass.cpp2
-rw-r--r--test/std/experimental/string.view/string.view.comparison/opne.string_view.pointer.pass.cpp2
-rw-r--r--test/std/experimental/string.view/string.view.cons/default.pass.cpp2
-rw-r--r--test/std/experimental/string.view/string.view.cons/from_literal.pass.cpp4
-rw-r--r--test/std/experimental/string.view/string.view.cons/from_ptr_len.pass.cpp4
-rw-r--r--test/std/experimental/string.view/string.view.cons/from_string.pass.cpp8
-rw-r--r--test/std/experimental/string.view/string.view.cons/from_string1.fail.cpp2
-rw-r--r--test/std/experimental/string.view/string.view.cons/from_string2.fail.cpp2
-rw-r--r--test/std/experimental/string.view/string.view.iterators/begin.pass.cpp8
-rw-r--r--test/std/experimental/string.view/string.view.iterators/end.pass.cpp8
-rw-r--r--test/std/experimental/string.view/string.view.iterators/rbegin.pass.cpp6
-rw-r--r--test/std/experimental/string.view/string.view.iterators/rend.pass.cpp8
-rw-r--r--test/std/experimental/string.view/string.view.modifiers/clear.pass.cpp4
-rw-r--r--test/std/experimental/string.view/string.view.modifiers/remove_prefix.pass.cpp8
-rw-r--r--test/std/experimental/string.view/string.view.modifiers/remove_suffix.pass.cpp8
-rw-r--r--test/std/experimental/string.view/string.view.modifiers/swap.pass.cpp6
-rw-r--r--test/std/experimental/string.view/string.view.nonmem/quoted.pass.cpp14
-rw-r--r--test/std/experimental/string.view/string.view.ops/basic_string.pass.cpp6
-rw-r--r--test/std/experimental/string.view/string.view.ops/compare.pointer.pass.cpp2
-rw-r--r--test/std/experimental/string.view/string.view.ops/compare.pointer_size.pass.cpp24
-rw-r--r--test/std/experimental/string.view/string.view.ops/compare.size_size_sv.pass.cpp25
-rw-r--r--test/std/experimental/string.view/string.view.ops/compare.size_size_sv_pointer_size.pass.cpp34
-rw-r--r--test/std/experimental/string.view/string.view.ops/compare.size_size_sv_size_size.pass.cpp33
-rw-r--r--test/std/experimental/string.view/string.view.ops/compare.sv.pass.cpp10
-rw-r--r--test/std/experimental/string.view/string.view.ops/copy.pass.cpp30
-rw-r--r--test/std/experimental/string.view/string.view.ops/substr.pass.cpp32
-rw-r--r--test/std/experimental/string.view/string.view.ops/to_string.pass.cpp8
38 files changed, 219 insertions, 145 deletions
diff --git a/test/std/experimental/string.view/string.view.access/at.pass.cpp b/test/std/experimental/string.view/string.view.access/at.pass.cpp
index 46804d4df3af8..7ceaf5ab3d9f3 100644
--- a/test/std/experimental/string.view/string.view.access/at.pass.cpp
+++ b/test/std/experimental/string.view/string.view.access/at.pass.cpp
@@ -10,7 +10,7 @@
// NOTE: Older versions of clang have a bug where they fail to evalute
// string_view::at as a constant expression.
// XFAIL: clang-3.4, clang-3.3
-// XFAIL: libcpp-no-exceptions
+
// <string_view>
@@ -20,6 +20,8 @@
#include <stdexcept>
#include <cassert>
+#include "test_macros.h"
+
template <typename CharT>
void test ( const CharT *s, size_t len ) {
std::experimental::basic_string_view<CharT> sv ( s, len );
@@ -27,12 +29,14 @@ void test ( const CharT *s, size_t len ) {
for ( size_t i = 0; i < len; ++i ) {
assert ( sv.at(i) == s[i] );
assert ( &sv.at(i) == s + i );
- }
+ }
+#ifndef TEST_HAS_NO_EXCEPTIONS
try { sv.at(len); } catch ( const std::out_of_range & ) { return ; }
assert ( false );
- }
-
+#endif
+}
+
int main () {
test ( "ABCDE", 5 );
test ( "a", 1 );
@@ -40,7 +44,7 @@ int main () {
test ( L"ABCDE", 5 );
test ( L"a", 1 );
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
test ( u"ABCDE", 5 );
test ( u"a", 1 );
@@ -48,7 +52,7 @@ int main () {
test ( U"a", 1 );
#endif
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
constexpr std::experimental::basic_string_view<char> sv ( "ABC", 2 );
static_assert ( sv.length() == 2, "" );
diff --git a/test/std/experimental/string.view/string.view.access/back.pass.cpp b/test/std/experimental/string.view/string.view.access/back.pass.cpp
index 093a858a48055..09f7950341a8d 100644
--- a/test/std/experimental/string.view/string.view.access/back.pass.cpp
+++ b/test/std/experimental/string.view/string.view.access/back.pass.cpp
@@ -15,6 +15,8 @@
#include <experimental/string_view>
#include <cassert>
+#include "test_macros.h"
+
template <typename CharT>
bool test ( const CharT *s, size_t len ) {
std::experimental::basic_string_view<CharT> sv ( s, len );
@@ -22,7 +24,7 @@ bool test ( const CharT *s, size_t len ) {
assert ( sv.back() == s[len-1] );
return &sv.back() == s + len - 1;
}
-
+
int main () {
assert ( test ( "ABCDE", 5 ));
assert ( test ( "a", 1 ));
@@ -30,7 +32,7 @@ int main () {
assert ( test ( L"ABCDE", 5 ));
assert ( test ( L"a", 1 ));
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
assert ( test ( u"ABCDE", 5 ));
assert ( test ( u"a", 1 ));
@@ -38,7 +40,7 @@ int main () {
assert ( test ( U"a", 1 ));
#endif
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
constexpr std::experimental::basic_string_view<char> sv ( "ABC", 2 );
static_assert ( sv.length() == 2, "" );
diff --git a/test/std/experimental/string.view/string.view.access/data.pass.cpp b/test/std/experimental/string.view/string.view.access/data.pass.cpp
index 562a765f50ceb..53e95ddaea31a 100644
--- a/test/std/experimental/string.view/string.view.access/data.pass.cpp
+++ b/test/std/experimental/string.view/string.view.access/data.pass.cpp
@@ -15,13 +15,15 @@
#include <experimental/string_view>
#include <cassert>
+#include "test_macros.h"
+
template <typename CharT>
void test ( const CharT *s, size_t len ) {
std::experimental::basic_string_view<CharT> sv ( s, len );
assert ( sv.length() == len );
assert ( sv.data() == s );
}
-
+
int main () {
test ( "ABCDE", 5 );
test ( "a", 1 );
@@ -29,7 +31,7 @@ int main () {
test ( L"ABCDE", 5 );
test ( L"a", 1 );
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
test ( u"ABCDE", 5 );
test ( u"a", 1 );
diff --git a/test/std/experimental/string.view/string.view.access/front.pass.cpp b/test/std/experimental/string.view/string.view.access/front.pass.cpp
index e9df44b19b1af..acb00a46a2e54 100644
--- a/test/std/experimental/string.view/string.view.access/front.pass.cpp
+++ b/test/std/experimental/string.view/string.view.access/front.pass.cpp
@@ -15,6 +15,8 @@
#include <experimental/string_view>
#include <cassert>
+#include "test_macros.h"
+
template <typename CharT>
bool test ( const CharT *s, size_t len ) {
std::experimental::basic_string_view<CharT> sv ( s, len );
@@ -22,7 +24,7 @@ bool test ( const CharT *s, size_t len ) {
assert ( sv.front() == s[0] );
return &sv.front() == s;
}
-
+
int main () {
assert ( test ( "ABCDE", 5 ));
assert ( test ( "a", 1 ));
@@ -30,7 +32,7 @@ int main () {
assert ( test ( L"ABCDE", 5 ));
assert ( test ( L"a", 1 ));
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
assert ( test ( u"ABCDE", 5 ));
assert ( test ( u"a", 1 ));
@@ -38,7 +40,7 @@ int main () {
assert ( test ( U"a", 1 ));
#endif
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
constexpr std::experimental::basic_string_view<char> sv ( "ABC", 2 );
static_assert ( sv.length() == 2, "" );
diff --git a/test/std/experimental/string.view/string.view.access/index.pass.cpp b/test/std/experimental/string.view/string.view.access/index.pass.cpp
index 4491207cbb85e..2c1bd1dc91cb5 100644
--- a/test/std/experimental/string.view/string.view.access/index.pass.cpp
+++ b/test/std/experimental/string.view/string.view.access/index.pass.cpp
@@ -15,6 +15,8 @@
#include <experimental/string_view>
#include <cassert>
+#include "test_macros.h"
+
template <typename CharT>
void test ( const CharT *s, size_t len ) {
std::experimental::basic_string_view<CharT> sv ( s, len );
@@ -24,7 +26,7 @@ void test ( const CharT *s, size_t len ) {
assert ( &sv[i] == s + i );
}
}
-
+
int main () {
test ( "ABCDE", 5 );
test ( "a", 1 );
@@ -32,7 +34,7 @@ int main () {
test ( L"ABCDE", 5 );
test ( L"a", 1 );
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
test ( u"ABCDE", 5 );
test ( u"a", 1 );
diff --git a/test/std/experimental/string.view/string.view.capacity/capacity.pass.cpp b/test/std/experimental/string.view/string.view.capacity/capacity.pass.cpp
index eb802165930d1..9f5d86f2f82b2 100644
--- a/test/std/experimental/string.view/string.view.capacity/capacity.pass.cpp
+++ b/test/std/experimental/string.view/string.view.capacity/capacity.pass.cpp
@@ -19,6 +19,8 @@
#include <experimental/string_view>
#include <cassert>
+#include "test_macros.h"
+
template<typename SV>
void test1 () {
#if _LIBCPP_STD_VER > 11
@@ -30,7 +32,7 @@ void test1 () {
static_assert ( sv1.max_size() > sv1.size(), "");
}
#endif
-
+
{
SV sv1;
assert ( sv1.size() == 0 );
@@ -73,7 +75,7 @@ int main () {
test2 ( L"a", 1 );
test2 ( L"", 0 );
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
test2 ( u"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE", 105 );
test2 ( u"ABCDE", 5 );
test2 ( u"a", 1 );
diff --git a/test/std/experimental/string.view/string.view.comparison/opeq.string_view.pointer.pass.cpp b/test/std/experimental/string.view/string.view.comparison/opeq.string_view.pointer.pass.cpp
index 148dc18d7ec81..0df37a6ffd9f8 100644
--- a/test/std/experimental/string.view/string.view.comparison/opeq.string_view.pointer.pass.cpp
+++ b/test/std/experimental/string.view/string.view.comparison/opeq.string_view.pointer.pass.cpp
@@ -58,7 +58,7 @@ int main()
static_assert ( "" == sv1, "" );
static_assert (!(sv1 == "abcde"), "" );
static_assert (!("abcde" == sv1), "" );
-
+
static_assert ( sv2 == "abcde", "" );
static_assert ( "abcde" == sv2, "" );
static_assert (!(sv2 == "abcde0"), "" );
diff --git a/test/std/experimental/string.view/string.view.comparison/opeq.string_view.string.pass.cpp b/test/std/experimental/string.view/string.view.comparison/opeq.string_view.string.pass.cpp
index 23a2aef242d7f..1fd72d7964b6c 100644
--- a/test/std/experimental/string.view/string.view.comparison/opeq.string_view.string.pass.cpp
+++ b/test/std/experimental/string.view/string.view.comparison/opeq.string_view.string.pass.cpp
@@ -17,8 +17,6 @@
#include <experimental/string_view>
#include <cassert>
-#if _LIBCPP_STD_VER > 11
-
template <class S>
void
test(const std::string &lhs, S rhs, bool x)
@@ -49,6 +47,4 @@ int main()
test("abcdefghijklmnopqrst", S("abcdefghijklmnopqrst"), true);
}
}
-#else
-int main () {}
-#endif
+
diff --git a/test/std/experimental/string.view/string.view.comparison/opge.string_view.pointer.pass.cpp b/test/std/experimental/string.view/string.view.comparison/opge.string_view.pointer.pass.cpp
index f02459b01c49b..f5bcb7e97b73b 100644
--- a/test/std/experimental/string.view/string.view.comparison/opge.string_view.pointer.pass.cpp
+++ b/test/std/experimental/string.view/string.view.comparison/opge.string_view.pointer.pass.cpp
@@ -59,7 +59,7 @@ int main()
static_assert ( "" >= sv1, "" );
static_assert (!(sv1 >= "abcde"), "" );
static_assert ( "abcde" >= sv1, "" );
-
+
static_assert ( sv2 >= "", "" );
static_assert (!("" >= sv2), "" );
static_assert ( sv2 >= "abcde", "" );
diff --git a/test/std/experimental/string.view/string.view.comparison/opgt.string_view.pointer.pass.cpp b/test/std/experimental/string.view/string.view.comparison/opgt.string_view.pointer.pass.cpp
index 48703cac612f2..63002a5c415c7 100644
--- a/test/std/experimental/string.view/string.view.comparison/opgt.string_view.pointer.pass.cpp
+++ b/test/std/experimental/string.view/string.view.comparison/opgt.string_view.pointer.pass.cpp
@@ -59,7 +59,7 @@ int main()
static_assert (!("" > sv1), "" );
static_assert (!(sv1 > "abcde"), "" );
static_assert ( "abcde" > sv1, "" );
-
+
static_assert ( sv2 > "", "" );
static_assert (!("" > sv2), "" );
static_assert (!(sv2 > "abcde"), "" );
diff --git a/test/std/experimental/string.view/string.view.comparison/ople.string_view.pointer.pass.cpp b/test/std/experimental/string.view/string.view.comparison/ople.string_view.pointer.pass.cpp
index 539f5fa5402e4..c542efea99a7e 100644
--- a/test/std/experimental/string.view/string.view.comparison/ople.string_view.pointer.pass.cpp
+++ b/test/std/experimental/string.view/string.view.comparison/ople.string_view.pointer.pass.cpp
@@ -59,7 +59,7 @@ int main()
static_assert ( "" <= sv1, "" );
static_assert ( sv1 <= "abcde", "" );
static_assert (!("abcde" <= sv1), "" );
-
+
static_assert (!(sv2 <= ""), "" );
static_assert ( "" <= sv2, "" );
static_assert ( sv2 <= "abcde", "" );
diff --git a/test/std/experimental/string.view/string.view.comparison/oplt.string_view.pointer.pass.cpp b/test/std/experimental/string.view/string.view.comparison/oplt.string_view.pointer.pass.cpp
index a1013e4d81523..2c0461481e783 100644
--- a/test/std/experimental/string.view/string.view.comparison/oplt.string_view.pointer.pass.cpp
+++ b/test/std/experimental/string.view/string.view.comparison/oplt.string_view.pointer.pass.cpp
@@ -59,7 +59,7 @@ int main()
static_assert (!("" < sv1), "" );
static_assert ( sv1 < "abcde", "" );
static_assert (!("abcde" < sv1), "" );
-
+
static_assert (!(sv2 < ""), "" );
static_assert ( "" < sv2, "" );
static_assert (!(sv2 < "abcde"), "" );
diff --git a/test/std/experimental/string.view/string.view.comparison/opne.string_view.pointer.pass.cpp b/test/std/experimental/string.view/string.view.comparison/opne.string_view.pointer.pass.cpp
index 299be934a8119..1deee9ac7fc6b 100644
--- a/test/std/experimental/string.view/string.view.comparison/opne.string_view.pointer.pass.cpp
+++ b/test/std/experimental/string.view/string.view.comparison/opne.string_view.pointer.pass.cpp
@@ -59,7 +59,7 @@ int main()
static_assert (!("" != sv1), "" );
static_assert ( sv1 != "abcde", "" );
static_assert ( "abcde" != sv1, "" );
-
+
static_assert (!(sv2 != "abcde"), "" );
static_assert (!("abcde" != sv2), "" );
static_assert ( sv2 != "abcde0", "" );
diff --git a/test/std/experimental/string.view/string.view.cons/default.pass.cpp b/test/std/experimental/string.view/string.view.cons/default.pass.cpp
index e1d69f4a3dfe2..e817bfffb89da 100644
--- a/test/std/experimental/string.view/string.view.cons/default.pass.cpp
+++ b/test/std/experimental/string.view/string.view.cons/default.pass.cpp
@@ -24,7 +24,7 @@ void test () {
static_assert ( sv1.empty(), "");
}
#endif
-
+
{
T sv1;
assert ( sv1.size() == 0 );
diff --git a/test/std/experimental/string.view/string.view.cons/from_literal.pass.cpp b/test/std/experimental/string.view/string.view.cons/from_literal.pass.cpp
index 82d0d79541490..9de3a30395234 100644
--- a/test/std/experimental/string.view/string.view.cons/from_literal.pass.cpp
+++ b/test/std/experimental/string.view/string.view.cons/from_literal.pass.cpp
@@ -40,12 +40,12 @@ int main () {
test ( "QBCDE" );
test ( "A" );
test ( "" );
-
+
test ( L"QBCDE" );
test ( L"A" );
test ( L"" );
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
test ( u"QBCDE" );
test ( u"A" );
test ( u"" );
diff --git a/test/std/experimental/string.view/string.view.cons/from_ptr_len.pass.cpp b/test/std/experimental/string.view/string.view.cons/from_ptr_len.pass.cpp
index 1038d0484f8cb..663d25e954f93 100644
--- a/test/std/experimental/string.view/string.view.cons/from_ptr_len.pass.cpp
+++ b/test/std/experimental/string.view/string.view.cons/from_ptr_len.pass.cpp
@@ -18,6 +18,8 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
+
template<typename CharT>
void test ( const CharT *s, size_t sz ) {
{
@@ -53,7 +55,7 @@ int main () {
}
#endif
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
test ( u"QBCDE", 5 );
test ( u"QBCDE", 2 );
test ( u"", 0 );
diff --git a/test/std/experimental/string.view/string.view.cons/from_string.pass.cpp b/test/std/experimental/string.view/string.view.cons/from_string.pass.cpp
index 670c033a653fe..4ecd2cdff9ba9 100644
--- a/test/std/experimental/string.view/string.view.cons/from_string.pass.cpp
+++ b/test/std/experimental/string.view/string.view.cons/from_string.pass.cpp
@@ -18,6 +18,8 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
+
struct dummy_char_traits : public std::char_traits<char> {};
template<typename CharT, typename Traits>
@@ -32,12 +34,12 @@ int main () {
test ( std::string("QBCDE") );
test ( std::string("") );
test ( std::string() );
-
+
test ( std::wstring(L"QBCDE") );
test ( std::wstring(L"") );
test ( std::wstring() );
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
test ( std::u16string{u"QBCDE"} );
test ( std::u16string{u""} );
test ( std::u16string{} );
@@ -46,7 +48,7 @@ int main () {
test ( std::u32string{U""} );
test ( std::u32string{} );
#endif
-
+
test ( std::basic_string<char, dummy_char_traits>("QBCDE") );
test ( std::basic_string<char, dummy_char_traits>("") );
test ( std::basic_string<char, dummy_char_traits>() );
diff --git a/test/std/experimental/string.view/string.view.cons/from_string1.fail.cpp b/test/std/experimental/string.view/string.view.cons/from_string1.fail.cpp
index 6ef4b9669bf45..b2ffa61c29d99 100644
--- a/test/std/experimental/string.view/string.view.cons/from_string1.fail.cpp
+++ b/test/std/experimental/string.view/string.view.cons/from_string1.fail.cpp
@@ -22,7 +22,7 @@ struct dummy_char_traits : public std::char_traits<char> {};
int main () {
using string_view = std::experimental::basic_string_view<char>;
using string = std:: basic_string <char, dummy_char_traits>;
-
+
{
string s{"QBCDE"};
string_view sv1 ( s );
diff --git a/test/std/experimental/string.view/string.view.cons/from_string2.fail.cpp b/test/std/experimental/string.view/string.view.cons/from_string2.fail.cpp
index 6c77a3f99a2b1..a14e131c85aaf 100644
--- a/test/std/experimental/string.view/string.view.cons/from_string2.fail.cpp
+++ b/test/std/experimental/string.view/string.view.cons/from_string2.fail.cpp
@@ -22,7 +22,7 @@ struct dummy_char_traits : public std::char_traits<char> {};
int main () {
using string_view = std::experimental::basic_string_view<char, dummy_char_traits>;
using string = std:: basic_string <char>;
-
+
{
string s{"QBCDE"};
string_view sv1 ( s );
diff --git a/test/std/experimental/string.view/string.view.iterators/begin.pass.cpp b/test/std/experimental/string.view/string.view.iterators/begin.pass.cpp
index 07f3b36e1d2b0..8040b81d4efe5 100644
--- a/test/std/experimental/string.view/string.view.iterators/begin.pass.cpp
+++ b/test/std/experimental/string.view/string.view.iterators/begin.pass.cpp
@@ -14,6 +14,8 @@
#include <experimental/string_view>
#include <cassert>
+#include "test_macros.h"
+
template <class S>
void
test(S s)
@@ -30,7 +32,7 @@ test(S s)
assert(&*cb1 == &s[0]);
assert( *cb2 == s[0]);
assert(&*cb2 == &s[0]);
-
+
}
assert( b == cb1);
assert( b == cb2);
@@ -51,7 +53,7 @@ int main()
test(wstring_view ());
test(string_view ( "123"));
test(wstring_view (L"123"));
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
test(u16string_view{u"123"});
test(u32string_view{U"123"});
#endif
@@ -62,7 +64,7 @@ int main()
constexpr u16string_view u16sv {u"123", 3 };
constexpr u32string_view u32sv {U"123", 3 };
constexpr wstring_view wsv {L"123", 3 };
-
+
static_assert ( *sv.begin() == sv[0], "" );
static_assert ( *u16sv.begin() == u16sv[0], "" );
static_assert ( *u32sv.begin() == u32sv[0], "" );
diff --git a/test/std/experimental/string.view/string.view.iterators/end.pass.cpp b/test/std/experimental/string.view/string.view.iterators/end.pass.cpp
index 2ed52b8de947d..3a1091e9983c2 100644
--- a/test/std/experimental/string.view/string.view.iterators/end.pass.cpp
+++ b/test/std/experimental/string.view/string.view.iterators/end.pass.cpp
@@ -14,6 +14,8 @@
#include <experimental/string_view>
#include <cassert>
+#include "test_macros.h"
+
template <class S>
void
test(S s)
@@ -35,7 +37,7 @@ test(S s)
assert(ce1 != cs.begin());
assert(ce2 != s.begin());
}
-
+
assert( e - s.begin() == s.size());
assert(ce1 - cs.begin() == cs.size());
assert(ce2 - s.cbegin() == s.size());
@@ -59,7 +61,7 @@ int main()
test(wstring_view ());
test(string_view ( "123"));
test(wstring_view (L"123"));
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
test(u16string_view{u"123"});
test(u32string_view{U"123"});
#endif
@@ -70,7 +72,7 @@ int main()
constexpr u16string_view u16sv {u"123", 3 };
constexpr u32string_view u32sv {U"123", 3 };
constexpr wstring_view wsv {L"123", 3 };
-
+
static_assert ( sv.begin() != sv.end(), "" );
static_assert ( u16sv.begin() != u16sv.end(), "" );
static_assert ( u32sv.begin() != u32sv.end(), "" );
diff --git a/test/std/experimental/string.view/string.view.iterators/rbegin.pass.cpp b/test/std/experimental/string.view/string.view.iterators/rbegin.pass.cpp
index 7d1c7003eaf49..068557e398635 100644
--- a/test/std/experimental/string.view/string.view.iterators/rbegin.pass.cpp
+++ b/test/std/experimental/string.view/string.view.iterators/rbegin.pass.cpp
@@ -14,6 +14,8 @@
#include <experimental/string_view>
#include <cassert>
+#include "test_macros.h"
+
template <class S>
void
test(S s)
@@ -31,7 +33,7 @@ test(S s)
assert(&*cb1 == &s[last]);
assert( *cb2 == s[last]);
assert(&*cb2 == &s[last]);
-
+
}
assert( b == cb1);
assert( b == cb2);
@@ -52,7 +54,7 @@ int main()
test(wstring_view ());
test(string_view ( "123"));
test(wstring_view (L"123"));
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
test(u16string_view{u"123"});
test(u32string_view{U"123"});
#endif
diff --git a/test/std/experimental/string.view/string.view.iterators/rend.pass.cpp b/test/std/experimental/string.view/string.view.iterators/rend.pass.cpp
index 57002f30518f3..55e28a2669486 100644
--- a/test/std/experimental/string.view/string.view.iterators/rend.pass.cpp
+++ b/test/std/experimental/string.view/string.view.iterators/rend.pass.cpp
@@ -14,6 +14,8 @@
#include <experimental/string_view>
#include <cassert>
+#include "test_macros.h"
+
template <class S>
void
test(S s)
@@ -35,7 +37,7 @@ test(S s)
assert(ce1 != cs.rbegin());
assert(ce2 != s.rbegin());
}
-
+
assert( e - s.rbegin() == s.size());
assert(ce1 - cs.rbegin() == cs.size());
assert(ce2 - s.crbegin() == s.size());
@@ -52,14 +54,14 @@ int main()
typedef std::experimental::u16string_view u16string_view;
typedef std::experimental::u32string_view u32string_view;
typedef std::experimental::wstring_view wstring_view;
-
+
test(string_view ());
test(u16string_view());
test(u32string_view());
test(wstring_view ());
test(string_view ( "123"));
test(wstring_view (L"123"));
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
test(u16string_view{u"123"});
test(u32string_view{U"123"});
#endif
diff --git a/test/std/experimental/string.view/string.view.modifiers/clear.pass.cpp b/test/std/experimental/string.view/string.view.modifiers/clear.pass.cpp
index 6a9982e0d3a56..9a4891c8f2599 100644
--- a/test/std/experimental/string.view/string.view.modifiers/clear.pass.cpp
+++ b/test/std/experimental/string.view/string.view.modifiers/clear.pass.cpp
@@ -15,6 +15,8 @@
#include <experimental/string_view>
#include <cassert>
+#include "test_macros.h"
+
template<typename CharT>
void test ( const CharT *s, size_t len ) {
typedef std::experimental::basic_string_view<CharT> SV;
@@ -48,7 +50,7 @@ int main () {
test ( L"a", 1 );
test ( L"", 0 );
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
test ( u"ABCDE", 5 );
test ( u"a", 1 );
test ( u"", 0 );
diff --git a/test/std/experimental/string.view/string.view.modifiers/remove_prefix.pass.cpp b/test/std/experimental/string.view/string.view.modifiers/remove_prefix.pass.cpp
index 0a2dd6d9329cc..4a31486afaa0b 100644
--- a/test/std/experimental/string.view/string.view.modifiers/remove_prefix.pass.cpp
+++ b/test/std/experimental/string.view/string.view.modifiers/remove_prefix.pass.cpp
@@ -16,6 +16,8 @@
#include <cassert>
#include <iostream>
+#include "test_macros.h"
+
template<typename CharT>
void test ( const CharT *s, size_t len ) {
typedef std::experimental::basic_string_view<CharT> SV;
@@ -30,10 +32,10 @@ void test ( const CharT *s, size_t len ) {
assert ( sv1.data() == (s + 1));
sv1.remove_prefix ( len - 1 );
}
-
+
assert ( sv1.size() == 0 );
sv1.remove_prefix ( 0 );
- assert ( sv1.size() == 0 );
+ assert ( sv1.size() == 0 );
}
}
@@ -55,7 +57,7 @@ int main () {
test ( L"a", 1 );
test ( L"", 0 );
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
test ( u"ABCDE", 5 );
test ( u"a", 1 );
test ( u"", 0 );
diff --git a/test/std/experimental/string.view/string.view.modifiers/remove_suffix.pass.cpp b/test/std/experimental/string.view/string.view.modifiers/remove_suffix.pass.cpp
index 9dd59882cce6e..9ddc6de84bf32 100644
--- a/test/std/experimental/string.view/string.view.modifiers/remove_suffix.pass.cpp
+++ b/test/std/experimental/string.view/string.view.modifiers/remove_suffix.pass.cpp
@@ -15,6 +15,8 @@
#include <experimental/string_view>
#include <cassert>
+#include "test_macros.h"
+
template<typename CharT>
void test ( const CharT *s, size_t len ) {
typedef std::experimental::basic_string_view<CharT> SV;
@@ -29,10 +31,10 @@ void test ( const CharT *s, size_t len ) {
assert ( sv1.data() == s);
sv1.remove_suffix ( len - 1 );
}
-
+
assert ( sv1.size() == 0 );
sv1.remove_suffix ( 0 );
- assert ( sv1.size() == 0 );
+ assert ( sv1.size() == 0 );
}
}
@@ -55,7 +57,7 @@ int main () {
test ( L"a", 1 );
test ( L"", 0 );
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
test ( u"ABCDE", 5 );
test ( u"a", 1 );
test ( u"", 0 );
diff --git a/test/std/experimental/string.view/string.view.modifiers/swap.pass.cpp b/test/std/experimental/string.view/string.view.modifiers/swap.pass.cpp
index cacb8ed40b885..d747def8549e1 100644
--- a/test/std/experimental/string.view/string.view.modifiers/swap.pass.cpp
+++ b/test/std/experimental/string.view/string.view.modifiers/swap.pass.cpp
@@ -15,13 +15,15 @@
#include <experimental/string_view>
#include <cassert>
+#include "test_macros.h"
+
template<typename CharT>
void test ( const CharT *s, size_t len ) {
typedef std::experimental::basic_string_view<CharT> SV;
{
SV sv1(s);
SV sv2;
-
+
assert ( sv1.size() == len );
assert ( sv1.data() == s );
assert ( sv2.size() == 0 );
@@ -54,7 +56,7 @@ int main () {
test ( L"a", 1 );
test ( L"", 0 );
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
test ( u"ABCDE", 5 );
test ( u"a", 1 );
test ( u"", 0 );
diff --git a/test/std/experimental/string.view/string.view.nonmem/quoted.pass.cpp b/test/std/experimental/string.view/string.view.nonmem/quoted.pass.cpp
index c86e9619f1930..6ba03212d42b6 100644
--- a/test/std/experimental/string.view/string.view.nonmem/quoted.pass.cpp
+++ b/test/std/experimental/string.view/string.view.nonmem/quoted.pass.cpp
@@ -103,7 +103,7 @@ void round_trip ( const wchar_t *p ) {
assert ( s == sv );
assert ( skippingws == is_skipws ( &ss ));
}
-
+
void round_trip_ws ( const wchar_t *p ) {
std::wstringstream ss;
@@ -165,31 +165,31 @@ int main()
round_trip_ws ( "" );
round_trip_d ( "", 'q' );
round_trip_e ( "", 'q' );
-
+
round_trip ( L"" );
round_trip_ws ( L"" );
round_trip_d ( L"", 'q' );
round_trip_e ( L"", 'q' );
-
+
round_trip ( "Hi" );
round_trip_ws ( "Hi" );
round_trip_d ( "Hi", '!' );
round_trip_e ( "Hi", '!' );
assert ( quote ( "Hi", '!' ) == "!Hi!" );
assert ( quote ( "Hi!", '!' ) == R"(!Hi\!!)" );
-
+
round_trip ( L"Hi" );
round_trip_ws ( L"Hi" );
round_trip_d ( L"Hi", '!' );
round_trip_e ( L"Hi", '!' );
assert ( quote ( L"Hi", '!' ) == L"!Hi!" );
assert ( quote ( L"Hi!", '!' ) == LR"(!Hi\!!)" );
-
+
round_trip ( "Hi Mom" );
round_trip_ws ( "Hi Mom" );
round_trip ( L"Hi Mom" );
round_trip_ws ( L"Hi Mom" );
-
+
assert ( quote ( "" ) == "\"\"" );
assert ( quote ( L"" ) == L"\"\"" );
assert ( quote ( "a" ) == "\"a\"" );
@@ -198,7 +198,7 @@ int main()
// missing end quote - must not hang
assert ( unquote ( "\"abc" ) == "abc" );
assert ( unquote ( L"\"abc" ) == L"abc" );
-
+
assert ( unquote ( "abc" ) == "abc" ); // no delimiter
assert ( unquote ( L"abc" ) == L"abc" ); // no delimiter
assert ( unquote ( "abc def" ) == "abc" ); // no delimiter
diff --git a/test/std/experimental/string.view/string.view.ops/basic_string.pass.cpp b/test/std/experimental/string.view/string.view.ops/basic_string.pass.cpp
index 29f5064d81dca..a29bb15f5ac9c 100644
--- a/test/std/experimental/string.view/string.view.ops/basic_string.pass.cpp
+++ b/test/std/experimental/string.view/string.view.ops/basic_string.pass.cpp
@@ -16,11 +16,13 @@
#include <experimental/string_view>
#include <cassert>
+#include "test_macros.h"
+
template<typename CharT>
void test ( const CharT *s ) {
typedef std::experimental::basic_string_view<CharT> string_view_t;
typedef std::basic_string<CharT> string_t;
-
+
{
string_view_t sv1 ( s );
string_t str = (string_t) sv1;
@@ -49,7 +51,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" );
diff --git a/test/std/experimental/string.view/string.view.ops/compare.pointer.pass.cpp b/test/std/experimental/string.view/string.view.ops/compare.pointer.pass.cpp
index 6ccec9b3729ad..583395451fd49 100644
--- a/test/std/experimental/string.view/string.view.ops/compare.pointer.pass.cpp
+++ b/test/std/experimental/string.view/string.view.ops/compare.pointer.pass.cpp
@@ -72,7 +72,7 @@ int main()
test(L"abcdefghijklmnopqrst", L"abcdefghijklmnopqrst", 0);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
test(U"", U"", 0);
test(U"", U"abcde", -5);
diff --git a/test/std/experimental/string.view/string.view.ops/compare.pointer_size.pass.cpp b/test/std/experimental/string.view/string.view.ops/compare.pointer_size.pass.cpp
index 7ccbd528c7fc8..cfe35fcb47193 100644
--- a/test/std/experimental/string.view/string.view.ops/compare.pointer_size.pass.cpp
+++ b/test/std/experimental/string.view/string.view.ops/compare.pointer_size.pass.cpp
@@ -7,7 +7,6 @@
//
//===----------------------------------------------------------------------===//
-// XFAIL: libcpp-no-exceptions
// <string_view>
// constexpr int compare(size_type pos1, size_type n1, const charT* s) const;
@@ -15,18 +14,27 @@
#include <experimental/string_view>
#include <cassert>
+#include "test_macros.h"
#include "constexpr_char_traits.hpp"
int sign ( int x ) { return x > 0 ? 1 : ( x < 0 ? -1 : 0 ); }
template<typename CharT>
-void test1 ( std::experimental::basic_string_view<CharT> sv1,
+void test1 ( std::experimental::basic_string_view<CharT> sv1,
size_t pos1, size_t n1, const CharT *s, int expected ) {
- try {
+ if (pos1 > sv1.size()) {
+#ifndef TEST_HAS_NO_EXCEPTIONS
+ try {
+ sv1.compare(pos1, n1, s);
+ assert(false);
+ } catch (const std::out_of_range&) {
+ } catch (...) {
+ assert(false);
+ }
+#endif
+ } else {
assert(sign(sv1.compare(pos1, n1, s)) == sign(expected));
- assert(pos1 <= sv1.size());
}
- catch (const std::out_of_range&) { assert(pos1 > sv1.size()); }
}
template<typename CharT>
@@ -391,7 +399,7 @@ int main()
test(L"abcdefghijklmnopqrst", 0, -1, L"abcdefghijklmnopqrst", 0);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
test(U"", 0, 0, U"", 0);
test(U"", 0, 0, U"abcde", -5);
@@ -410,7 +418,7 @@ int main()
test(U"abcdefghijklmnopqrst", 0, 12, U"abcdefghij", 10);
test(U"abcdefghijklmnopqrst", 0, -1, U"abcdefghijklmnopqrst", 0);
}
-
+
{
test(u"", 0, 0, u"", 0);
test(u"", 0, 0, u"abcde", -5);
@@ -431,7 +439,7 @@ int main()
}
#endif
-#if _LIBCPP_STD_VER > 11
+#if TEST_STD_VER > 11
{
typedef std::experimental::basic_string_view<char, constexpr_char_traits<char>> SV;
constexpr SV sv1;
diff --git a/test/std/experimental/string.view/string.view.ops/compare.size_size_sv.pass.cpp b/test/std/experimental/string.view/string.view.ops/compare.size_size_sv.pass.cpp
index 244de9eb5104a..2684d903405e3 100644
--- a/test/std/experimental/string.view/string.view.ops/compare.size_size_sv.pass.cpp
+++ b/test/std/experimental/string.view/string.view.ops/compare.size_size_sv.pass.cpp
@@ -7,8 +7,6 @@
//
//===----------------------------------------------------------------------===//
-
-// XFAIL: libcpp-no-exceptions
// <string_view>
// constexpr int compare(size_type pos1, size_type n1, basic_string_view str) const;
@@ -16,6 +14,7 @@
#include <experimental/string_view>
#include <cassert>
+#include "test_macros.h"
#include "constexpr_char_traits.hpp"
int sign ( int x ) { return x > 0 ? 1 : ( x < 0 ? -1 : 0 ); }
@@ -24,19 +23,25 @@ template<typename CharT>
void test1 ( std::experimental::basic_string_view<CharT> sv1, size_t pos1, size_t n1,
std::experimental::basic_string_view<CharT> sv2, int expected ) {
- try
- {
+ if (pos1 > sv1.size()) {
+#ifndef TEST_HAS_NO_EXCEPTIONS
+ try {
+ sv1.compare(pos1, n1, sv2);
+ assert(false);
+ } catch (const std::out_of_range&) {
+ } catch (...) {
+ assert(false);
+ }
+#endif
+ } else {
assert ( sign( sv1.compare(pos1, n1, sv2)) == sign(expected));
- assert(pos1 <= sv1.size());
}
- catch (const std::out_of_range&) { assert(pos1 > sv1.size()); }
}
template<typename CharT>
void test ( const CharT *s1, size_t pos1, size_t n1, const CharT *s2, int expected ) {
typedef std::experimental::basic_string_view<CharT> string_view_t;
-
string_view_t sv1 ( s1 );
string_view_t sv2 ( s2 );
test1(sv1, pos1, n1, sv2, expected);
@@ -355,7 +360,7 @@ int main () {
test0();
test1();
test2();
-
+
{
test("abcde", 5, 1, "", 0);
test("abcde", 2, 4, "", 3);
@@ -370,7 +375,7 @@ int main () {
test(L"ABCde", 2, 4, L"abcde", -1);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
test(u"abcde", 5, 1, u"", 0);
test(u"abcde", 2, 4, u"", 3);
@@ -386,7 +391,7 @@ int main () {
}
#endif
-#if _LIBCPP_STD_VER > 11
+#if TEST_STD_VER > 11
{
typedef std::experimental::basic_string_view<char, constexpr_char_traits<char>> SV;
constexpr SV sv1 { "abcde", 5 };
diff --git a/test/std/experimental/string.view/string.view.ops/compare.size_size_sv_pointer_size.pass.cpp b/test/std/experimental/string.view/string.view.ops/compare.size_size_sv_pointer_size.pass.cpp
index 1c3bc089a656f..69de6335fb5ca 100644
--- a/test/std/experimental/string.view/string.view.ops/compare.size_size_sv_pointer_size.pass.cpp
+++ b/test/std/experimental/string.view/string.view.ops/compare.size_size_sv_pointer_size.pass.cpp
@@ -7,8 +7,6 @@
//
//===----------------------------------------------------------------------===//
-
-// XFAIL: libcpp-no-exceptions
// <string_view>
// constexpr int compare(size_type pos1, size_type n1,
@@ -17,6 +15,7 @@
#include <experimental/string_view>
#include <cassert>
+#include "test_macros.h"
#include "constexpr_char_traits.hpp"
int sign ( int x ) { return x > 0 ? 1 : ( x < 0 ? -1 : 0 ); }
@@ -25,22 +24,29 @@ template<typename CharT>
void test1 ( std::experimental::basic_string_view<CharT> sv1, size_t pos1, size_t n1,
const CharT *s2, size_t n2,
int expected ) {
-
- try
- {
- assert ( sign( sv1.compare(pos1, n1, s2, n2)) == sign(expected));
- assert(pos1 <= sv1.size());
+ if (pos1 > sv1.size()) {
+#ifndef TEST_HAS_NO_EXCEPTIONS
+ try {
+ sv1.compare(pos1, n1, s2, n2);
+ assert(false);
+ } catch (const std::out_of_range&) {
+ return;
+ } catch (...) {
+ assert(false);
+ }
+#endif
+ } else {
+ assert(sign(sv1.compare(pos1, n1, s2, n2)) == sign(expected));
}
- catch (const std::out_of_range&) { assert(pos1 > sv1.size()); }
+
}
template<typename CharT>
-void test ( const CharT *s1, size_t pos1, size_t n1,
- const CharT *s2, size_t n2,
+void test ( const CharT *s1, size_t pos1, size_t n1,
+ const CharT *s2, size_t n2,
int expected ) {
typedef std::experimental::basic_string_view<CharT> string_view_t;
-
string_view_t sv1 ( s1 );
test1 (sv1, pos1, n1, s2, n2, expected);
}
@@ -1302,7 +1308,7 @@ int main () {
test9();
test10();
test11();
-
+
{
test("", 0, 0, "abcde", 0, 0);
test("", 0, 0, "abcde", 1, -1);
@@ -1319,7 +1325,7 @@ int main () {
test(L"abcdefghijklmnopqrst", 10, 0, L"abcdefghij", 10, -10);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
test(U"", 0, 0, U"abcde", 0, 0);
test(U"", 0, 0, U"abcde", 1, -1);
@@ -1337,7 +1343,7 @@ int main () {
}
#endif
-#if _LIBCPP_STD_VER > 11
+#if TEST_STD_VER > 11
{
typedef std::experimental::basic_string_view<char, constexpr_char_traits<char>> SV;
constexpr SV sv1;
diff --git a/test/std/experimental/string.view/string.view.ops/compare.size_size_sv_size_size.pass.cpp b/test/std/experimental/string.view/string.view.ops/compare.size_size_sv_size_size.pass.cpp
index c7a6f1e1eb66d..5d5ccc5b5d59f 100644
--- a/test/std/experimental/string.view/string.view.ops/compare.size_size_sv_size_size.pass.cpp
+++ b/test/std/experimental/string.view/string.view.ops/compare.size_size_sv_size_size.pass.cpp
@@ -7,8 +7,6 @@
//
//===----------------------------------------------------------------------===//
-
-// XFAIL: libcpp-no-exceptions
// <string_view>
// constexpr int compare(size_type pos1, size_type n1, basic_string_view str,
@@ -17,6 +15,7 @@
#include <experimental/string_view>
#include <cassert>
+#include "test_macros.h"
#include "constexpr_char_traits.hpp"
int sign ( int x ) { return x > 0 ? 1 : ( x < 0 ? -1 : 0 ); }
@@ -26,22 +25,28 @@ void test1 ( std::experimental::basic_string_view<CharT> sv1, size_t pos1, size_
std::experimental::basic_string_view<CharT> sv2, size_t pos2, size_t n2,
int expected ) {
- try
- {
- assert ( sign( sv1.compare(pos1, n1, sv2, pos2, n2)) == sign(expected));
- assert(pos1 <= sv1.size());
- assert(pos2 <= sv2.size());
+ if (pos1 > sv1.size() || pos2 > sv2.size()) {
+#ifndef TEST_HAS_NO_EXCEPTIONS
+ try {
+ sv1.compare(pos1, n1, sv2, pos2, n2);
+ assert(false);
+ } catch (const std::out_of_range&) {
+ } catch (...) {
+ assert(false);
+ }
+#endif
+ } else {
+ assert (sign( sv1.compare(pos1, n1, sv2, pos2, n2)) == sign(expected));
}
- catch (const std::out_of_range&) { assert(pos1 > sv1.size() || pos2 > sv2.size()); }
}
template<typename CharT>
-void test ( const CharT *s1, size_t pos1, size_t n1,
- const CharT *s2, size_t pos2, size_t n2,
+void test ( const CharT *s1, size_t pos1, size_t n1,
+ const CharT *s2, size_t pos2, size_t n2,
int expected ) {
typedef std::experimental::basic_string_view<CharT> string_view_t;
-
+
string_view_t sv1 ( s1 );
string_view_t sv2 ( s2 );
test1(sv1, pos1, n1, sv2, pos2, n2, expected);
@@ -5801,7 +5806,7 @@ int main () {
test53();
test54();
-
+
{
test("abcde", 5, 1, "", 0, 0, 0);
test("abcde", 2, 4, "", 0, 0, 3);
@@ -5816,7 +5821,7 @@ int main () {
test(L"ABCde", 2, 4, L"abcde", 2, 4, -1);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
test(u"abcde", 5, 1, u"", 0, 0, 0);
test(u"abcde", 2, 4, u"", 0, 0, 3);
@@ -5832,7 +5837,7 @@ int main () {
}
#endif
-#if _LIBCPP_STD_VER > 11
+#if TEST_STD_VER > 11
{
typedef std::experimental::basic_string_view<char, constexpr_char_traits<char>> SV;
constexpr SV sv1 { "abcde", 5 };
diff --git a/test/std/experimental/string.view/string.view.ops/compare.sv.pass.cpp b/test/std/experimental/string.view/string.view.ops/compare.sv.pass.cpp
index 3f686697ba400..4364ab0635430 100644
--- a/test/std/experimental/string.view/string.view.ops/compare.sv.pass.cpp
+++ b/test/std/experimental/string.view/string.view.ops/compare.sv.pass.cpp
@@ -19,7 +19,7 @@
int sign ( int x ) { return x > 0 ? 1 : ( x < 0 ? -1 : 0 ); }
template<typename CharT>
-void test1 ( std::experimental::basic_string_view<CharT> sv1,
+void test1 ( std::experimental::basic_string_view<CharT> sv1,
std::experimental::basic_string_view<CharT> sv2, int expected ) {
assert ( sign( sv1.compare(sv2)) == sign(expected));
}
@@ -28,7 +28,7 @@ void test1 ( std::experimental::basic_string_view<CharT> sv1,
template<typename CharT>
void test ( const CharT *s1, const CharT *s2, int expected ) {
typedef std::experimental::basic_string_view<CharT> string_view_t;
-
+
string_view_t sv1 ( s1 );
string_view_t sv2 ( s2 );
test1(sv1, sv2, expected);
@@ -70,7 +70,7 @@ int main () {
test(L"abcdefghijklmnopqrst", L"abcdefghij", 10);
test(L"abcdefghijklmnopqrst", L"abcdefghijklmnopqrst", 0);
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
test(u"", u"", 0);
test(u"", u"abcde", -5);
test(u"", u"abcdefghij", -10);
@@ -105,7 +105,7 @@ int main () {
test(U"abcdefghijklmnopqrst", U"abcdefghij", 10);
test(U"abcdefghijklmnopqrst", U"abcdefghijklmnopqrst", 0);
#endif
-
+
#if _LIBCPP_STD_VER > 11
{
typedef std::experimental::basic_string_view<char, constexpr_char_traits<char>> SV;
@@ -117,5 +117,5 @@ int main () {
static_assert ( sv3.compare(sv2) > 0, "" );
static_assert ( sv2.compare(sv3) < 0, "" );
}
-#endif
+#endif
}
diff --git a/test/std/experimental/string.view/string.view.ops/copy.pass.cpp b/test/std/experimental/string.view/string.view.ops/copy.pass.cpp
index 0e4eb9e50bb0a..0acd5bda40112 100644
--- a/test/std/experimental/string.view/string.view.ops/copy.pass.cpp
+++ b/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,30 +21,40 @@
#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;
+ delete [] dest2;
}
template<typename CharT>
void test ( const CharT *s ) {
typedef std::experimental::basic_string_view<CharT> string_view_t;
-
+
string_view_t sv1 ( s );
test1(sv1, 0, 0);
@@ -54,7 +62,7 @@ void test ( const CharT *s ) {
test1(sv1, 20, 0);
test1(sv1, sv1.size(), 0);
test1(sv1, 20, string_view_t::npos);
-
+
test1(sv1, 0, 3);
test1(sv1, 2, 3);
test1(sv1, 100, 3);
@@ -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" );
diff --git a/test/std/experimental/string.view/string.view.ops/substr.pass.cpp b/test/std/experimental/string.view/string.view.ops/substr.pass.cpp
index c80e90a04788f..a651010d4b278 100644
--- a/test/std/experimental/string.view/string.view.ops/substr.pass.cpp
+++ b/test/std/experimental/string.view/string.view.ops/substr.pass.cpp
@@ -7,8 +7,6 @@
//
//===----------------------------------------------------------------------===//
-
-// XFAIL: libcpp-no-exceptions
// <string_view>
// constexpr basic_string_view substr(size_type pos = 0, size_type n = npos) const;
@@ -20,30 +18,42 @@
#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 ) {
- try {
+ if (pos > sv.size()) {
+#ifndef TEST_HAS_NO_EXCEPTIONS
+ try {
+ std::experimental::basic_string_view<CharT> sv1 = sv.substr(pos, n);
+ assert(false);
+ } catch (const std::out_of_range&) {
+ return;
+ } catch (...) {
+ assert(false);
+ }
+#endif
+ } else {
std::experimental::basic_string_view<CharT> sv1 = sv.substr(pos, n);
const size_t rlen = std::min ( n, sv.size() - pos );
assert ( sv1.size() == rlen );
for ( size_t i = 0; i <= rlen; ++i )
assert ( sv[pos+i] == sv1[i] );
- }
- catch ( const std::out_of_range & ) { assert ( pos > sv.size()); }
+ }
}
template<typename CharT>
void test ( const CharT *s ) {
typedef std::experimental::basic_string_view<CharT> string_view_t;
-
+
string_view_t sv1 ( s );
test1(sv1, 0, 0);
test1(sv1, 1, 0);
test1(sv1, 20, 0);
test1(sv1, sv1.size(), 0);
-
+
test1(sv1, 0, 3);
test1(sv1, 2, 3);
test1(sv1, 100, 3);
@@ -68,7 +78,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" );
@@ -79,8 +89,8 @@ int main () {
test ( U"a" );
test ( U"" );
#endif
-
-#if _LIBCPP_STD_VER > 11
+
+#if TEST_STD_VER > 11
{
constexpr std::experimental::string_view sv1 { "ABCDE", 5 };
@@ -91,7 +101,7 @@ int main () {
static_assert ( sv2[1] == 'B', "" );
static_assert ( sv2[2] == 'C', "" );
}
-
+
{
constexpr std::experimental::string_view sv2 = sv1.substr ( 3, 0 );
static_assert ( sv2.size() == 0, "" );
diff --git a/test/std/experimental/string.view/string.view.ops/to_string.pass.cpp b/test/std/experimental/string.view/string.view.ops/to_string.pass.cpp
index a180ab257bf5f..a32a2684c5485 100644
--- a/test/std/experimental/string.view/string.view.ops/to_string.pass.cpp
+++ b/test/std/experimental/string.view/string.view.ops/to_string.pass.cpp
@@ -26,11 +26,11 @@ void test ( const CharT *s ) {
{
const std::experimental::basic_string_view<CharT> sv1 ( s );
String str1 = (String) sv1;
-
+
assert ( sv1.size() == str1.size ());
assert ( std::char_traits<CharT>::compare ( sv1.data(), str1.data(), sv1.size()) == 0 );
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
auto str2 = sv1.to_string(min_allocator<CharT>());
assert ( sv1.size() == str2.size ());
assert ( std::char_traits<CharT>::compare ( sv1.data(), str2.data(), sv1.size()) == 0 );
@@ -44,7 +44,7 @@ void test ( const CharT *s ) {
assert ( sv1.size() == 0);
assert ( sv1.size() == str1.size ());
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
auto str2 = sv1.to_string(min_allocator<CharT>());
assert ( sv1.size() == str2.size ());
#endif
@@ -62,7 +62,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" );