1 //===----------------------------------------------------------------------===//
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
7 //===----------------------------------------------------------------------===//
11 // template <class Value, class Hash = hash<Value>, class Pred = equal_to<Value>,
12 // class Alloc = allocator<Value>>
13 // class unordered_set
15 // local_iterator begin (size_type n);
16 // local_iterator end (size_type n);
17 // const_local_iterator begin (size_type n) const;
18 // const_local_iterator end (size_type n) const;
19 // const_local_iterator cbegin(size_type n) const;
20 // const_local_iterator cend (size_type n) const;
22 #include <unordered_set>
25 #include "test_macros.h"
26 #include "min_allocator.h"
31 typedef std::unordered_set
<int> C
;
33 typedef C::local_iterator I
;
43 C
c(a
, a
+ sizeof(a
)/sizeof(a
[0]));
44 assert(c
.bucket_count() >= 5);
45 C::size_type b
= c
.bucket(0);
48 assert(std::distance(i
, j
) == 0);
53 assert(std::distance(i
, j
) == 1);
59 assert(std::distance(i
, j
) == 1);
65 assert(std::distance(i
, j
) == 1);
71 assert(std::distance(i
, j
) == 1);
75 typedef std::unordered_set
<int> C
;
77 typedef C::const_local_iterator I
;
87 const C
c(a
, a
+ sizeof(a
)/sizeof(a
[0]));
88 assert(c
.bucket_count() >= 5);
89 C::size_type b
= c
.bucket(0);
92 assert(std::distance(i
, j
) == 0);
97 assert(std::distance(i
, j
) == 1);
103 assert(std::distance(i
, j
) == 1);
109 assert(std::distance(i
, j
) == 1);
115 assert(std::distance(i
, j
) == 1);
119 typedef std::unordered_set
<int> C
;
121 typedef C::const_local_iterator I
;
131 C
c(a
, a
+ sizeof(a
)/sizeof(a
[0]));
132 assert(c
.bucket_count() >= 5);
133 C::size_type b
= c
.bucket(0);
136 assert(std::distance(i
, j
) == 0);
141 assert(std::distance(i
, j
) == 1);
147 assert(std::distance(i
, j
) == 1);
153 assert(std::distance(i
, j
) == 1);
159 assert(std::distance(i
, j
) == 1);
163 typedef std::unordered_set
<int> C
;
165 typedef C::const_local_iterator I
;
175 const C
c(a
, a
+ sizeof(a
)/sizeof(a
[0]));
176 assert(c
.bucket_count() >= 5);
177 C::size_type b
= c
.bucket(0);
180 assert(std::distance(i
, j
) == 0);
185 assert(std::distance(i
, j
) == 1);
191 assert(std::distance(i
, j
) == 1);
197 assert(std::distance(i
, j
) == 1);
203 assert(std::distance(i
, j
) == 1);
206 #if TEST_STD_VER >= 11
208 typedef std::unordered_set
<int, std::hash
<int>,
209 std::equal_to
<int>, min_allocator
<int>> C
;
211 typedef C::local_iterator I
;
221 C
c(a
, a
+ sizeof(a
)/sizeof(a
[0]));
222 assert(c
.bucket_count() >= 5);
223 C::size_type b
= c
.bucket(0);
226 assert(std::distance(i
, j
) == 0);
231 assert(std::distance(i
, j
) == 1);
237 assert(std::distance(i
, j
) == 1);
243 assert(std::distance(i
, j
) == 1);
249 assert(std::distance(i
, j
) == 1);
253 typedef std::unordered_set
<int, std::hash
<int>,
254 std::equal_to
<int>, min_allocator
<int>> C
;
256 typedef C::const_local_iterator I
;
266 const C
c(a
, a
+ sizeof(a
)/sizeof(a
[0]));
267 assert(c
.bucket_count() >= 5);
268 C::size_type b
= c
.bucket(0);
271 assert(std::distance(i
, j
) == 0);
276 assert(std::distance(i
, j
) == 1);
282 assert(std::distance(i
, j
) == 1);
288 assert(std::distance(i
, j
) == 1);
294 assert(std::distance(i
, j
) == 1);
298 typedef std::unordered_set
<int, std::hash
<int>,
299 std::equal_to
<int>, min_allocator
<int>> C
;
301 typedef C::const_local_iterator I
;
311 C
c(a
, a
+ sizeof(a
)/sizeof(a
[0]));
312 assert(c
.bucket_count() >= 5);
313 C::size_type b
= c
.bucket(0);
316 assert(std::distance(i
, j
) == 0);
321 assert(std::distance(i
, j
) == 1);
327 assert(std::distance(i
, j
) == 1);
333 assert(std::distance(i
, j
) == 1);
339 assert(std::distance(i
, j
) == 1);
343 typedef std::unordered_set
<int, std::hash
<int>,
344 std::equal_to
<int>, min_allocator
<int>> C
;
346 typedef C::const_local_iterator I
;
356 const C
c(a
, a
+ sizeof(a
)/sizeof(a
[0]));
357 assert(c
.bucket_count() >= 5);
358 C::size_type b
= c
.bucket(0);
361 assert(std::distance(i
, j
) == 0);
366 assert(std::distance(i
, j
) == 1);
372 assert(std::distance(i
, j
) == 1);
378 assert(std::distance(i
, j
) == 1);
384 assert(std::distance(i
, j
) == 1);