114 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// <map>10 11// class map12 13// void swap(map& m);14 15#include <map>16#include <cassert>17 18#include "test_macros.h"19#include "min_allocator.h"20 21int main(int, char**) {22 typedef std::pair<const int, double> V;23 {24 typedef std::map<int, double> M;25 {26 M m1;27 M m2;28 M m1_save = m1;29 M m2_save = m2;30 m1.swap(m2);31 assert(m1 == m2_save);32 assert(m2 == m1_save);33 }34 {35 V ar2[] = {V(5, 5), V(6, 6), V(7, 7), V(8, 8), V(9, 9), V(10, 10), V(11, 11), V(12, 12)};36 M m1;37 M m2(ar2, ar2 + sizeof(ar2) / sizeof(ar2[0]));38 M m1_save = m1;39 M m2_save = m2;40 m1.swap(m2);41 assert(m1 == m2_save);42 assert(m2 == m1_save);43 }44 {45 V ar1[] = {V(1, 1), V(2, 2), V(3, 3), V(4, 4)};46 M m1(ar1, ar1 + sizeof(ar1) / sizeof(ar1[0]));47 M m2;48 M m1_save = m1;49 M m2_save = m2;50 m1.swap(m2);51 assert(m1 == m2_save);52 assert(m2 == m1_save);53 }54 {55 V ar1[] = {V(1, 1), V(2, 2), V(3, 3), V(4, 4)};56 V ar2[] = {V(5, 5), V(6, 6), V(7, 7), V(8, 8), V(9, 9), V(10, 10), V(11, 11), V(12, 12)};57 M m1(ar1, ar1 + sizeof(ar1) / sizeof(ar1[0]));58 M m2(ar2, ar2 + sizeof(ar2) / sizeof(ar2[0]));59 M m1_save = m1;60 M m2_save = m2;61 m1.swap(m2);62 assert(m1 == m2_save);63 assert(m2 == m1_save);64 }65 }66#if TEST_STD_VER >= 1167 {68 typedef std::map<int, double, std::less<int>, min_allocator<V>> M;69 {70 M m1;71 M m2;72 M m1_save = m1;73 M m2_save = m2;74 m1.swap(m2);75 assert(m1 == m2_save);76 assert(m2 == m1_save);77 }78 {79 V ar2[] = {V(5, 5), V(6, 6), V(7, 7), V(8, 8), V(9, 9), V(10, 10), V(11, 11), V(12, 12)};80 M m1;81 M m2(ar2, ar2 + sizeof(ar2) / sizeof(ar2[0]));82 M m1_save = m1;83 M m2_save = m2;84 m1.swap(m2);85 assert(m1 == m2_save);86 assert(m2 == m1_save);87 }88 {89 V ar1[] = {V(1, 1), V(2, 2), V(3, 3), V(4, 4)};90 M m1(ar1, ar1 + sizeof(ar1) / sizeof(ar1[0]));91 M m2;92 M m1_save = m1;93 M m2_save = m2;94 m1.swap(m2);95 assert(m1 == m2_save);96 assert(m2 == m1_save);97 }98 {99 V ar1[] = {V(1, 1), V(2, 2), V(3, 3), V(4, 4)};100 V ar2[] = {V(5, 5), V(6, 6), V(7, 7), V(8, 8), V(9, 9), V(10, 10), V(11, 11), V(12, 12)};101 M m1(ar1, ar1 + sizeof(ar1) / sizeof(ar1[0]));102 M m2(ar2, ar2 + sizeof(ar2) / sizeof(ar2[0]));103 M m1_save = m1;104 M m2_save = m2;105 m1.swap(m2);106 assert(m1 == m2_save);107 assert(m2 == m1_save);108 }109 }110#endif111 112 return 0;113}114