blob: 115b4fbc27fd8e3155fd0209950de095ce4ba336 [file] [log] [blame]
Howard Hinnant3e519522010-05-11 19:42:16 +00001//===----------------------------------------------------------------------===//
2//
Howard Hinnant5b08a8a2010-05-11 21:36:01 +00003// The LLVM Compiler Infrastructure
Howard Hinnant3e519522010-05-11 19:42:16 +00004//
Howard Hinnant412dbeb2010-11-16 22:09:02 +00005// This file is dual licensed under the MIT and the University of Illinois Open
6// Source Licenses. See LICENSE.TXT for details.
Howard Hinnant3e519522010-05-11 19:42:16 +00007//
8//===----------------------------------------------------------------------===//
9
10// <set>
11
12// class set
13
14// size_type count(const key_type& k) const;
15
16#include <set>
17#include <cassert>
18
Stephan T. Lavavej0f901c72016-11-04 20:26:59 +000019#include "test_macros.h"
Marshall Clowe34f6f62013-11-26 20:58:02 +000020#include "min_allocator.h"
Marshall Clow0aacbc92014-08-24 23:54:16 +000021#include "private_constructor.hpp"
Howard Hinnant07d3ecc2013-06-19 21:29:40 +000022
Howard Hinnant3e519522010-05-11 19:42:16 +000023int main()
24{
Howard Hinnant3e519522010-05-11 19:42:16 +000025 {
Howard Hinnant07d3ecc2013-06-19 21:29:40 +000026 typedef int V;
27 typedef std::set<int> M;
Howard Hinnant3e519522010-05-11 19:42:16 +000028 typedef M::size_type R;
29 V ar[] =
30 {
31 5,
32 6,
33 7,
34 8,
35 9,
36 10,
37 11,
38 12
39 };
40 const M m(ar, ar+sizeof(ar)/sizeof(ar[0]));
41 R r = m.count(5);
42 assert(r == 1);
43 r = m.count(6);
44 assert(r == 1);
45 r = m.count(7);
46 assert(r == 1);
47 r = m.count(8);
48 assert(r == 1);
49 r = m.count(9);
50 assert(r == 1);
51 r = m.count(10);
52 assert(r == 1);
53 r = m.count(11);
54 assert(r == 1);
55 r = m.count(12);
56 assert(r == 1);
57 r = m.count(4);
58 assert(r == 0);
59 }
Eric Fiselierf2f2a632016-06-14 21:31:42 +000060#if TEST_STD_VER >= 11
Howard Hinnant07d3ecc2013-06-19 21:29:40 +000061 {
62 typedef int V;
63 typedef std::set<int, std::less<int>, min_allocator<int>> M;
64 typedef M::size_type R;
65 V ar[] =
66 {
67 5,
68 6,
69 7,
70 8,
71 9,
72 10,
73 11,
74 12
75 };
76 const M m(ar, ar+sizeof(ar)/sizeof(ar[0]));
77 R r = m.count(5);
78 assert(r == 1);
79 r = m.count(6);
80 assert(r == 1);
81 r = m.count(7);
82 assert(r == 1);
83 r = m.count(8);
84 assert(r == 1);
85 r = m.count(9);
86 assert(r == 1);
87 r = m.count(10);
88 assert(r == 1);
89 r = m.count(11);
90 assert(r == 1);
91 r = m.count(12);
92 assert(r == 1);
93 r = m.count(4);
94 assert(r == 0);
95 }
96#endif
Stephan T. Lavavej0f901c72016-11-04 20:26:59 +000097#if TEST_STD_VER > 11
Marshall Clow0aacbc92014-08-24 23:54:16 +000098 {
99 typedef int V;
100 typedef std::set<int, std::less<>> M;
101 typedef M::size_type R;
102 V ar[] =
103 {
104 5,
105 6,
106 7,
107 8,
108 9,
109 10,
110 11,
111 12
112 };
113 const M m(ar, ar+sizeof(ar)/sizeof(ar[0]));
114 R r = m.count(5);
115 assert(r == 1);
116 r = m.count(6);
117 assert(r == 1);
118 r = m.count(7);
119 assert(r == 1);
120 r = m.count(8);
121 assert(r == 1);
122 r = m.count(9);
123 assert(r == 1);
124 r = m.count(10);
125 assert(r == 1);
126 r = m.count(11);
127 assert(r == 1);
128 r = m.count(12);
129 assert(r == 1);
130 r = m.count(4);
131 assert(r == 0);
132 }
133 {
134 typedef PrivateConstructor V;
135 typedef std::set<V, std::less<>> M;
136 typedef M::size_type R;
137
138 M m;
139 m.insert ( V::make ( 5 ));
140 m.insert ( V::make ( 6 ));
141 m.insert ( V::make ( 7 ));
142 m.insert ( V::make ( 8 ));
143 m.insert ( V::make ( 9 ));
144 m.insert ( V::make ( 10 ));
145 m.insert ( V::make ( 11 ));
146 m.insert ( V::make ( 12 ));
147
Eric Fiselier41b4d6c2016-12-09 12:17:31 +0000148 const M& mc = m;
149
150 R r = mc.count(5);
Marshall Clow0aacbc92014-08-24 23:54:16 +0000151 assert(r == 1);
Eric Fiselier41b4d6c2016-12-09 12:17:31 +0000152 r = mc.count(6);
Marshall Clow0aacbc92014-08-24 23:54:16 +0000153 assert(r == 1);
Eric Fiselier41b4d6c2016-12-09 12:17:31 +0000154 r = mc.count(7);
Marshall Clow0aacbc92014-08-24 23:54:16 +0000155 assert(r == 1);
Eric Fiselier41b4d6c2016-12-09 12:17:31 +0000156 r = mc.count(8);
Marshall Clow0aacbc92014-08-24 23:54:16 +0000157 assert(r == 1);
Eric Fiselier41b4d6c2016-12-09 12:17:31 +0000158 r = mc.count(9);
Marshall Clow0aacbc92014-08-24 23:54:16 +0000159 assert(r == 1);
Eric Fiselier41b4d6c2016-12-09 12:17:31 +0000160 r = mc.count(10);
Marshall Clow0aacbc92014-08-24 23:54:16 +0000161 assert(r == 1);
Eric Fiselier41b4d6c2016-12-09 12:17:31 +0000162 r = mc.count(11);
Marshall Clow0aacbc92014-08-24 23:54:16 +0000163 assert(r == 1);
Eric Fiselier41b4d6c2016-12-09 12:17:31 +0000164 r = mc.count(12);
Marshall Clow0aacbc92014-08-24 23:54:16 +0000165 assert(r == 1);
Eric Fiselier41b4d6c2016-12-09 12:17:31 +0000166 r = mc.count(4);
Marshall Clow0aacbc92014-08-24 23:54:16 +0000167 assert(r == 0);
168 }
169#endif
170
Howard Hinnant3e519522010-05-11 19:42:16 +0000171}