1// { dg-options "-std=gnu++0x" }
2
3// 2010-03-25  Paolo Carlini  <paolo.carlini@oracle.com>
4
5// Copyright (C) 2010 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#include <unordered_map>
23#include <testsuite_hooks.h>
24
25void test01()
26{
27  bool test __attribute__((unused)) = true;
28
29  typedef std::pair<const int, int> Pair;
30  std::unordered_multimap<int, int> umm1, umm2;
31  VERIFY( umm1 == umm2 );
32  VERIFY( !(umm1 != umm2) );
33
34  umm1.insert(Pair(1, -1));
35  umm2.insert(Pair(1, -1));
36  VERIFY( umm1 == umm2 );
37  VERIFY( !(umm1 != umm2) );
38
39  umm1.insert(Pair(2, -1));
40  umm2.insert(Pair(2, -1));
41  VERIFY( umm1 == umm2 );
42  VERIFY( !(umm1 != umm2) );
43
44  umm1.insert(Pair(1, -1));
45  umm2.insert(Pair(1, -1));
46  VERIFY( umm1 == umm2 );
47  VERIFY( !(umm1 != umm2) );
48
49  umm1.insert(Pair(3, -3));
50  VERIFY( umm1 != umm2 );
51  VERIFY( !(umm1 == umm2) );
52
53  umm2.insert(Pair(3, -3));
54  VERIFY( (umm1 == umm2) );
55  VERIFY( !(umm1 != umm2) );
56
57  umm2.clear();
58  VERIFY( umm1 != umm2 );
59  VERIFY( !(umm1 == umm2) );
60
61  umm1.clear();
62  VERIFY( umm1 == umm2 );
63  VERIFY( !(umm1 != umm2) );
64
65  umm1.insert(Pair(1, -1));
66  umm2.insert(Pair(2, -2));
67  VERIFY( umm1 != umm2 );
68  VERIFY( !(umm1 == umm2) );
69
70  umm1.insert(Pair(2, -2));
71  umm2.insert(Pair(1, -1));
72  VERIFY( umm1 == umm2 );
73  VERIFY( !(umm1 != umm2) );
74
75  umm1.insert(Pair(3, -3));
76  umm2.insert(Pair(4, -4));
77  VERIFY( umm1 != umm2 );
78  VERIFY( !(umm1 == umm2) );
79
80  umm1.insert(Pair(4, -4));
81  VERIFY( umm1 != umm2 );
82  VERIFY( !(umm1 == umm2) );
83
84  umm2.insert(Pair(3, -3));
85  VERIFY( umm1 == umm2 );
86  VERIFY( !(umm1 != umm2) );
87
88  umm1.insert(Pair(1, -1));
89  umm2.insert(Pair(1, -1));
90  VERIFY( umm1 == umm2 );
91  VERIFY( !(umm1 != umm2) );
92
93  umm1.insert(Pair(4, -4));
94  umm2.insert(Pair(4, -4));
95  VERIFY( umm1 == umm2 );
96  VERIFY( !(umm1 != umm2) );
97
98  umm1.clear();
99  umm2.clear();
100  VERIFY( umm1 == umm2 );
101  VERIFY( !(umm1 != umm2) );
102
103  umm1.insert(Pair(1, -1));
104  umm2.insert(Pair(1, -2));
105  VERIFY( umm1 != umm2 );
106  VERIFY( !(umm1 == umm2) );
107
108  umm1.clear();
109  umm2.clear();
110  VERIFY( umm1 == umm2 );
111  VERIFY( !(umm1 != umm2) );
112
113  umm1.insert(Pair(1, -1));
114  umm2.insert(Pair(1, -1));
115  VERIFY( umm1 == umm2 );
116  VERIFY( !(umm1 != umm2) );
117
118  umm1.insert(Pair(2, -2));
119  umm2.insert(Pair(2, -3));
120  VERIFY( umm1 != umm2 );
121  VERIFY( !(umm1 == umm2) );
122
123  umm1.insert(Pair(2, -3));
124  umm2.insert(Pair(2, -2));
125  VERIFY( umm1 == umm2 );
126  VERIFY( !(umm1 != umm2) );
127
128  umm1.clear();
129  umm2.clear();
130  VERIFY( umm1 == umm2 );
131  VERIFY( !(umm1 != umm2) );
132
133  umm1.insert(Pair(2, -2));
134  umm2.insert(Pair(2, -3));
135  VERIFY( umm1 != umm2 );
136  VERIFY( !(umm1 == umm2) );
137
138  umm1.insert(Pair(1, -1));
139  umm2.insert(Pair(1, -1));
140  VERIFY( umm1 != umm2 );
141  VERIFY( !(umm1 == umm2) );
142
143  umm1.insert(Pair(2, -3));
144  umm2.insert(Pair(2, -2));
145  VERIFY( umm1 == umm2 );
146  VERIFY( !(umm1 != umm2) );
147
148  umm1.insert(Pair(1, -1));
149  umm2.insert(Pair(1, -1));
150  VERIFY( umm1 == umm2 );
151  VERIFY( !(umm1 != umm2) );
152
153  umm1.insert(Pair(1, -1));
154  umm2.insert(Pair(1, -2));
155  VERIFY( umm1 != umm2 );
156  VERIFY( !(umm1 == umm2) );
157
158  umm1.insert(Pair(3, -3));
159  umm2.insert(Pair(3, -3));
160  VERIFY( umm1 != umm2 );
161  VERIFY( !(umm1 == umm2) );
162
163  umm1.insert(Pair(3, -4));
164  umm2.insert(Pair(3, -3));
165  VERIFY( umm1 != umm2 );
166  VERIFY( !(umm1 == umm2) );
167
168  umm1.insert(Pair(3, -3));
169  VERIFY( umm1 != umm2 );
170  VERIFY( !(umm1 == umm2) );
171
172  umm1.insert(Pair(1, -2));
173  umm2.insert(Pair(1, -1));
174  VERIFY( umm1 != umm2 );
175  VERIFY( !(umm1 == umm2) );
176
177  umm2.insert(Pair(3, -4));
178  VERIFY( umm1 == umm2 );
179  VERIFY( !(umm1 != umm2) );
180
181  const std::unordered_multimap<int, int> cumm1(umm1), cumm2(umm2);
182  VERIFY( cumm1 == cumm2 );
183  VERIFY( !(cumm1 != cumm2) );
184  VERIFY( cumm1 == umm2 );
185  VERIFY( !(umm1 != cumm2) );
186}
187
188int main()
189{
190  test01();
191  return 0;
192}
193