[PowerPC][NFC] Cleanup PPCCTRLoopsVerify pass
[llvm-project.git] / libcxx / test / std / containers / unord / unord.map / iterators.pass.cpp
blob0b4e02e339f627ebeb6d0045a4beca32f5cfcff3
1 //===----------------------------------------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
9 // <unordered_map>
11 // template <class Key, class T, class Hash = hash<Key>, class Pred = equal_to<Key>,
12 // class Alloc = allocator<pair<const Key, T>>>
13 // class unordered_map
15 // iterator begin() {return __table_.begin();}
16 // iterator end() {return __table_.end();}
17 // const_iterator begin() const {return __table_.begin();}
18 // const_iterator end() const {return __table_.end();}
19 // const_iterator cbegin() const {return __table_.begin();}
20 // const_iterator cend() const {return __table_.end();}
22 #include <unordered_map>
23 #include <string>
24 #include <cassert>
25 #include <cstddef>
27 #include "test_macros.h"
28 #include "min_allocator.h"
30 int main(int, char**)
33 typedef std::unordered_map<int, std::string> C;
34 typedef std::pair<int, std::string> P;
35 P a[] =
37 P(1, "one"),
38 P(2, "two"),
39 P(3, "three"),
40 P(4, "four"),
41 P(1, "four"),
42 P(2, "four"),
44 C c(a, a + sizeof(a)/sizeof(a[0]));
45 assert(c.bucket_count() >= 5);
46 assert(c.size() == 4);
47 assert(static_cast<std::size_t>(std::distance(c.begin(), c.end())) == c.size());
48 assert(static_cast<std::size_t>(std::distance(c.cbegin(), c.cend())) == c.size());
49 C::iterator i;
52 typedef std::unordered_map<int, std::string> C;
53 typedef std::pair<int, std::string> P;
54 P a[] =
56 P(1, "one"),
57 P(2, "two"),
58 P(3, "three"),
59 P(4, "four"),
60 P(1, "four"),
61 P(2, "four"),
63 const C c(a, a + sizeof(a)/sizeof(a[0]));
64 assert(c.bucket_count() >= 5);
65 assert(c.size() == 4);
66 assert(static_cast<std::size_t>(std::distance(c.begin(), c.end())) == c.size());
67 assert(static_cast<std::size_t>(std::distance(c.cbegin(), c.cend())) == c.size());
68 C::const_iterator i;
70 #if TEST_STD_VER >= 11
72 typedef std::unordered_map<int, std::string, std::hash<int>, std::equal_to<int>,
73 min_allocator<std::pair<const int, std::string>>> C;
74 typedef std::pair<int, std::string> P;
75 P a[] =
77 P(1, "one"),
78 P(2, "two"),
79 P(3, "three"),
80 P(4, "four"),
81 P(1, "four"),
82 P(2, "four"),
84 C c(a, a + sizeof(a)/sizeof(a[0]));
85 assert(c.bucket_count() >= 5);
86 assert(c.size() == 4);
87 assert(static_cast<std::size_t>(std::distance(c.begin(), c.end())) == c.size());
88 assert(static_cast<std::size_t>(std::distance(c.cbegin(), c.cend())) == c.size());
89 C::iterator i;
92 typedef std::unordered_map<int, std::string, std::hash<int>, std::equal_to<int>,
93 min_allocator<std::pair<const int, std::string>>> C;
94 typedef std::pair<int, std::string> P;
95 P a[] =
97 P(1, "one"),
98 P(2, "two"),
99 P(3, "three"),
100 P(4, "four"),
101 P(1, "four"),
102 P(2, "four"),
104 const C c(a, a + sizeof(a)/sizeof(a[0]));
105 assert(c.bucket_count() >= 5);
106 assert(c.size() == 4);
107 assert(static_cast<std::size_t>(std::distance(c.begin(), c.end())) == c.size());
108 assert(static_cast<std::size_t>(std::distance(c.cbegin(), c.cend())) == c.size());
109 C::const_iterator i;
111 #endif
112 #if TEST_STD_VER > 11
113 { // N3644 testing
114 typedef std::unordered_map<int,double> C;
115 C::iterator ii1{}, ii2{};
116 C::iterator ii4 = ii1;
117 C::const_iterator cii{};
118 assert ( ii1 == ii2 );
119 assert ( ii1 == ii4 );
121 assert (!(ii1 != ii2 ));
123 assert ( (ii1 == cii ));
124 assert ( (cii == ii1 ));
125 assert (!(ii1 != cii ));
126 assert (!(cii != ii1 ));
128 #endif
130 return 0;