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 //===----------------------------------------------------------------------===//
15 // const_iterator begin() const;
17 // const_iterator end() const;
19 // reverse_iterator rbegin();
20 // const_reverse_iterator rbegin() const;
21 // reverse_iterator rend();
22 // const_reverse_iterator rend() const;
24 // const_iterator cbegin() const;
25 // const_iterator cend() const;
26 // const_reverse_iterator crbegin() const;
27 // const_reverse_iterator crend() const;
33 #include "test_macros.h"
34 #include "min_allocator.h"
39 typedef std::pair<const int, double> V;
67 std::map<int, double> m(ar, ar+sizeof(ar)/sizeof(ar[0]));
68 assert(static_cast<std::size_t>(std::distance(m.begin(), m.end())) == m.size());
69 assert(static_cast<std::size_t>(std::distance(m.rbegin(), m.rend())) == m.size());
70 std::map<int, double>::iterator i;
72 std::map<int, double>::const_iterator k = i;
74 for (int j = 1; static_cast<std::size_t>(j) <= m.size(); ++j, ++i)
76 assert(i->first == j);
77 assert(i->second == 1);
79 assert(i->second == 2.5);
83 typedef std::pair<const int, double> V;
111 const std::map<int, double> m(ar, ar+sizeof(ar)/sizeof(ar[0]));
112 assert(static_cast<std::size_t>(std::distance(m.begin(), m.end())) == m.size());
113 assert(static_cast<std::size_t>(std::distance(m.cbegin(), m.cend())) == m.size());
114 assert(static_cast<std::size_t>(std::distance(m.rbegin(), m.rend())) == m.size());
115 assert(static_cast<std::size_t>(std::distance(m.crbegin(), m.crend())) == m.size());
116 std::map<int, double>::const_iterator i;
118 for (int j = 1; static_cast<std::size_t>(j) <= m.size(); ++j, ++i)
120 assert(i->first == j);
121 assert(i->second == 1);
124 #if TEST_STD_VER >= 11
126 typedef std::pair<const int, double> V;
154 std::map<int, double, std::less<int>, min_allocator<V>> m(ar, ar+sizeof(ar)/sizeof(ar[0]));
155 assert(static_cast<std::size_t>(std::distance(m.begin(), m.end())) == m.size());
156 assert(static_cast<std::size_t>(std::distance(m.rbegin(), m.rend())) == m.size());
157 std::map<int, double, std::less<int>, min_allocator<V>>::iterator i;
159 std::map<int, double, std::less<int>, min_allocator<V>>::const_iterator k = i;
161 for (int j = 1; static_cast<std::size_t>(j) <= m.size(); ++j, ++i)
163 assert(i->first == j);
164 assert(i->second == 1);
166 assert(i->second == 2.5);
170 typedef std::pair<const int, double> V;
198 const std::map<int, double, std::less<int>, min_allocator<V>> m(ar, ar+sizeof(ar)/sizeof(ar[0]));
199 assert(static_cast<std::size_t>(std::distance(m.begin(), m.end())) == m.size());
200 assert(static_cast<std::size_t>(std::distance(m.cbegin(), m.cend())) == m.size());
201 assert(static_cast<std::size_t>(std::distance(m.rbegin(), m.rend())) == m.size());
202 assert(static_cast<std::size_t>(std::distance(m.crbegin(), m.crend())) == m.size());
203 std::map<int, double, std::less<int>, min_allocator<V>>::const_iterator i;
205 for (int j = 1; static_cast<std::size_t>(j) <= m.size(); ++j, ++i)
207 assert(i->first == j);
208 assert(i->second == 1);
212 #if TEST_STD_VER > 11
214 typedef std::map<int, double> C;
215 C::iterator ii1{}, ii2{};
216 C::iterator ii4 = ii1;
217 C::const_iterator cii{};
218 assert ( ii1 == ii2 );
219 assert ( ii1 == ii4 );
221 assert (!(ii1 != ii2 ));
223 assert ( (ii1 == cii ));
224 assert ( (cii == ii1 ));
225 assert (!(ii1 != cii ));
226 assert (!(cii != ii1 ));