diff options
Diffstat (limited to 'test/libcxx/experimental/containers/sequences/dynarray/dynarray.cons/default.pass.cpp')
| -rw-r--r-- | test/libcxx/experimental/containers/sequences/dynarray/dynarray.cons/default.pass.cpp | 44 |
1 files changed, 20 insertions, 24 deletions
diff --git a/test/libcxx/experimental/containers/sequences/dynarray/dynarray.cons/default.pass.cpp b/test/libcxx/experimental/containers/sequences/dynarray/dynarray.cons/default.pass.cpp index 0effac2fc142..738c0c72592e 100644 --- a/test/libcxx/experimental/containers/sequences/dynarray/dynarray.cons/default.pass.cpp +++ b/test/libcxx/experimental/containers/sequences/dynarray/dynarray.cons/default.pass.cpp @@ -7,6 +7,9 @@ // //===----------------------------------------------------------------------===// +// XFAIL: libcpp-no-exceptions +// UNSUPPORTED: c++98, c++03, c++11 + // dynarray.cons // explicit dynarray(size_type c); @@ -16,22 +19,21 @@ // ~dynarray(); - -#include <__config> - -#if _LIBCPP_STD_VER > 11 #include <experimental/dynarray> #include <cassert> #include <algorithm> #include <complex> +#include <limits> +#include <new> #include <string> + using std::experimental::dynarray; template <class T> -void test ( const std::initializer_list<T> &vals ) { +void testInitList( const std::initializer_list<T> &vals ) { typedef dynarray<T> dynA; dynA d1 ( vals ); @@ -41,12 +43,14 @@ void test ( const std::initializer_list<T> &vals ) { template <class T> -void test ( const T &val ) { +void test ( const T &val, bool DefaultValueIsIndeterminate = false) { typedef dynarray<T> dynA; dynA d1 ( 4 ); assert ( d1.size () == 4 ); - assert ( std::all_of ( d1.begin (), d1.end (), []( const T &item ){ return item == T(); } )); + if (!DefaultValueIsIndeterminate) { + assert ( std::all_of ( d1.begin (), d1.end (), []( const T &item ){ return item == T(); } )); + } dynA d2 ( 7, val ); assert ( d2.size () == 7 ); @@ -60,27 +64,23 @@ void test ( const T &val ) { void test_bad_length () { try { dynarray<int> ( std::numeric_limits<size_t>::max() / sizeof ( int ) + 1 ); } catch ( std::bad_array_length & ) { return ; } + catch (...) { assert(false); } assert ( false ); - } +} -void test_bad_alloc () { - try { dynarray<int> ( std::numeric_limits<size_t>::max() / sizeof ( int ) - 1 ); } - catch ( std::bad_alloc & ) { return ; } - assert ( false ); - } int main() { -// test<int> ( 14 ); // ints don't get default initialized - test<long> ( 0 ); - test<double> ( 14.0 ); + test<int> ( 14, /* DefaultValueIsIndeterminate */ true ); // ints don't get default initialized + test<long> ( 0, true); + test<double> ( 14.0, true ); test<std::complex<double>> ( std::complex<double> ( 14, 0 )); test<std::string> ( "fourteen" ); - test ( { 1, 1, 2, 3, 5, 8 } ); - test ( { 1., 1., 2., 3., 5., 8. } ); - test ( { std::string("1"), std::string("1"), std::string("2"), std::string("3"), - std::string("5"), std::string("8")} ); + testInitList( { 1, 1, 2, 3, 5, 8 } ); + testInitList( { 1., 1., 2., 3., 5., 8. } ); + testInitList( { std::string("1"), std::string("1"), std::string("2"), std::string("3"), + std::string("5"), std::string("8")} ); // Make sure we don't pick up the Allocator version here dynarray<long> d1 ( 20, 3 ); @@ -88,8 +88,4 @@ int main() assert ( std::all_of ( d1.begin (), d1.end (), []( long item ){ return item == 3L; } )); test_bad_length (); - test_bad_alloc (); } -#else -int main() {} -#endif |
