Home | History | Annotate | Download | only in dynarray.overview
      1 //===----------------------------------------------------------------------===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is dual licensed under the MIT and the University of Illinois Open
      6 // Source Licenses. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 
     10 // UNSUPPORTED: c++98, c++03, c++11
     11 
     12 // XFAIL: availability=macosx10.12
     13 // XFAIL: availability=macosx10.11
     14 // XFAIL: availability=macosx10.10
     15 // XFAIL: availability=macosx10.9
     16 // XFAIL: availability=macosx10.8
     17 // XFAIL: availability=macosx10.7
     18 
     19 // dynarray.overview
     20 
     21 // const_reference at(size_type n) const;
     22 //       reference at(size_type n);
     23 
     24 #include <__config>
     25 
     26 #include <experimental/dynarray>
     27 #include <cassert>
     28 
     29 #include <algorithm>
     30 #include <complex>
     31 #include <string>
     32 
     33 using std::experimental::dynarray;
     34 
     35 template <class T>
     36 void dyn_test_const ( const dynarray<T> &dyn, const std::initializer_list<T> &vals ) {
     37     const T *data = dyn.data ();
     38     auto it = vals.begin ();
     39     for ( size_t i = 0; i < dyn.size(); ++i, ++it ) {
     40         assert ( data + i == &dyn[i]);
     41         assert ( *it == dyn[i]);
     42         }
     43     }
     44 
     45 template <class T>
     46 void dyn_test ( dynarray<T> &dyn, const std::initializer_list<T> &vals ) {
     47     T *data = dyn.data ();
     48     auto it = vals.begin ();
     49     for ( size_t i = 0; i < dyn.size(); ++i, ++it ) {
     50         assert ( data + i == &dyn[i]);
     51         assert ( *it == dyn[i]);
     52         }
     53     }
     54 
     55 
     56 template <class T>
     57 void test ( std::initializer_list<T> vals ) {
     58     typedef dynarray<T> dynA;
     59 
     60     dynA d1 ( vals );
     61     dyn_test ( d1, vals );
     62     dyn_test_const ( d1, vals );
     63     }
     64 
     65 int main()
     66 {
     67     test ( { 1, 1, 2, 3, 5, 8 } );
     68     test ( { 1., 1., 2., 3., 5., 8. } );
     69     test ( { std::string("1"), std::string("1"), std::string("2"), std::string("3"),
     70                 std::string("5"), std::string("8")} );
     71 
     72     test<int> ( {} );
     73     test<std::complex<double>> ( {} );
     74     test<std::string> ( {} );
     75 }
     76 
     77