diff options
Diffstat (limited to 'libcxx/test/std/strings')
5 files changed, 31 insertions, 6 deletions
diff --git a/libcxx/test/std/strings/string.view/string.view.ops/compare.pointer_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.ops/compare.pointer_size.pass.cpp index 48862b4ec9d..085e72c1112 100644 --- a/libcxx/test/std/strings/string.view/string.view.ops/compare.pointer_size.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.ops/compare.pointer_size.pass.cpp @@ -22,6 +22,10 @@ int sign ( int x ) { return x > 0 ? 1 : ( x < 0 ? -1 : 0 ); } template<typename CharT> void test1 ( std::basic_string_view<CharT> sv1, size_t pos1, size_t n1, const CharT *s, int expected ) { +#ifdef TEST_HAS_NO_EXCEPTIONS + if (pos1 <= sv1.size()) + assert(sign(sv1.compare(pos1, n1, s)) == sign(expected)); +#else try { assert(sign(sv1.compare(pos1, n1, s)) == sign(expected)); assert(pos1 <= sv1.size()); @@ -29,6 +33,7 @@ void test1 ( std::basic_string_view<CharT> sv1, catch (const std::out_of_range&) { assert(pos1 > sv1.size()); } +#endif } template<typename CharT> diff --git a/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv.pass.cpp b/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv.pass.cpp index 389b775d93c..2bef7fdbac1 100644 --- a/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv.pass.cpp @@ -22,6 +22,10 @@ int sign ( int x ) { return x > 0 ? 1 : ( x < 0 ? -1 : 0 ); } template<typename CharT> void test1 ( std::basic_string_view<CharT> sv1, size_t pos1, size_t n1, std::basic_string_view<CharT> sv2, int expected ) { +#ifdef TEST_HAS_NO_EXCEPTIONS + if (pos1 <= sv1.size()) + assert(sign( sv1.compare(pos1, n1, sv2)) == sign(expected)); +#else try { assert(sign( sv1.compare(pos1, n1, sv2)) == sign(expected)); assert(pos1 <= sv1.size()); @@ -29,6 +33,7 @@ void test1 ( std::basic_string_view<CharT> sv1, size_t pos1, size_t n1, catch (const std::out_of_range&) { assert(pos1 > sv1.size()); } +#endif } diff --git a/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv_pointer_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv_pointer_size.pass.cpp index f169261bfff..8256c997b11 100644 --- a/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv_pointer_size.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv_pointer_size.pass.cpp @@ -23,6 +23,10 @@ int sign ( int x ) { return x > 0 ? 1 : ( x < 0 ? -1 : 0 ); } template<typename CharT> void test1 ( std::basic_string_view<CharT> sv1, size_t pos1, size_t n1, const CharT *s2, size_t n2, int expected ) { +#ifdef TEST_HAS_NO_EXCEPTIONS + if (pos1 <= sv1.size()) + assert(sign(sv1.compare(pos1, n1, s2, n2)) == sign(expected)); +#else try { assert(sign(sv1.compare(pos1, n1, s2, n2)) == sign(expected)); assert(pos1 <= sv1.size()); @@ -30,6 +34,7 @@ void test1 ( std::basic_string_view<CharT> sv1, size_t pos1, size_t n1, catch (const std::out_of_range&) { assert(pos1 > sv1.size()); } +#endif } diff --git a/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv_size_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv_size_size.pass.cpp index 4c351ebfbe2..5b47486192c 100644 --- a/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv_size_size.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv_size_size.pass.cpp @@ -24,6 +24,10 @@ template<typename CharT> void test1 ( std::basic_string_view<CharT> sv1, size_t pos1, size_t n1, std::basic_string_view<CharT> sv2, size_t pos2, size_t n2, int expected ) { +#ifdef TEST_HAS_NO_EXCEPTIONS + if (pos1 <= sv1.size() && pos2 <= sv2.size()) + assert (sign( sv1.compare(pos1, n1, sv2, pos2, n2)) == sign(expected)); +#else try { assert (sign( sv1.compare(pos1, n1, sv2, pos2, n2)) == sign(expected)); assert(pos1 <= sv1.size() && pos2 <= sv2.size()); @@ -31,6 +35,7 @@ void test1 ( std::basic_string_view<CharT> sv1, size_t pos1, size_t n1, catch (const std::out_of_range&) { assert(pos1 > sv1.size() || pos2 > sv2.size()); } +#endif } diff --git a/libcxx/test/std/strings/string.view/string.view.ops/substr.pass.cpp b/libcxx/test/std/strings/string.view/string.view.ops/substr.pass.cpp index afba3a64486..88a093ad8b9 100644 --- a/libcxx/test/std/strings/string.view/string.view.ops/substr.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.ops/substr.pass.cpp @@ -22,16 +22,21 @@ template<typename CharT> void test1(std::basic_string_view<CharT> sv, size_t n, size_t pos) { - try { - std::basic_string_view<CharT> sv1 = sv.substr(pos, n); +#ifdef TEST_HAS_NO_EXCEPTIONS + if (pos <= sv.size()) + assert (sign( sv1.compare(pos1, n1, sv2)) == sign(expected)); +#else + try { + std::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()); - } + } + catch (const std::out_of_range&) { + assert(pos > sv.size()); + } +#endif } |