diff options
Diffstat (limited to 'libcxx/test/std/experimental/optional/optional.object/optional.object.assign')
4 files changed, 22 insertions, 10 deletions
diff --git a/libcxx/test/std/experimental/optional/optional.object/optional.object.assign/copy.pass.cpp b/libcxx/test/std/experimental/optional/optional.object/optional.object.assign/copy.pass.cpp index ff37b22c7d2..17ee9754531 100644 --- a/libcxx/test/std/experimental/optional/optional.object/optional.object.assign/copy.pass.cpp +++ b/libcxx/test/std/experimental/optional/optional.object/optional.object.assign/copy.pass.cpp @@ -8,7 +8,6 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03, c++11 -// XFAIL: libcpp-no-exceptions // <optional> // optional<T>& operator=(const optional<T>& rhs); @@ -17,6 +16,8 @@ #include <type_traits> #include <cassert> +#include "test_macros.h" + using std::experimental::optional; struct AllowConstAssign { @@ -34,7 +35,7 @@ struct X X(const X&) { if (throw_now) - throw 6; + TEST_THROW(6); } }; @@ -79,6 +80,7 @@ int main() assert(static_cast<bool>(opt) == static_cast<bool>(opt2)); assert(*opt == *opt2); } +#ifndef TEST_HAS_NO_EXCEPTIONS { optional<X> opt; optional<X> opt2(X{}); @@ -95,4 +97,5 @@ int main() assert(static_cast<bool>(opt) == false); } } +#endif } diff --git a/libcxx/test/std/experimental/optional/optional.object/optional.object.assign/emplace.pass.cpp b/libcxx/test/std/experimental/optional/optional.object/optional.object.assign/emplace.pass.cpp index 6a7b56e588d..256396094a9 100644 --- a/libcxx/test/std/experimental/optional/optional.object/optional.object.assign/emplace.pass.cpp +++ b/libcxx/test/std/experimental/optional/optional.object/optional.object.assign/emplace.pass.cpp @@ -8,7 +8,6 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03, c++11 -// XFAIL: libcpp-no-exceptions // <optional> // template <class... Args> void optional<T>::emplace(Args&&... args); @@ -18,6 +17,8 @@ #include <cassert> #include <memory> +#include "test_macros.h" + using std::experimental::optional; class X @@ -48,7 +49,7 @@ class Z public: static bool dtor_called; Z() = default; - Z(int) {throw 6;} + Z(int) {TEST_THROW(6);} ~Z() {dtor_called = true;} }; @@ -131,6 +132,7 @@ int main() assert(Y::dtor_called == true); } } +#ifndef TEST_HAS_NO_EXCEPTIONS { Z z; optional<Z> opt(z); @@ -147,4 +149,5 @@ int main() assert(Z::dtor_called == true); } } +#endif } diff --git a/libcxx/test/std/experimental/optional/optional.object/optional.object.assign/emplace_initializer_list.pass.cpp b/libcxx/test/std/experimental/optional/optional.object/optional.object.assign/emplace_initializer_list.pass.cpp index b02616ef995..8a265808a3c 100644 --- a/libcxx/test/std/experimental/optional/optional.object/optional.object.assign/emplace_initializer_list.pass.cpp +++ b/libcxx/test/std/experimental/optional/optional.object/optional.object.assign/emplace_initializer_list.pass.cpp @@ -8,7 +8,6 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03, c++11 -// XFAIL: libcpp-no-exceptions // <optional> // template <class U, class... Args> @@ -19,6 +18,8 @@ #include <cassert> #include <vector> +#include "test_macros.h" + using std::experimental::optional; class X @@ -60,7 +61,7 @@ public: constexpr Z() : i_(0) {} constexpr Z(int i) : i_(i) {} Z(std::initializer_list<int> il) : i_(il.begin()[0]), j_(il.begin()[1]) - {throw 6;} + {TEST_THROW(6);} ~Z() {dtor_called = true;} friend constexpr bool operator==(const Z& x, const Z& y) @@ -104,6 +105,7 @@ int main() assert(static_cast<bool>(opt) == true); assert(*opt == Y({1, 2})); } +#ifndef TEST_HAS_NO_EXCEPTIONS { Z z; optional<Z> opt(z); @@ -120,4 +122,5 @@ int main() assert(Z::dtor_called == true); } } +#endif } diff --git a/libcxx/test/std/experimental/optional/optional.object/optional.object.assign/move.pass.cpp b/libcxx/test/std/experimental/optional/optional.object/optional.object.assign/move.pass.cpp index 1c3b780677e..4e2aca97886 100644 --- a/libcxx/test/std/experimental/optional/optional.object/optional.object.assign/move.pass.cpp +++ b/libcxx/test/std/experimental/optional/optional.object/optional.object.assign/move.pass.cpp @@ -8,7 +8,6 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03, c++11 -// XFAIL: libcpp-no-exceptions // <optional> // optional<T>& operator=(optional<T>&& rhs) @@ -19,6 +18,8 @@ #include <type_traits> #include <cassert> +#include "test_macros.h" + using std::experimental::optional; struct AllowConstAssign { @@ -36,7 +37,7 @@ struct X X(X&&) { if (throw_now) - throw 6; + TEST_THROW(6); } X& operator=(X&&) noexcept { @@ -44,10 +45,10 @@ struct X } }; -struct Y {}; - bool X::throw_now = false; +struct Y {}; + int main() { { @@ -88,6 +89,7 @@ int main() optional<const AllowConstAssign> opt2; opt = std::move(opt2); } +#ifndef TEST_HAS_NO_EXCEPTIONS { static_assert(!std::is_nothrow_move_assignable<optional<X>>::value, ""); optional<X> opt; @@ -105,6 +107,7 @@ int main() assert(static_cast<bool>(opt) == false); } } +#endif { static_assert(std::is_nothrow_move_assignable<optional<Y>>::value, ""); } |