Home | History | Annotate | Download | only in map.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 // <map>
     11 
     12 // class map
     13 
     14 // map& operator=(const map& m);
     15 
     16 #include <map>
     17 #include <cassert>
     18 
     19 #include "../../../test_compare.h"
     20 #include "../../../test_allocator.h"
     21 
     22 int main()
     23 {
     24     {
     25         typedef std::pair<const int, double> V;
     26         V ar[] =
     27         {
     28             V(1, 1),
     29             V(1, 1.5),
     30             V(1, 2),
     31             V(2, 1),
     32             V(2, 1.5),
     33             V(2, 2),
     34             V(3, 1),
     35             V(3, 1.5),
     36             V(3, 2)
     37         };
     38         typedef test_compare<std::less<int> > C;
     39         typedef test_allocator<V> A;
     40         std::map<int, double, C, A> mo(ar, ar+sizeof(ar)/sizeof(ar[0]), C(5), A(2));
     41         std::map<int, double, C, A> m(ar, ar+sizeof(ar)/sizeof(ar[0])/2, C(3), A(7));
     42         m = mo;
     43         assert(m.get_allocator() == A(7));
     44         assert(m.key_comp() == C(5));
     45         assert(m.size() == 3);
     46         assert(distance(m.begin(), m.end()) == 3);
     47         assert(*m.begin() == V(1, 1));
     48         assert(*next(m.begin()) == V(2, 1));
     49         assert(*next(m.begin(), 2) == V(3, 1));
     50 
     51         assert(mo.get_allocator() == A(2));
     52         assert(mo.key_comp() == C(5));
     53         assert(mo.size() == 3);
     54         assert(distance(mo.begin(), mo.end()) == 3);
     55         assert(*mo.begin() == V(1, 1));
     56         assert(*next(mo.begin()) == V(2, 1));
     57         assert(*next(mo.begin(), 2) == V(3, 1));
     58     }
     59     {
     60         typedef std::pair<const int, double> V;
     61         V ar[] =
     62         {
     63             V(1, 1),
     64             V(1, 1.5),
     65             V(1, 2),
     66             V(2, 1),
     67             V(2, 1.5),
     68             V(2, 2),
     69             V(3, 1),
     70             V(3, 1.5),
     71             V(3, 2)
     72         };
     73         typedef test_compare<std::less<int> > C;
     74         typedef other_allocator<V> A;
     75         std::map<int, double, C, A> mo(ar, ar+sizeof(ar)/sizeof(ar[0]), C(5), A(2));
     76         std::map<int, double, C, A> m(ar, ar+sizeof(ar)/sizeof(ar[0])/2, C(3), A(7));
     77         m = mo;
     78         assert(m.get_allocator() == A(2));
     79         assert(m.key_comp() == C(5));
     80         assert(m.size() == 3);
     81         assert(distance(m.begin(), m.end()) == 3);
     82         assert(*m.begin() == V(1, 1));
     83         assert(*next(m.begin()) == V(2, 1));
     84         assert(*next(m.begin(), 2) == V(3, 1));
     85 
     86         assert(mo.get_allocator() == A(2));
     87         assert(mo.key_comp() == C(5));
     88         assert(mo.size() == 3);
     89         assert(distance(mo.begin(), mo.end()) == 3);
     90         assert(*mo.begin() == V(1, 1));
     91         assert(*next(mo.begin()) == V(2, 1));
     92         assert(*next(mo.begin(), 2) == V(3, 1));
     93     }
     94 }
     95