115 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// <set>10 11// class set12 13// void swap(set& m);14 15#include <set>16#include <cassert>17 18#include "test_macros.h"19#include "min_allocator.h"20 21int main(int, char**) {22 {23 typedef int V;24 typedef std::set<int> 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[] = {5, 6, 7, 8, 9, 10, 11, 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[] = {1, 2, 3, 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[] = {1, 2, 3, 4};56 V ar2[] = {5, 6, 7, 8, 9, 10, 11, 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 int V;69 typedef std::set<int, std::less<int>, min_allocator<int>> M;70 {71 M m1;72 M m2;73 M m1_save = m1;74 M m2_save = m2;75 m1.swap(m2);76 assert(m1 == m2_save);77 assert(m2 == m1_save);78 }79 {80 V ar2[] = {5, 6, 7, 8, 9, 10, 11, 12};81 M m1;82 M m2(ar2, ar2 + sizeof(ar2) / sizeof(ar2[0]));83 M m1_save = m1;84 M m2_save = m2;85 m1.swap(m2);86 assert(m1 == m2_save);87 assert(m2 == m1_save);88 }89 {90 V ar1[] = {1, 2, 3, 4};91 M m1(ar1, ar1 + sizeof(ar1) / sizeof(ar1[0]));92 M m2;93 M m1_save = m1;94 M m2_save = m2;95 m1.swap(m2);96 assert(m1 == m2_save);97 assert(m2 == m1_save);98 }99 {100 V ar1[] = {1, 2, 3, 4};101 V ar2[] = {5, 6, 7, 8, 9, 10, 11, 12};102 M m1(ar1, ar1 + sizeof(ar1) / sizeof(ar1[0]));103 M m2(ar2, ar2 + sizeof(ar2) / sizeof(ar2[0]));104 M m1_save = m1;105 M m2_save = m2;106 m1.swap(m2);107 assert(m1 == m2_save);108 assert(m2 == m1_save);109 }110 }111#endif112 113 return 0;114}115