blob: ddc913910b5e826e8a0117d7adaa29e97b59c6bd [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
Marshall Clowe34f6f62013-11-26 20:58:02 +000019#include "min_allocator.h"
Marshall Clow0aacbc92014-08-24 23:54:16 +000020#include "private_constructor.hpp"
Howard Hinnant07d3ecc2013-06-19 21:29:40 +000021
Howard Hinnant3e519522010-05-11 19:42:16 +000022int main()
23{
Howard Hinnant3e519522010-05-11 19:42:16 +000024 {
Howard Hinnant07d3ecc2013-06-19 21:29:40 +000025 typedef int V;
26 typedef std::set<int> M;
Howard Hinnant3e519522010-05-11 19:42:16 +000027 typedef M::size_type R;
28 V ar[] =
29 {
30 5,
31 6,
32 7,
33 8,
34 9,
35 10,
36 11,
37 12
38 };
39 const M m(ar, ar+sizeof(ar)/sizeof(ar[0]));
40 R r = m.count(5);
41 assert(r == 1);
42 r = m.count(6);
43 assert(r == 1);
44 r = m.count(7);
45 assert(r == 1);
46 r = m.count(8);
47 assert(r == 1);
48 r = m.count(9);
49 assert(r == 1);
50 r = m.count(10);
51 assert(r == 1);
52 r = m.count(11);
53 assert(r == 1);
54 r = m.count(12);
55 assert(r == 1);
56 r = m.count(4);
57 assert(r == 0);
58 }
Eric Fiselierf2f2a632016-06-14 21:31:42 +000059#if TEST_STD_VER >= 11
Howard Hinnant07d3ecc2013-06-19 21:29:40 +000060 {
61 typedef int V;
62 typedef std::set<int, std::less<int>, min_allocator<int>> M;
63 typedef M::size_type R;
64 V ar[] =
65 {
66 5,
67 6,
68 7,
69 8,
70 9,
71 10,
72 11,
73 12
74 };
75 const M m(ar, ar+sizeof(ar)/sizeof(ar[0]));
76 R r = m.count(5);
77 assert(r == 1);
78 r = m.count(6);
79 assert(r == 1);
80 r = m.count(7);
81 assert(r == 1);
82 r = m.count(8);
83 assert(r == 1);
84 r = m.count(9);
85 assert(r == 1);
86 r = m.count(10);
87 assert(r == 1);
88 r = m.count(11);
89 assert(r == 1);
90 r = m.count(12);
91 assert(r == 1);
92 r = m.count(4);
93 assert(r == 0);
94 }
95#endif
Marshall Clow0aacbc92014-08-24 23:54:16 +000096#if _LIBCPP_STD_VER > 11
97 {
98 typedef int V;
99 typedef std::set<int, std::less<>> M;
100 typedef M::size_type R;
101 V ar[] =
102 {
103 5,
104 6,
105 7,
106 8,
107 9,
108 10,
109 11,
110 12
111 };
112 const M m(ar, ar+sizeof(ar)/sizeof(ar[0]));
113 R r = m.count(5);
114 assert(r == 1);
115 r = m.count(6);
116 assert(r == 1);
117 r = m.count(7);
118 assert(r == 1);
119 r = m.count(8);
120 assert(r == 1);
121 r = m.count(9);
122 assert(r == 1);
123 r = m.count(10);
124 assert(r == 1);
125 r = m.count(11);
126 assert(r == 1);
127 r = m.count(12);
128 assert(r == 1);
129 r = m.count(4);
130 assert(r == 0);
131 }
132 {
133 typedef PrivateConstructor V;
134 typedef std::set<V, std::less<>> M;
135 typedef M::size_type R;
136
137 M m;
138 m.insert ( V::make ( 5 ));
139 m.insert ( V::make ( 6 ));
140 m.insert ( V::make ( 7 ));
141 m.insert ( V::make ( 8 ));
142 m.insert ( V::make ( 9 ));
143 m.insert ( V::make ( 10 ));
144 m.insert ( V::make ( 11 ));
145 m.insert ( V::make ( 12 ));
146
147 R r = m.count(5);
148 assert(r == 1);
149 r = m.count(6);
150 assert(r == 1);
151 r = m.count(7);
152 assert(r == 1);
153 r = m.count(8);
154 assert(r == 1);
155 r = m.count(9);
156 assert(r == 1);
157 r = m.count(10);
158 assert(r == 1);
159 r = m.count(11);
160 assert(r == 1);
161 r = m.count(12);
162 assert(r == 1);
163 r = m.count(4);
164 assert(r == 0);
165 }
166#endif
167
Howard Hinnant3e519522010-05-11 19:42:16 +0000168}