1// { dg-options "-std=gnu++11" }
2
3// 2011-10-28  Paolo Carlini  <paolo.carlini@oracle.com>
4
5// Copyright (C) 2011-2015 Free Software Foundation, Inc.
6//
7// This file is part of the GNU ISO C++ Library.  This library is free
8// software; you can redistribute it and/or modify it under the
9// terms of the GNU General Public License as published by the
10// Free Software Foundation; either version 3, or (at your option)
11// any later version.
12//
13// This library is distributed in the hope that it will be useful,
14// but WITHOUT ANY WARRANTY; without even the implied warranty of
15// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16// GNU General Public License for more details.
17//
18// You should have received a copy of the GNU General Public License along
19// with this library; see the file COPYING3.  If not see
20// <http://www.gnu.org/licenses/>.
21//
22
23#include <unordered_set>
24#include <testsuite_hooks.h>
25
26void test01()
27{
28  bool test __attribute__((unused)) = true;
29  using namespace std;
30
31  unordered_set<int> us0;
32  VERIFY( us0.count(0) == 0 );
33  VERIFY( us0.count(1) == 0 );
34
35  us0.insert(1);
36  VERIFY( us0.count(0) == 0 );
37  VERIFY( us0.count(1) == 1 );
38
39  us0.insert(1);
40  VERIFY( us0.count(0) == 0 );
41  VERIFY( us0.count(1) == 1 );
42
43  us0.insert(2);
44  VERIFY( us0.count(2) == 1 );
45
46  us0.insert(3);
47  us0.insert(3);
48  us0.insert(3);
49  VERIFY( us0.count(3) == 1 );
50
51  us0.erase(2);
52  VERIFY( us0.count(2) == 0 );
53
54  us0.erase(0);
55  VERIFY( us0.count(0) == 0 );
56
57  unordered_set<int> us1(us0);
58  VERIFY( us1.count(0) == 0 );
59  VERIFY( us1.count(1) == 1 );
60  VERIFY( us1.count(2) == 0 );
61  VERIFY( us1.count(3) == 1 );
62
63  us0.clear();
64  VERIFY( us0.count(0) == 0 );
65  VERIFY( us0.count(1) == 0 );
66  VERIFY( us0.count(2) == 0 );
67  VERIFY( us0.count(3) == 0 );
68
69  us1.insert(4);
70  us1.insert(5);
71  us1.insert(5);
72  us1.insert(5);
73  us1.insert(5);
74  VERIFY( us1.count(4) == 1 );
75  VERIFY( us1.count(5) == 1 );
76
77  us1.erase(1);
78  VERIFY( us1.count(1) == 0 );
79
80  us1.erase(us1.find(5));
81  VERIFY( us1.count(5) == 0 );
82
83  us1.insert(1);
84  us1.insert(1);
85  VERIFY( us1.count(1) == 1 );
86
87  us1.erase(5);
88  VERIFY( us1.count(5) == 0 );
89
90  us1.erase(us1.find(4));
91  VERIFY( us1.count(4) == 0 );
92
93  us1.clear();
94  VERIFY( us1.count(0) == 0 );
95  VERIFY( us1.count(1) == 0 );
96  VERIFY( us1.count(2) == 0 );
97  VERIFY( us1.count(3) == 0 );
98  VERIFY( us1.count(4) == 0 );
99  VERIFY( us1.count(5) == 0 );
100}
101
102int main()
103{
104  test01();
105  return 0;
106}
107