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 // <unordered_map> 11 12 // template <class Key, class T, class Hash = hash<Key>, class Pred = equal_to<Key>, 13 // class Alloc = allocator<pair<const Key, T>>> 14 // class unordered_map 15 16 // void swap(unordered_map& __u); 17 18 #include <unordered_map> 19 #include <string> 20 #include <cassert> 21 #include <cstddef> 22 23 #include "../../test_compare.h" 24 #include "../../test_hash.h" 25 #include "test_macros.h" 26 #include "test_allocator.h" 27 #include "min_allocator.h" 28 29 int main() 30 { 31 { 32 typedef test_hash<std::hash<int> > Hash; 33 typedef test_compare<std::equal_to<int> > Compare; 34 typedef test_allocator<std::pair<const int, std::string> > Alloc; 35 typedef std::unordered_map<int, std::string, Hash, Compare, Alloc> C; 36 C c1(0, Hash(1), Compare(1), Alloc(1, 1)); 37 C c2(0, Hash(2), Compare(2), Alloc(1, 2)); 38 c2.max_load_factor(2); 39 c1.swap(c2); 40 41 LIBCPP_ASSERT(c1.bucket_count() == 0); 42 assert(c1.size() == 0); 43 assert(c1.hash_function() == Hash(2)); 44 assert(c1.key_eq() == Compare(2)); 45 assert(c1.get_allocator().get_id() == 1); 46 assert(static_cast<std::size_t>(std::distance(c1.begin(), c1.end())) == c1.size()); 47 assert(static_cast<std::size_t>(std::distance(c1.cbegin(), c1.cend())) == c1.size()); 48 assert(c1.max_load_factor() == 2); 49 50 LIBCPP_ASSERT(c2.bucket_count() == 0); 51 assert(c2.size() == 0); 52 assert(c2.hash_function() == Hash(1)); 53 assert(c2.key_eq() == Compare(1)); 54 assert(c2.get_allocator().get_id() == 2); 55 assert(static_cast<std::size_t>(std::distance(c2.begin(), c2.end())) == c2.size()); 56 assert(static_cast<std::size_t>(std::distance(c2.cbegin(), c2.cend())) == c2.size()); 57 assert(c2.max_load_factor() == 1); 58 } 59 { 60 typedef test_hash<std::hash<int> > Hash; 61 typedef test_compare<std::equal_to<int> > Compare; 62 typedef test_allocator<std::pair<const int, std::string> > Alloc; 63 typedef std::unordered_map<int, std::string, Hash, Compare, Alloc> C; 64 typedef std::pair<int, std::string> P; 65 P a2[] = 66 { 67 P(10, "ten"), 68 P(20, "twenty"), 69 P(30, "thirty"), 70 P(40, "forty"), 71 P(50, "fifty"), 72 P(60, "sixty"), 73 P(70, "seventy"), 74 P(80, "eighty"), 75 }; 76 C c1(0, Hash(1), Compare(1), Alloc(1, 1)); 77 C c2(std::begin(a2), std::end(a2), 0, Hash(2), Compare(2), Alloc(1, 2)); 78 c2.max_load_factor(2); 79 c1.swap(c2); 80 81 assert(c1.bucket_count() >= 8); 82 assert(c1.size() == 8); 83 assert(c1.at(10) == "ten"); 84 assert(c1.at(20) == "twenty"); 85 assert(c1.at(30) == "thirty"); 86 assert(c1.at(40) == "forty"); 87 assert(c1.at(50) == "fifty"); 88 assert(c1.at(60) == "sixty"); 89 assert(c1.at(70) == "seventy"); 90 assert(c1.at(80) == "eighty"); 91 assert(c1.hash_function() == Hash(2)); 92 assert(c1.key_eq() == Compare(2)); 93 assert(c1.get_allocator().get_id() == 1); 94 assert(static_cast<std::size_t>(std::distance(c1.begin(), c1.end())) == c1.size()); 95 assert(static_cast<std::size_t>(std::distance(c1.cbegin(), c1.cend())) == c1.size()); 96 assert(c1.max_load_factor() == 2); 97 98 LIBCPP_ASSERT(c2.bucket_count() == 0); 99 assert(c2.size() == 0); 100 assert(c2.hash_function() == Hash(1)); 101 assert(c2.key_eq() == Compare(1)); 102 assert(c2.get_allocator().get_id() == 2); 103 assert(static_cast<std::size_t>(std::distance(c2.begin(), c2.end())) == c2.size()); 104 assert(static_cast<std::size_t>(std::distance(c2.cbegin(), c2.cend())) == c2.size()); 105 assert(c2.max_load_factor() == 1); 106 } 107 { 108 typedef test_hash<std::hash<int> > Hash; 109 typedef test_compare<std::equal_to<int> > Compare; 110 typedef test_allocator<std::pair<const int, std::string> > Alloc; 111 typedef std::unordered_map<int, std::string, Hash, Compare, Alloc> C; 112 typedef std::pair<int, std::string> P; 113 P a1[] = 114 { 115 P(1, "one"), 116 P(2, "two"), 117 P(3, "three"), 118 P(4, "four"), 119 P(1, "four"), 120 P(2, "four"), 121 }; 122 C c1(std::begin(a1), std::end(a1), 0, Hash(1), Compare(1), Alloc(1, 1)); 123 C c2(0, Hash(2), Compare(2), Alloc(1, 2)); 124 c2.max_load_factor(2); 125 c1.swap(c2); 126 127 LIBCPP_ASSERT(c1.bucket_count() == 0); 128 assert(c1.size() == 0); 129 assert(c1.hash_function() == Hash(2)); 130 assert(c1.key_eq() == Compare(2)); 131 assert(c1.get_allocator().get_id() == 1); 132 assert(static_cast<std::size_t>(std::distance(c1.begin(), c1.end())) == c1.size()); 133 assert(static_cast<std::size_t>(std::distance(c1.cbegin(), c1.cend())) == c1.size()); 134 assert(c1.max_load_factor() == 2); 135 136 assert(c2.bucket_count() >= 4); 137 assert(c2.size() == 4); 138 assert(c2.at(1) == "one"); 139 assert(c2.at(2) == "two"); 140 assert(c2.at(3) == "three"); 141 assert(c2.at(4) == "four"); 142 assert(c2.hash_function() == Hash(1)); 143 assert(c2.key_eq() == Compare(1)); 144 assert(c2.get_allocator().get_id() == 2); 145 assert(static_cast<std::size_t>(std::distance(c2.begin(), c2.end())) == c2.size()); 146 assert(static_cast<std::size_t>(std::distance(c2.cbegin(), c2.cend())) == c2.size()); 147 assert(c2.max_load_factor() == 1); 148 } 149 { 150 typedef test_hash<std::hash<int> > Hash; 151 typedef test_compare<std::equal_to<int> > Compare; 152 typedef test_allocator<std::pair<const int, std::string> > Alloc; 153 typedef std::unordered_map<int, std::string, Hash, Compare, Alloc> C; 154 typedef std::pair<int, std::string> P; 155 P a1[] = 156 { 157 P(1, "one"), 158 P(2, "two"), 159 P(3, "three"), 160 P(4, "four"), 161 P(1, "four"), 162 P(2, "four"), 163 }; 164 P a2[] = 165 { 166 P(10, "ten"), 167 P(20, "twenty"), 168 P(30, "thirty"), 169 P(40, "forty"), 170 P(50, "fifty"), 171 P(60, "sixty"), 172 P(70, "seventy"), 173 P(80, "eighty"), 174 }; 175 C c1(std::begin(a1), std::end(a1), 0, Hash(1), Compare(1), Alloc(1, 1)); 176 C c2(std::begin(a2), std::end(a2), 0, Hash(2), Compare(2), Alloc(1, 2)); 177 c2.max_load_factor(2); 178 c1.swap(c2); 179 180 assert(c1.bucket_count() >= 8); 181 assert(c1.size() == 8); 182 assert(c1.at(10) == "ten"); 183 assert(c1.at(20) == "twenty"); 184 assert(c1.at(30) == "thirty"); 185 assert(c1.at(40) == "forty"); 186 assert(c1.at(50) == "fifty"); 187 assert(c1.at(60) == "sixty"); 188 assert(c1.at(70) == "seventy"); 189 assert(c1.at(80) == "eighty"); 190 assert(c1.hash_function() == Hash(2)); 191 assert(c1.key_eq() == Compare(2)); 192 assert(c1.get_allocator().get_id() == 1); 193 assert(static_cast<std::size_t>(std::distance(c1.begin(), c1.end())) == c1.size()); 194 assert(static_cast<std::size_t>(std::distance(c1.cbegin(), c1.cend())) == c1.size()); 195 assert(c1.max_load_factor() == 2); 196 197 assert(c2.bucket_count() >= 4); 198 assert(c2.size() == 4); 199 assert(c2.at(1) == "one"); 200 assert(c2.at(2) == "two"); 201 assert(c2.at(3) == "three"); 202 assert(c2.at(4) == "four"); 203 assert(c2.hash_function() == Hash(1)); 204 assert(c2.key_eq() == Compare(1)); 205 assert(c2.get_allocator().get_id() == 2); 206 assert(static_cast<std::size_t>(std::distance(c2.begin(), c2.end())) == c2.size()); 207 assert(static_cast<std::size_t>(std::distance(c2.cbegin(), c2.cend())) == c2.size()); 208 assert(c2.max_load_factor() == 1); 209 } 210 211 { 212 typedef test_hash<std::hash<int> > Hash; 213 typedef test_compare<std::equal_to<int> > Compare; 214 typedef other_allocator<std::pair<const int, std::string> > Alloc; 215 typedef std::unordered_map<int, std::string, Hash, Compare, Alloc> C; 216 C c1(0, Hash(1), Compare(1), Alloc(1)); 217 C c2(0, Hash(2), Compare(2), Alloc(2)); 218 c2.max_load_factor(2); 219 c1.swap(c2); 220 221 LIBCPP_ASSERT(c1.bucket_count() == 0); 222 assert(c1.size() == 0); 223 assert(c1.hash_function() == Hash(2)); 224 assert(c1.key_eq() == Compare(2)); 225 assert(c1.get_allocator() == Alloc(2)); 226 assert(static_cast<std::size_t>(std::distance(c1.begin(), c1.end())) == c1.size()); 227 assert(static_cast<std::size_t>(std::distance(c1.cbegin(), c1.cend())) == c1.size()); 228 assert(c1.max_load_factor() == 2); 229 230 LIBCPP_ASSERT(c2.bucket_count() == 0); 231 assert(c2.size() == 0); 232 assert(c2.hash_function() == Hash(1)); 233 assert(c2.key_eq() == Compare(1)); 234 assert(c2.get_allocator() == Alloc(1)); 235 assert(static_cast<std::size_t>(std::distance(c2.begin(), c2.end())) == c2.size()); 236 assert(static_cast<std::size_t>(std::distance(c2.cbegin(), c2.cend())) == c2.size()); 237 assert(c2.max_load_factor() == 1); 238 } 239 { 240 typedef test_hash<std::hash<int> > Hash; 241 typedef test_compare<std::equal_to<int> > Compare; 242 typedef other_allocator<std::pair<const int, std::string> > Alloc; 243 typedef std::unordered_map<int, std::string, Hash, Compare, Alloc> C; 244 typedef std::pair<int, std::string> P; 245 P a2[] = 246 { 247 P(10, "ten"), 248 P(20, "twenty"), 249 P(30, "thirty"), 250 P(40, "forty"), 251 P(50, "fifty"), 252 P(60, "sixty"), 253 P(70, "seventy"), 254 P(80, "eighty"), 255 }; 256 C c1(0, Hash(1), Compare(1), Alloc(1)); 257 C c2(std::begin(a2), std::end(a2), 0, Hash(2), Compare(2), Alloc(2)); 258 c2.max_load_factor(2); 259 c1.swap(c2); 260 261 assert(c1.bucket_count() >= 8); 262 assert(c1.size() == 8); 263 assert(c1.at(10) == "ten"); 264 assert(c1.at(20) == "twenty"); 265 assert(c1.at(30) == "thirty"); 266 assert(c1.at(40) == "forty"); 267 assert(c1.at(50) == "fifty"); 268 assert(c1.at(60) == "sixty"); 269 assert(c1.at(70) == "seventy"); 270 assert(c1.at(80) == "eighty"); 271 assert(c1.hash_function() == Hash(2)); 272 assert(c1.key_eq() == Compare(2)); 273 assert(c1.get_allocator() == Alloc(2)); 274 assert(static_cast<std::size_t>(std::distance(c1.begin(), c1.end())) == c1.size()); 275 assert(static_cast<std::size_t>(std::distance(c1.cbegin(), c1.cend())) == c1.size()); 276 assert(c1.max_load_factor() == 2); 277 278 LIBCPP_ASSERT(c2.bucket_count() == 0); 279 assert(c2.size() == 0); 280 assert(c2.hash_function() == Hash(1)); 281 assert(c2.key_eq() == Compare(1)); 282 assert(c2.get_allocator() == Alloc(1)); 283 assert(static_cast<std::size_t>(std::distance(c2.begin(), c2.end())) == c2.size()); 284 assert(static_cast<std::size_t>(std::distance(c2.cbegin(), c2.cend())) == c2.size()); 285 assert(c2.max_load_factor() == 1); 286 } 287 { 288 typedef test_hash<std::hash<int> > Hash; 289 typedef test_compare<std::equal_to<int> > Compare; 290 typedef other_allocator<std::pair<const int, std::string> > Alloc; 291 typedef std::unordered_map<int, std::string, Hash, Compare, Alloc> C; 292 typedef std::pair<int, std::string> P; 293 P a1[] = 294 { 295 P(1, "one"), 296 P(2, "two"), 297 P(3, "three"), 298 P(4, "four"), 299 P(1, "four"), 300 P(2, "four"), 301 }; 302 C c1(std::begin(a1), std::end(a1), 0, Hash(1), Compare(1), Alloc(1)); 303 C c2(0, Hash(2), Compare(2), Alloc(2)); 304 c2.max_load_factor(2); 305 c1.swap(c2); 306 307 LIBCPP_ASSERT(c1.bucket_count() == 0); 308 assert(c1.size() == 0); 309 assert(c1.hash_function() == Hash(2)); 310 assert(c1.key_eq() == Compare(2)); 311 assert(c1.get_allocator() == Alloc(2)); 312 assert(static_cast<std::size_t>(std::distance(c1.begin(), c1.end())) == c1.size()); 313 assert(static_cast<std::size_t>(std::distance(c1.cbegin(), c1.cend())) == c1.size()); 314 assert(c1.max_load_factor() == 2); 315 316 assert(c2.bucket_count() >= 4); 317 assert(c2.size() == 4); 318 assert(c2.at(1) == "one"); 319 assert(c2.at(2) == "two"); 320 assert(c2.at(3) == "three"); 321 assert(c2.at(4) == "four"); 322 assert(c2.hash_function() == Hash(1)); 323 assert(c2.key_eq() == Compare(1)); 324 assert(c2.get_allocator() == Alloc(1)); 325 assert(static_cast<std::size_t>(std::distance(c2.begin(), c2.end())) == c2.size()); 326 assert(static_cast<std::size_t>(std::distance(c2.cbegin(), c2.cend())) == c2.size()); 327 assert(c2.max_load_factor() == 1); 328 } 329 { 330 typedef test_hash<std::hash<int> > Hash; 331 typedef test_compare<std::equal_to<int> > Compare; 332 typedef other_allocator<std::pair<const int, std::string> > Alloc; 333 typedef std::unordered_map<int, std::string, Hash, Compare, Alloc> C; 334 typedef std::pair<int, std::string> P; 335 P a1[] = 336 { 337 P(1, "one"), 338 P(2, "two"), 339 P(3, "three"), 340 P(4, "four"), 341 P(1, "four"), 342 P(2, "four"), 343 }; 344 P a2[] = 345 { 346 P(10, "ten"), 347 P(20, "twenty"), 348 P(30, "thirty"), 349 P(40, "forty"), 350 P(50, "fifty"), 351 P(60, "sixty"), 352 P(70, "seventy"), 353 P(80, "eighty"), 354 }; 355 C c1(std::begin(a1), std::end(a1), 0, Hash(1), Compare(1), Alloc(1)); 356 C c2(std::begin(a2), std::end(a2), 0, Hash(2), Compare(2), Alloc(2)); 357 c2.max_load_factor(2); 358 c1.swap(c2); 359 360 assert(c1.bucket_count() >= 8); 361 assert(c1.size() == 8); 362 assert(c1.at(10) == "ten"); 363 assert(c1.at(20) == "twenty"); 364 assert(c1.at(30) == "thirty"); 365 assert(c1.at(40) == "forty"); 366 assert(c1.at(50) == "fifty"); 367 assert(c1.at(60) == "sixty"); 368 assert(c1.at(70) == "seventy"); 369 assert(c1.at(80) == "eighty"); 370 assert(c1.hash_function() == Hash(2)); 371 assert(c1.key_eq() == Compare(2)); 372 assert(c1.get_allocator() == Alloc(2)); 373 assert(static_cast<std::size_t>(std::distance(c1.begin(), c1.end())) == c1.size()); 374 assert(static_cast<std::size_t>(std::distance(c1.cbegin(), c1.cend())) == c1.size()); 375 assert(c1.max_load_factor() == 2); 376 377 assert(c2.bucket_count() >= 4); 378 assert(c2.size() == 4); 379 assert(c2.at(1) == "one"); 380 assert(c2.at(2) == "two"); 381 assert(c2.at(3) == "three"); 382 assert(c2.at(4) == "four"); 383 assert(c2.hash_function() == Hash(1)); 384 assert(c2.key_eq() == Compare(1)); 385 assert(c2.get_allocator() == Alloc(1)); 386 assert(static_cast<std::size_t>(std::distance(c2.begin(), c2.end())) == c2.size()); 387 assert(static_cast<std::size_t>(std::distance(c2.cbegin(), c2.cend())) == c2.size()); 388 assert(c2.max_load_factor() == 1); 389 } 390 #if TEST_STD_VER >= 11 391 { 392 typedef test_hash<std::hash<int> > Hash; 393 typedef test_compare<std::equal_to<int> > Compare; 394 typedef min_allocator<std::pair<const int, std::string> > Alloc; 395 typedef std::unordered_map<int, std::string, Hash, Compare, Alloc> C; 396 C c1(0, Hash(1), Compare(1), Alloc()); 397 C c2(0, Hash(2), Compare(2), Alloc()); 398 c2.max_load_factor(2); 399 c1.swap(c2); 400 401 LIBCPP_ASSERT(c1.bucket_count() == 0); 402 assert(c1.size() == 0); 403 assert(c1.hash_function() == Hash(2)); 404 assert(c1.key_eq() == Compare(2)); 405 assert(c1.get_allocator() == Alloc()); 406 assert(static_cast<std::size_t>(std::distance(c1.begin(), c1.end())) == c1.size()); 407 assert(static_cast<std::size_t>(std::distance(c1.cbegin(), c1.cend())) == c1.size()); 408 assert(c1.max_load_factor() == 2); 409 410 LIBCPP_ASSERT(c2.bucket_count() == 0); 411 assert(c2.size() == 0); 412 assert(c2.hash_function() == Hash(1)); 413 assert(c2.key_eq() == Compare(1)); 414 assert(c2.get_allocator() == Alloc()); 415 assert(static_cast<std::size_t>(std::distance(c2.begin(), c2.end())) == c2.size()); 416 assert(static_cast<std::size_t>(std::distance(c2.cbegin(), c2.cend())) == c2.size()); 417 assert(c2.max_load_factor() == 1); 418 } 419 { 420 typedef test_hash<std::hash<int> > Hash; 421 typedef test_compare<std::equal_to<int> > Compare; 422 typedef min_allocator<std::pair<const int, std::string> > Alloc; 423 typedef std::unordered_map<int, std::string, Hash, Compare, Alloc> C; 424 typedef std::pair<int, std::string> P; 425 P a2[] = 426 { 427 P(10, "ten"), 428 P(20, "twenty"), 429 P(30, "thirty"), 430 P(40, "forty"), 431 P(50, "fifty"), 432 P(60, "sixty"), 433 P(70, "seventy"), 434 P(80, "eighty"), 435 }; 436 C c1(0, Hash(1), Compare(1), Alloc()); 437 C c2(std::begin(a2), std::end(a2), 0, Hash(2), Compare(2), Alloc()); 438 c2.max_load_factor(2); 439 c1.swap(c2); 440 441 assert(c1.bucket_count() >= 8); 442 assert(c1.size() == 8); 443 assert(c1.at(10) == "ten"); 444 assert(c1.at(20) == "twenty"); 445 assert(c1.at(30) == "thirty"); 446 assert(c1.at(40) == "forty"); 447 assert(c1.at(50) == "fifty"); 448 assert(c1.at(60) == "sixty"); 449 assert(c1.at(70) == "seventy"); 450 assert(c1.at(80) == "eighty"); 451 assert(c1.hash_function() == Hash(2)); 452 assert(c1.key_eq() == Compare(2)); 453 assert(c1.get_allocator() == Alloc()); 454 assert(static_cast<std::size_t>(std::distance(c1.begin(), c1.end())) == c1.size()); 455 assert(static_cast<std::size_t>(std::distance(c1.cbegin(), c1.cend())) == c1.size()); 456 assert(c1.max_load_factor() == 2); 457 458 LIBCPP_ASSERT(c2.bucket_count() == 0); 459 assert(c2.size() == 0); 460 assert(c2.hash_function() == Hash(1)); 461 assert(c2.key_eq() == Compare(1)); 462 assert(c2.get_allocator() == Alloc()); 463 assert(static_cast<std::size_t>(std::distance(c2.begin(), c2.end())) == c2.size()); 464 assert(static_cast<std::size_t>(std::distance(c2.cbegin(), c2.cend())) == c2.size()); 465 assert(c2.max_load_factor() == 1); 466 } 467 { 468 typedef test_hash<std::hash<int> > Hash; 469 typedef test_compare<std::equal_to<int> > Compare; 470 typedef min_allocator<std::pair<const int, std::string> > Alloc; 471 typedef std::unordered_map<int, std::string, Hash, Compare, Alloc> C; 472 typedef std::pair<int, std::string> P; 473 P a1[] = 474 { 475 P(1, "one"), 476 P(2, "two"), 477 P(3, "three"), 478 P(4, "four"), 479 P(1, "four"), 480 P(2, "four"), 481 }; 482 C c1(std::begin(a1), std::end(a1), 0, Hash(1), Compare(1), Alloc()); 483 C c2(0, Hash(2), Compare(2), Alloc()); 484 c2.max_load_factor(2); 485 c1.swap(c2); 486 487 LIBCPP_ASSERT(c1.bucket_count() == 0); 488 assert(c1.size() == 0); 489 assert(c1.hash_function() == Hash(2)); 490 assert(c1.key_eq() == Compare(2)); 491 assert(c1.get_allocator() == Alloc()); 492 assert(static_cast<std::size_t>(std::distance(c1.begin(), c1.end())) == c1.size()); 493 assert(static_cast<std::size_t>(std::distance(c1.cbegin(), c1.cend())) == c1.size()); 494 assert(c1.max_load_factor() == 2); 495 496 assert(c2.bucket_count() >= 4); 497 assert(c2.size() == 4); 498 assert(c2.at(1) == "one"); 499 assert(c2.at(2) == "two"); 500 assert(c2.at(3) == "three"); 501 assert(c2.at(4) == "four"); 502 assert(c2.hash_function() == Hash(1)); 503 assert(c2.key_eq() == Compare(1)); 504 assert(c2.get_allocator() == Alloc()); 505 assert(static_cast<std::size_t>(std::distance(c2.begin(), c2.end())) == c2.size()); 506 assert(static_cast<std::size_t>(std::distance(c2.cbegin(), c2.cend())) == c2.size()); 507 assert(c2.max_load_factor() == 1); 508 } 509 { 510 typedef test_hash<std::hash<int> > Hash; 511 typedef test_compare<std::equal_to<int> > Compare; 512 typedef min_allocator<std::pair<const int, std::string> > Alloc; 513 typedef std::unordered_map<int, std::string, Hash, Compare, Alloc> C; 514 typedef std::pair<int, std::string> P; 515 P a1[] = 516 { 517 P(1, "one"), 518 P(2, "two"), 519 P(3, "three"), 520 P(4, "four"), 521 P(1, "four"), 522 P(2, "four"), 523 }; 524 P a2[] = 525 { 526 P(10, "ten"), 527 P(20, "twenty"), 528 P(30, "thirty"), 529 P(40, "forty"), 530 P(50, "fifty"), 531 P(60, "sixty"), 532 P(70, "seventy"), 533 P(80, "eighty"), 534 }; 535 C c1(std::begin(a1), std::end(a1), 0, Hash(1), Compare(1), Alloc()); 536 C c2(std::begin(a2), std::end(a2), 0, Hash(2), Compare(2), Alloc()); 537 c2.max_load_factor(2); 538 c1.swap(c2); 539 540 assert(c1.bucket_count() >= 8); 541 assert(c1.size() == 8); 542 assert(c1.at(10) == "ten"); 543 assert(c1.at(20) == "twenty"); 544 assert(c1.at(30) == "thirty"); 545 assert(c1.at(40) == "forty"); 546 assert(c1.at(50) == "fifty"); 547 assert(c1.at(60) == "sixty"); 548 assert(c1.at(70) == "seventy"); 549 assert(c1.at(80) == "eighty"); 550 assert(c1.hash_function() == Hash(2)); 551 assert(c1.key_eq() == Compare(2)); 552 assert(c1.get_allocator() == Alloc()); 553 assert(static_cast<std::size_t>(std::distance(c1.begin(), c1.end())) == c1.size()); 554 assert(static_cast<std::size_t>(std::distance(c1.cbegin(), c1.cend())) == c1.size()); 555 assert(c1.max_load_factor() == 2); 556 557 assert(c2.bucket_count() >= 4); 558 assert(c2.size() == 4); 559 assert(c2.at(1) == "one"); 560 assert(c2.at(2) == "two"); 561 assert(c2.at(3) == "three"); 562 assert(c2.at(4) == "four"); 563 assert(c2.hash_function() == Hash(1)); 564 assert(c2.key_eq() == Compare(1)); 565 assert(c2.get_allocator() == Alloc()); 566 assert(static_cast<std::size_t>(std::distance(c2.begin(), c2.end())) == c2.size()); 567 assert(static_cast<std::size_t>(std::distance(c2.cbegin(), c2.cend())) == c2.size()); 568 assert(c2.max_load_factor() == 1); 569 } 570 #endif 571 } 572