diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2016-07-23 20:47:26 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2016-07-23 20:47:26 +0000 |
commit | 51072bd6bf79ef2bc6a922079bff57c31c1effbc (patch) | |
tree | 91a2effbc9e6f80bdbbf9eb70e06c51ad0867ea0 /test/std/experimental/string.view | |
parent | bb5e33f003797b67974a8893f7f2930fc51b8210 (diff) |
Notes
Diffstat (limited to 'test/std/experimental/string.view')
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" ); |