Home | History | Annotate | Download | only in multiset.cons
      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 // <set>
     11 
     12 // class multiset
     13 
     14 // multiset(const multiset& m);
     15 
     16 #include <set>
     17 #include <cassert>
     18 
     19 #include "test_macros.h"
     20 #include "../../../test_compare.h"
     21 #include "test_allocator.h"
     22 
     23 int main()
     24 {
     25     {
     26         typedef int V;
     27         V ar[] =
     28         {
     29             1,
     30             1,
     31             1,
     32             2,
     33             2,
     34             2,
     35             3,
     36             3,
     37             3
     38         };
     39         typedef test_compare<std::less<int> > C;
     40         typedef test_allocator<V> A;
     41         std::multiset<int, C, A> mo(ar, ar+sizeof(ar)/sizeof(ar[0]), C(5), A(7));
     42         std::multiset<int, C, A> m = mo;
     43         assert(m.get_allocator() == A(7));
     44         assert(m.key_comp() == C(5));
     45         assert(m.size() == 9);
     46         assert(distance(m.begin(), m.end()) == 9);
     47         assert(*next(m.begin(), 0) == 1);
     48         assert(*next(m.begin(), 1) == 1);
     49         assert(*next(m.begin(), 2) == 1);
     50         assert(*next(m.begin(), 3) == 2);
     51         assert(*next(m.begin(), 4) == 2);
     52         assert(*next(m.begin(), 5) == 2);
     53         assert(*next(m.begin(), 6) == 3);
     54         assert(*next(m.begin(), 7) == 3);
     55         assert(*next(m.begin(), 8) == 3);
     56 
     57         assert(mo.get_allocator() == A(7));
     58         assert(mo.key_comp() == C(5));
     59         assert(mo.size() == 9);
     60         assert(distance(mo.begin(), mo.end()) == 9);
     61         assert(*next(mo.begin(), 0) == 1);
     62         assert(*next(mo.begin(), 1) == 1);
     63         assert(*next(mo.begin(), 2) == 1);
     64         assert(*next(mo.begin(), 3) == 2);
     65         assert(*next(mo.begin(), 4) == 2);
     66         assert(*next(mo.begin(), 5) == 2);
     67         assert(*next(mo.begin(), 6) == 3);
     68         assert(*next(mo.begin(), 7) == 3);
     69         assert(*next(mo.begin(), 8) == 3);
     70     }
     71 #if TEST_STD_VER >= 11
     72     {
     73         typedef int V;
     74         V ar[] =
     75         {
     76             1,
     77             1,
     78             1,
     79             2,
     80             2,
     81             2,
     82             3,
     83             3,
     84             3
     85         };
     86         typedef test_compare<std::less<int> > C;
     87         typedef other_allocator<V> A;
     88         std::multiset<int, C, A> mo(ar, ar+sizeof(ar)/sizeof(ar[0]), C(5), A(7));
     89         std::multiset<int, C, A> m = mo;
     90         assert(m.get_allocator() == A(-2));
     91         assert(m.key_comp() == C(5));
     92         assert(m.size() == 9);
     93         assert(distance(m.begin(), m.end()) == 9);
     94         assert(*next(m.begin(), 0) == 1);
     95         assert(*next(m.begin(), 1) == 1);
     96         assert(*next(m.begin(), 2) == 1);
     97         assert(*next(m.begin(), 3) == 2);
     98         assert(*next(m.begin(), 4) == 2);
     99         assert(*next(m.begin(), 5) == 2);
    100         assert(*next(m.begin(), 6) == 3);
    101         assert(*next(m.begin(), 7) == 3);
    102         assert(*next(m.begin(), 8) == 3);
    103 
    104         assert(mo.get_allocator() == A(7));
    105         assert(mo.key_comp() == C(5));
    106         assert(mo.size() == 9);
    107         assert(distance(mo.begin(), mo.end()) == 9);
    108         assert(*next(mo.begin(), 0) == 1);
    109         assert(*next(mo.begin(), 1) == 1);
    110         assert(*next(mo.begin(), 2) == 1);
    111         assert(*next(mo.begin(), 3) == 2);
    112         assert(*next(mo.begin(), 4) == 2);
    113         assert(*next(mo.begin(), 5) == 2);
    114         assert(*next(mo.begin(), 6) == 3);
    115         assert(*next(mo.begin(), 7) == 3);
    116         assert(*next(mo.begin(), 8) == 3);
    117     }
    118 #endif
    119 }
    120