brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.9 KiB · ffb74f6 Raw
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