1 //===- unittest/ADT/MapVectorTest.cpp - MapVector unit tests ----*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #include "gtest/gtest.h"
11 #include "llvm/ADT/MapVector.h"
12 #include "llvm/ADT/iterator_range.h"
17 TEST(MapVectorTest, insert_pop) {
18 MapVector<int, int> MV;
19 std::pair<MapVector<int, int>::iterator, bool> R;
21 R = MV.insert(std::make_pair(1, 2));
22 ASSERT_EQ(R.first, MV.begin());
23 EXPECT_EQ(R.first->first, 1);
24 EXPECT_EQ(R.first->second, 2);
25 EXPECT_TRUE(R.second);
27 R = MV.insert(std::make_pair(1, 3));
28 ASSERT_EQ(R.first, MV.begin());
29 EXPECT_EQ(R.first->first, 1);
30 EXPECT_EQ(R.first->second, 2);
31 EXPECT_FALSE(R.second);
33 R = MV.insert(std::make_pair(4, 5));
34 ASSERT_NE(R.first, MV.end());
35 EXPECT_EQ(R.first->first, 4);
36 EXPECT_EQ(R.first->second, 5);
37 EXPECT_TRUE(R.second);
39 EXPECT_EQ(MV.size(), 2u);
44 EXPECT_EQ(MV.size(), 1u);
47 R = MV.insert(std::make_pair(4, 7));
48 ASSERT_NE(R.first, MV.end());
49 EXPECT_EQ(R.first->first, 4);
50 EXPECT_EQ(R.first->second, 7);
51 EXPECT_TRUE(R.second);
53 EXPECT_EQ(MV.size(), 2u);
58 TEST(MapVectorTest, erase) {
59 MapVector<int, int> MV;
61 MV.insert(std::make_pair(1, 2));
62 MV.insert(std::make_pair(3, 4));
63 MV.insert(std::make_pair(5, 6));
64 ASSERT_EQ(MV.size(), 3u);
67 ASSERT_EQ(MV.size(), 2u);
68 ASSERT_EQ(MV.find(1), MV.end());
72 ASSERT_EQ(MV.erase(3), 1u);
73 ASSERT_EQ(MV.size(), 1u);
74 ASSERT_EQ(MV.find(3), MV.end());
77 ASSERT_EQ(MV.erase(79), 0u);
78 ASSERT_EQ(MV.size(), 1u);
81 TEST(MapVectorTest, remove_if) {
82 MapVector<int, int> MV;
84 MV.insert(std::make_pair(1, 11));
85 MV.insert(std::make_pair(2, 12));
86 MV.insert(std::make_pair(3, 13));
87 MV.insert(std::make_pair(4, 14));
88 MV.insert(std::make_pair(5, 15));
89 MV.insert(std::make_pair(6, 16));
90 ASSERT_EQ(MV.size(), 6u);
92 MV.remove_if([](const std::pair<int, int> &Val) { return Val.second % 2; });
93 ASSERT_EQ(MV.size(), 3u);
94 ASSERT_EQ(MV.find(1), MV.end());
95 ASSERT_EQ(MV.find(3), MV.end());
96 ASSERT_EQ(MV.find(5), MV.end());
102 TEST(MapVectorTest, iteration_test) {
103 MapVector<int, int> MV;
105 MV.insert(std::make_pair(1, 11));
106 MV.insert(std::make_pair(2, 12));
107 MV.insert(std::make_pair(3, 13));
108 MV.insert(std::make_pair(4, 14));
109 MV.insert(std::make_pair(5, 15));
110 MV.insert(std::make_pair(6, 16));
111 ASSERT_EQ(MV.size(), 6u);
114 for (auto P : make_range(MV.begin(), MV.end())) {
115 ASSERT_EQ(P.first, count);
120 for (auto P : make_range(MV.rbegin(), MV.rend())) {
121 ASSERT_EQ(P.first, count);