1 //===----------------------------------------------------------------------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is dual licensed under the MIT and the University of Illinois Open 6 // Source Licenses. See LICENSE.TXT for details. 7 // 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 19 #include "test_macros.h" 20 #include "min_allocator.h" 21 #include "private_constructor.hpp" 22 23 int main() 24 { 25 { 26 typedef int V; 27 typedef std::set<int> M; 28 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 } 60 #if TEST_STD_VER >= 11 61 { 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 97 #if TEST_STD_VER > 11 98 { 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 148 const M& mc = m; 149 150 R r = mc.count(5); 151 assert(r == 1); 152 r = mc.count(6); 153 assert(r == 1); 154 r = mc.count(7); 155 assert(r == 1); 156 r = mc.count(8); 157 assert(r == 1); 158 r = mc.count(9); 159 assert(r == 1); 160 r = mc.count(10); 161 assert(r == 1); 162 r = mc.count(11); 163 assert(r == 1); 164 r = mc.count(12); 165 assert(r == 1); 166 r = mc.count(4); 167 assert(r == 0); 168 } 169 #endif 170 171 } 172