Home | History | Annotate | Download | only in valarray.members
      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 // <valarray>
     11 
     12 // template<class T> class valarray;
     13 
     14 // void swap(valarray& v);
     15 
     16 #include <valarray>
     17 #include <cassert>
     18 
     19 int main()
     20 {
     21     {
     22         typedef int T;
     23         T a1[] = {1, 2, 3, 4, 5};
     24         T a2[] = {6, 7, 8, 9, 10, 11, 12};
     25         const unsigned N1 = sizeof(a1)/sizeof(a1[0]);
     26         const unsigned N2 = sizeof(a2)/sizeof(a2[0]);
     27         std::valarray<T> v1(a1, N1);
     28         std::valarray<T> v2(a2, N2);
     29         std::valarray<T> v1_save = v1;
     30         std::valarray<T> v2_save = v2;
     31         v1.swap(v2);
     32         assert(v1.size() == v2_save.size());
     33         for (int i = 0; i < v1.size(); ++i)
     34             assert(v1[i] == v2_save[i]);
     35         assert(v2.size() == v1_save.size());
     36         for (int i = 0; i < v2.size(); ++i)
     37             assert(v2[i] == v1_save[i]);
     38     }
     39     {
     40         typedef int T;
     41         T a1[] = {1, 2, 3, 4, 5};
     42         const unsigned N1 = sizeof(a1)/sizeof(a1[0]);
     43         const unsigned N2 = 0;
     44         std::valarray<T> v1(a1, N1);
     45         std::valarray<T> v2;
     46         std::valarray<T> v1_save = v1;
     47         std::valarray<T> v2_save = v2;
     48         v1.swap(v2);
     49         assert(v1.size() == v2_save.size());
     50         for (int i = 0; i < v1.size(); ++i)
     51             assert(v1[i] == v2_save[i]);
     52         assert(v2.size() == v1_save.size());
     53         for (int i = 0; i < v2.size(); ++i)
     54             assert(v2[i] == v1_save[i]);
     55     }
     56     {
     57         typedef int T;
     58         T a2[] = {6, 7, 8, 9, 10, 11, 12};
     59         const unsigned N1 = 0;
     60         const unsigned N2 = sizeof(a2)/sizeof(a2[0]);
     61         std::valarray<T> v1;
     62         std::valarray<T> v2(a2, N2);
     63         std::valarray<T> v1_save = v1;
     64         std::valarray<T> v2_save = v2;
     65         v1.swap(v2);
     66         assert(v1.size() == v2_save.size());
     67         for (int i = 0; i < v1.size(); ++i)
     68             assert(v1[i] == v2_save[i]);
     69         assert(v2.size() == v1_save.size());
     70         for (int i = 0; i < v2.size(); ++i)
     71             assert(v2[i] == v1_save[i]);
     72     }
     73     {
     74         typedef int T;
     75         const unsigned N1 = 0;
     76         const unsigned N2 = 0;
     77         std::valarray<T> v1;
     78         std::valarray<T> v2;
     79         std::valarray<T> v1_save = v1;
     80         std::valarray<T> v2_save = v2;
     81         v1.swap(v2);
     82         assert(v1.size() == v2_save.size());
     83         for (int i = 0; i < v1.size(); ++i)
     84             assert(v1[i] == v2_save[i]);
     85         assert(v2.size() == v1_save.size());
     86         for (int i = 0; i < v2.size(); ++i)
     87             assert(v2[i] == v1_save[i]);
     88     }
     89 }
     90