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