1 //===----------------------------------------------------------------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
14 // map& operator=(const map& m);
19 #include "../../../test_compare.h"
20 #include "test_allocator.h"
21 #include "min_allocator.h"
26 typedef std::pair<const int, double> V;
39 typedef test_compare<std::less<int> > C;
40 typedef test_allocator<V> A;
41 std::map<int, double, C, A> mo(ar, ar+sizeof(ar)/sizeof(ar[0]), C(5), A(2));
42 std::map<int, double, C, A> m(ar, ar+sizeof(ar)/sizeof(ar[0])/2, C(3), A(7));
44 assert(m.get_allocator() == A(7));
45 assert(m.key_comp() == C(5));
46 assert(m.size() == 3);
47 assert(distance(m.begin(), m.end()) == 3);
48 assert(*m.begin() == V(1, 1));
49 assert(*next(m.begin()) == V(2, 1));
50 assert(*next(m.begin(), 2) == V(3, 1));
52 assert(mo.get_allocator() == A(2));
53 assert(mo.key_comp() == C(5));
54 assert(mo.size() == 3);
55 assert(distance(mo.begin(), mo.end()) == 3);
56 assert(*mo.begin() == V(1, 1));
57 assert(*next(mo.begin()) == V(2, 1));
58 assert(*next(mo.begin(), 2) == V(3, 1));
61 typedef std::pair<const int, double> V;
74 typedef test_compare<std::less<int> > C;
75 typedef other_allocator<V> A;
76 std::map<int, double, C, A> mo(ar, ar+sizeof(ar)/sizeof(ar[0]), C(5), A(2));
77 std::map<int, double, C, A> m(ar, ar+sizeof(ar)/sizeof(ar[0])/2, C(3), A(7));
79 assert(m.get_allocator() == A(2));
80 assert(m.key_comp() == C(5));
81 assert(m.size() == 3);
82 assert(distance(m.begin(), m.end()) == 3);
83 assert(*m.begin() == V(1, 1));
84 assert(*next(m.begin()) == V(2, 1));
85 assert(*next(m.begin(), 2) == V(3, 1));
87 assert(mo.get_allocator() == A(2));
88 assert(mo.key_comp() == C(5));
89 assert(mo.size() == 3);
90 assert(distance(mo.begin(), mo.end()) == 3);
91 assert(*mo.begin() == V(1, 1));
92 assert(*next(mo.begin()) == V(2, 1));
93 assert(*next(mo.begin(), 2) == V(3, 1));
95 #if __cplusplus >= 201103L
97 typedef std::pair<const int, double> V;
110 typedef test_compare<std::less<int> > C;
111 typedef min_allocator<V> A;
112 std::map<int, double, C, A> mo(ar, ar+sizeof(ar)/sizeof(ar[0]), C(5), A());
113 std::map<int, double, C, A> m(ar, ar+sizeof(ar)/sizeof(ar[0])/2, C(3), A());
115 assert(m.get_allocator() == A());
116 assert(m.key_comp() == C(5));
117 assert(m.size() == 3);
118 assert(distance(m.begin(), m.end()) == 3);
119 assert(*m.begin() == V(1, 1));
120 assert(*next(m.begin()) == V(2, 1));
121 assert(*next(m.begin(), 2) == V(3, 1));
123 assert(mo.get_allocator() == A());
124 assert(mo.key_comp() == C(5));
125 assert(mo.size() == 3);
126 assert(distance(mo.begin(), mo.end()) == 3);
127 assert(*mo.begin() == V(1, 1));
128 assert(*next(mo.begin()) == V(2, 1));
129 assert(*next(mo.begin(), 2) == V(3, 1));
132 typedef std::pair<const int, double> V;
145 typedef test_compare<std::less<int> > C;
146 typedef min_allocator<V> A;
147 std::map<int, double, C, A> mo(ar, ar+sizeof(ar)/sizeof(ar[0]), C(5), A());
148 std::map<int, double, C, A> m(ar, ar+sizeof(ar)/sizeof(ar[0])/2, C(3), A());
150 assert(m.get_allocator() == A());
151 assert(m.key_comp() == C(5));
152 assert(m.size() == 3);
153 assert(distance(m.begin(), m.end()) == 3);
154 assert(*m.begin() == V(1, 1));
155 assert(*next(m.begin()) == V(2, 1));
156 assert(*next(m.begin(), 2) == V(3, 1));
158 assert(mo.get_allocator() == A());
159 assert(mo.key_comp() == C(5));
160 assert(mo.size() == 3);
161 assert(distance(mo.begin(), mo.end()) == 3);
162 assert(*mo.begin() == V(1, 1));
163 assert(*next(mo.begin()) == V(2, 1));
164 assert(*next(mo.begin(), 2) == V(3, 1));