1*9880d681SAndroid Build Coastguard Worker //===- unittest/ADT/MapVectorTest.cpp - MapVector unit tests ----*- C++ -*-===//
2*9880d681SAndroid Build Coastguard Worker //
3*9880d681SAndroid Build Coastguard Worker // The LLVM Compiler Infrastructure
4*9880d681SAndroid Build Coastguard Worker //
5*9880d681SAndroid Build Coastguard Worker // This file is distributed under the University of Illinois Open Source
6*9880d681SAndroid Build Coastguard Worker // License. See LICENSE.TXT for details.
7*9880d681SAndroid Build Coastguard Worker //
8*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===//
9*9880d681SAndroid Build Coastguard Worker
10*9880d681SAndroid Build Coastguard Worker #include "gtest/gtest.h"
11*9880d681SAndroid Build Coastguard Worker #include "llvm/ADT/MapVector.h"
12*9880d681SAndroid Build Coastguard Worker #include "llvm/ADT/iterator_range.h"
13*9880d681SAndroid Build Coastguard Worker #include <utility>
14*9880d681SAndroid Build Coastguard Worker
15*9880d681SAndroid Build Coastguard Worker using namespace llvm;
16*9880d681SAndroid Build Coastguard Worker
TEST(MapVectorTest,swap)17*9880d681SAndroid Build Coastguard Worker TEST(MapVectorTest, swap) {
18*9880d681SAndroid Build Coastguard Worker MapVector<int, int> MV1, MV2;
19*9880d681SAndroid Build Coastguard Worker std::pair<MapVector<int, int>::iterator, bool> R;
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard Worker R = MV1.insert(std::make_pair(1, 2));
22*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(R.first, MV1.begin());
23*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(R.first->first, 1);
24*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(R.first->second, 2);
25*9880d681SAndroid Build Coastguard Worker EXPECT_TRUE(R.second);
26*9880d681SAndroid Build Coastguard Worker
27*9880d681SAndroid Build Coastguard Worker EXPECT_FALSE(MV1.empty());
28*9880d681SAndroid Build Coastguard Worker EXPECT_TRUE(MV2.empty());
29*9880d681SAndroid Build Coastguard Worker MV2.swap(MV1);
30*9880d681SAndroid Build Coastguard Worker EXPECT_TRUE(MV1.empty());
31*9880d681SAndroid Build Coastguard Worker EXPECT_FALSE(MV2.empty());
32*9880d681SAndroid Build Coastguard Worker
33*9880d681SAndroid Build Coastguard Worker auto I = MV1.find(1);
34*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV1.end(), I);
35*9880d681SAndroid Build Coastguard Worker
36*9880d681SAndroid Build Coastguard Worker I = MV2.find(1);
37*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(I, MV2.begin());
38*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(I->first, 1);
39*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(I->second, 2);
40*9880d681SAndroid Build Coastguard Worker }
41*9880d681SAndroid Build Coastguard Worker
TEST(MapVectorTest,insert_pop)42*9880d681SAndroid Build Coastguard Worker TEST(MapVectorTest, insert_pop) {
43*9880d681SAndroid Build Coastguard Worker MapVector<int, int> MV;
44*9880d681SAndroid Build Coastguard Worker std::pair<MapVector<int, int>::iterator, bool> R;
45*9880d681SAndroid Build Coastguard Worker
46*9880d681SAndroid Build Coastguard Worker R = MV.insert(std::make_pair(1, 2));
47*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(R.first, MV.begin());
48*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(R.first->first, 1);
49*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(R.first->second, 2);
50*9880d681SAndroid Build Coastguard Worker EXPECT_TRUE(R.second);
51*9880d681SAndroid Build Coastguard Worker
52*9880d681SAndroid Build Coastguard Worker R = MV.insert(std::make_pair(1, 3));
53*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(R.first, MV.begin());
54*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(R.first->first, 1);
55*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(R.first->second, 2);
56*9880d681SAndroid Build Coastguard Worker EXPECT_FALSE(R.second);
57*9880d681SAndroid Build Coastguard Worker
58*9880d681SAndroid Build Coastguard Worker R = MV.insert(std::make_pair(4, 5));
59*9880d681SAndroid Build Coastguard Worker ASSERT_NE(R.first, MV.end());
60*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(R.first->first, 4);
61*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(R.first->second, 5);
62*9880d681SAndroid Build Coastguard Worker EXPECT_TRUE(R.second);
63*9880d681SAndroid Build Coastguard Worker
64*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(MV.size(), 2u);
65*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(MV[1], 2);
66*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(MV[4], 5);
67*9880d681SAndroid Build Coastguard Worker
68*9880d681SAndroid Build Coastguard Worker MV.pop_back();
69*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(MV.size(), 1u);
70*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(MV[1], 2);
71*9880d681SAndroid Build Coastguard Worker
72*9880d681SAndroid Build Coastguard Worker R = MV.insert(std::make_pair(4, 7));
73*9880d681SAndroid Build Coastguard Worker ASSERT_NE(R.first, MV.end());
74*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(R.first->first, 4);
75*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(R.first->second, 7);
76*9880d681SAndroid Build Coastguard Worker EXPECT_TRUE(R.second);
77*9880d681SAndroid Build Coastguard Worker
78*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(MV.size(), 2u);
79*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(MV[1], 2);
80*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(MV[4], 7);
81*9880d681SAndroid Build Coastguard Worker }
82*9880d681SAndroid Build Coastguard Worker
TEST(MapVectorTest,erase)83*9880d681SAndroid Build Coastguard Worker TEST(MapVectorTest, erase) {
84*9880d681SAndroid Build Coastguard Worker MapVector<int, int> MV;
85*9880d681SAndroid Build Coastguard Worker
86*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(1, 2));
87*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(3, 4));
88*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(5, 6));
89*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.size(), 3u);
90*9880d681SAndroid Build Coastguard Worker
91*9880d681SAndroid Build Coastguard Worker MV.erase(MV.find(1));
92*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.size(), 2u);
93*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.find(1), MV.end());
94*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV[3], 4);
95*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV[5], 6);
96*9880d681SAndroid Build Coastguard Worker
97*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.erase(3), 1u);
98*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.size(), 1u);
99*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.find(3), MV.end());
100*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV[5], 6);
101*9880d681SAndroid Build Coastguard Worker
102*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.erase(79), 0u);
103*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.size(), 1u);
104*9880d681SAndroid Build Coastguard Worker }
105*9880d681SAndroid Build Coastguard Worker
TEST(MapVectorTest,remove_if)106*9880d681SAndroid Build Coastguard Worker TEST(MapVectorTest, remove_if) {
107*9880d681SAndroid Build Coastguard Worker MapVector<int, int> MV;
108*9880d681SAndroid Build Coastguard Worker
109*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(1, 11));
110*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(2, 12));
111*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(3, 13));
112*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(4, 14));
113*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(5, 15));
114*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(6, 16));
115*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.size(), 6u);
116*9880d681SAndroid Build Coastguard Worker
117*9880d681SAndroid Build Coastguard Worker MV.remove_if([](const std::pair<int, int> &Val) { return Val.second % 2; });
118*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.size(), 3u);
119*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.find(1), MV.end());
120*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.find(3), MV.end());
121*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.find(5), MV.end());
122*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV[2], 12);
123*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV[4], 14);
124*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV[6], 16);
125*9880d681SAndroid Build Coastguard Worker }
126*9880d681SAndroid Build Coastguard Worker
TEST(MapVectorTest,iteration_test)127*9880d681SAndroid Build Coastguard Worker TEST(MapVectorTest, iteration_test) {
128*9880d681SAndroid Build Coastguard Worker MapVector<int, int> MV;
129*9880d681SAndroid Build Coastguard Worker
130*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(1, 11));
131*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(2, 12));
132*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(3, 13));
133*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(4, 14));
134*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(5, 15));
135*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(6, 16));
136*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.size(), 6u);
137*9880d681SAndroid Build Coastguard Worker
138*9880d681SAndroid Build Coastguard Worker int count = 1;
139*9880d681SAndroid Build Coastguard Worker for (auto P : make_range(MV.begin(), MV.end())) {
140*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(P.first, count);
141*9880d681SAndroid Build Coastguard Worker count++;
142*9880d681SAndroid Build Coastguard Worker }
143*9880d681SAndroid Build Coastguard Worker
144*9880d681SAndroid Build Coastguard Worker count = 6;
145*9880d681SAndroid Build Coastguard Worker for (auto P : make_range(MV.rbegin(), MV.rend())) {
146*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(P.first, count);
147*9880d681SAndroid Build Coastguard Worker count--;
148*9880d681SAndroid Build Coastguard Worker }
149*9880d681SAndroid Build Coastguard Worker }
150*9880d681SAndroid Build Coastguard Worker
TEST(SmallMapVectorSmallTest,insert_pop)151*9880d681SAndroid Build Coastguard Worker TEST(SmallMapVectorSmallTest, insert_pop) {
152*9880d681SAndroid Build Coastguard Worker SmallMapVector<int, int, 32> MV;
153*9880d681SAndroid Build Coastguard Worker std::pair<SmallMapVector<int, int, 32>::iterator, bool> R;
154*9880d681SAndroid Build Coastguard Worker
155*9880d681SAndroid Build Coastguard Worker R = MV.insert(std::make_pair(1, 2));
156*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(R.first, MV.begin());
157*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(R.first->first, 1);
158*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(R.first->second, 2);
159*9880d681SAndroid Build Coastguard Worker EXPECT_TRUE(R.second);
160*9880d681SAndroid Build Coastguard Worker
161*9880d681SAndroid Build Coastguard Worker R = MV.insert(std::make_pair(1, 3));
162*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(R.first, MV.begin());
163*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(R.first->first, 1);
164*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(R.first->second, 2);
165*9880d681SAndroid Build Coastguard Worker EXPECT_FALSE(R.second);
166*9880d681SAndroid Build Coastguard Worker
167*9880d681SAndroid Build Coastguard Worker R = MV.insert(std::make_pair(4, 5));
168*9880d681SAndroid Build Coastguard Worker ASSERT_NE(R.first, MV.end());
169*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(R.first->first, 4);
170*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(R.first->second, 5);
171*9880d681SAndroid Build Coastguard Worker EXPECT_TRUE(R.second);
172*9880d681SAndroid Build Coastguard Worker
173*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(MV.size(), 2u);
174*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(MV[1], 2);
175*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(MV[4], 5);
176*9880d681SAndroid Build Coastguard Worker
177*9880d681SAndroid Build Coastguard Worker MV.pop_back();
178*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(MV.size(), 1u);
179*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(MV[1], 2);
180*9880d681SAndroid Build Coastguard Worker
181*9880d681SAndroid Build Coastguard Worker R = MV.insert(std::make_pair(4, 7));
182*9880d681SAndroid Build Coastguard Worker ASSERT_NE(R.first, MV.end());
183*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(R.first->first, 4);
184*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(R.first->second, 7);
185*9880d681SAndroid Build Coastguard Worker EXPECT_TRUE(R.second);
186*9880d681SAndroid Build Coastguard Worker
187*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(MV.size(), 2u);
188*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(MV[1], 2);
189*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(MV[4], 7);
190*9880d681SAndroid Build Coastguard Worker }
191*9880d681SAndroid Build Coastguard Worker
TEST(SmallMapVectorSmallTest,erase)192*9880d681SAndroid Build Coastguard Worker TEST(SmallMapVectorSmallTest, erase) {
193*9880d681SAndroid Build Coastguard Worker SmallMapVector<int, int, 32> MV;
194*9880d681SAndroid Build Coastguard Worker
195*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(1, 2));
196*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(3, 4));
197*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(5, 6));
198*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.size(), 3u);
199*9880d681SAndroid Build Coastguard Worker
200*9880d681SAndroid Build Coastguard Worker MV.erase(MV.find(1));
201*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.size(), 2u);
202*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.find(1), MV.end());
203*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV[3], 4);
204*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV[5], 6);
205*9880d681SAndroid Build Coastguard Worker
206*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.erase(3), 1u);
207*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.size(), 1u);
208*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.find(3), MV.end());
209*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV[5], 6);
210*9880d681SAndroid Build Coastguard Worker
211*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.erase(79), 0u);
212*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.size(), 1u);
213*9880d681SAndroid Build Coastguard Worker }
214*9880d681SAndroid Build Coastguard Worker
TEST(SmallMapVectorSmallTest,remove_if)215*9880d681SAndroid Build Coastguard Worker TEST(SmallMapVectorSmallTest, remove_if) {
216*9880d681SAndroid Build Coastguard Worker SmallMapVector<int, int, 32> MV;
217*9880d681SAndroid Build Coastguard Worker
218*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(1, 11));
219*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(2, 12));
220*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(3, 13));
221*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(4, 14));
222*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(5, 15));
223*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(6, 16));
224*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.size(), 6u);
225*9880d681SAndroid Build Coastguard Worker
226*9880d681SAndroid Build Coastguard Worker MV.remove_if([](const std::pair<int, int> &Val) { return Val.second % 2; });
227*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.size(), 3u);
228*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.find(1), MV.end());
229*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.find(3), MV.end());
230*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.find(5), MV.end());
231*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV[2], 12);
232*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV[4], 14);
233*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV[6], 16);
234*9880d681SAndroid Build Coastguard Worker }
235*9880d681SAndroid Build Coastguard Worker
TEST(SmallMapVectorSmallTest,iteration_test)236*9880d681SAndroid Build Coastguard Worker TEST(SmallMapVectorSmallTest, iteration_test) {
237*9880d681SAndroid Build Coastguard Worker SmallMapVector<int, int, 32> MV;
238*9880d681SAndroid Build Coastguard Worker
239*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(1, 11));
240*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(2, 12));
241*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(3, 13));
242*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(4, 14));
243*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(5, 15));
244*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(6, 16));
245*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.size(), 6u);
246*9880d681SAndroid Build Coastguard Worker
247*9880d681SAndroid Build Coastguard Worker int count = 1;
248*9880d681SAndroid Build Coastguard Worker for (auto P : make_range(MV.begin(), MV.end())) {
249*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(P.first, count);
250*9880d681SAndroid Build Coastguard Worker count++;
251*9880d681SAndroid Build Coastguard Worker }
252*9880d681SAndroid Build Coastguard Worker
253*9880d681SAndroid Build Coastguard Worker count = 6;
254*9880d681SAndroid Build Coastguard Worker for (auto P : make_range(MV.rbegin(), MV.rend())) {
255*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(P.first, count);
256*9880d681SAndroid Build Coastguard Worker count--;
257*9880d681SAndroid Build Coastguard Worker }
258*9880d681SAndroid Build Coastguard Worker }
259*9880d681SAndroid Build Coastguard Worker
TEST(SmallMapVectorLargeTest,insert_pop)260*9880d681SAndroid Build Coastguard Worker TEST(SmallMapVectorLargeTest, insert_pop) {
261*9880d681SAndroid Build Coastguard Worker SmallMapVector<int, int, 1> MV;
262*9880d681SAndroid Build Coastguard Worker std::pair<SmallMapVector<int, int, 1>::iterator, bool> R;
263*9880d681SAndroid Build Coastguard Worker
264*9880d681SAndroid Build Coastguard Worker R = MV.insert(std::make_pair(1, 2));
265*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(R.first, MV.begin());
266*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(R.first->first, 1);
267*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(R.first->second, 2);
268*9880d681SAndroid Build Coastguard Worker EXPECT_TRUE(R.second);
269*9880d681SAndroid Build Coastguard Worker
270*9880d681SAndroid Build Coastguard Worker R = MV.insert(std::make_pair(1, 3));
271*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(R.first, MV.begin());
272*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(R.first->first, 1);
273*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(R.first->second, 2);
274*9880d681SAndroid Build Coastguard Worker EXPECT_FALSE(R.second);
275*9880d681SAndroid Build Coastguard Worker
276*9880d681SAndroid Build Coastguard Worker R = MV.insert(std::make_pair(4, 5));
277*9880d681SAndroid Build Coastguard Worker ASSERT_NE(R.first, MV.end());
278*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(R.first->first, 4);
279*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(R.first->second, 5);
280*9880d681SAndroid Build Coastguard Worker EXPECT_TRUE(R.second);
281*9880d681SAndroid Build Coastguard Worker
282*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(MV.size(), 2u);
283*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(MV[1], 2);
284*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(MV[4], 5);
285*9880d681SAndroid Build Coastguard Worker
286*9880d681SAndroid Build Coastguard Worker MV.pop_back();
287*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(MV.size(), 1u);
288*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(MV[1], 2);
289*9880d681SAndroid Build Coastguard Worker
290*9880d681SAndroid Build Coastguard Worker R = MV.insert(std::make_pair(4, 7));
291*9880d681SAndroid Build Coastguard Worker ASSERT_NE(R.first, MV.end());
292*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(R.first->first, 4);
293*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(R.first->second, 7);
294*9880d681SAndroid Build Coastguard Worker EXPECT_TRUE(R.second);
295*9880d681SAndroid Build Coastguard Worker
296*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(MV.size(), 2u);
297*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(MV[1], 2);
298*9880d681SAndroid Build Coastguard Worker EXPECT_EQ(MV[4], 7);
299*9880d681SAndroid Build Coastguard Worker }
300*9880d681SAndroid Build Coastguard Worker
TEST(SmallMapVectorLargeTest,erase)301*9880d681SAndroid Build Coastguard Worker TEST(SmallMapVectorLargeTest, erase) {
302*9880d681SAndroid Build Coastguard Worker SmallMapVector<int, int, 1> MV;
303*9880d681SAndroid Build Coastguard Worker
304*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(1, 2));
305*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(3, 4));
306*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(5, 6));
307*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.size(), 3u);
308*9880d681SAndroid Build Coastguard Worker
309*9880d681SAndroid Build Coastguard Worker MV.erase(MV.find(1));
310*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.size(), 2u);
311*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.find(1), MV.end());
312*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV[3], 4);
313*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV[5], 6);
314*9880d681SAndroid Build Coastguard Worker
315*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.erase(3), 1u);
316*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.size(), 1u);
317*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.find(3), MV.end());
318*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV[5], 6);
319*9880d681SAndroid Build Coastguard Worker
320*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.erase(79), 0u);
321*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.size(), 1u);
322*9880d681SAndroid Build Coastguard Worker }
323*9880d681SAndroid Build Coastguard Worker
TEST(SmallMapVectorLargeTest,remove_if)324*9880d681SAndroid Build Coastguard Worker TEST(SmallMapVectorLargeTest, remove_if) {
325*9880d681SAndroid Build Coastguard Worker SmallMapVector<int, int, 1> MV;
326*9880d681SAndroid Build Coastguard Worker
327*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(1, 11));
328*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(2, 12));
329*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(3, 13));
330*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(4, 14));
331*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(5, 15));
332*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(6, 16));
333*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.size(), 6u);
334*9880d681SAndroid Build Coastguard Worker
335*9880d681SAndroid Build Coastguard Worker MV.remove_if([](const std::pair<int, int> &Val) { return Val.second % 2; });
336*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.size(), 3u);
337*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.find(1), MV.end());
338*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.find(3), MV.end());
339*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.find(5), MV.end());
340*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV[2], 12);
341*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV[4], 14);
342*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV[6], 16);
343*9880d681SAndroid Build Coastguard Worker }
344*9880d681SAndroid Build Coastguard Worker
TEST(SmallMapVectorLargeTest,iteration_test)345*9880d681SAndroid Build Coastguard Worker TEST(SmallMapVectorLargeTest, iteration_test) {
346*9880d681SAndroid Build Coastguard Worker SmallMapVector<int, int, 1> MV;
347*9880d681SAndroid Build Coastguard Worker
348*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(1, 11));
349*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(2, 12));
350*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(3, 13));
351*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(4, 14));
352*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(5, 15));
353*9880d681SAndroid Build Coastguard Worker MV.insert(std::make_pair(6, 16));
354*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(MV.size(), 6u);
355*9880d681SAndroid Build Coastguard Worker
356*9880d681SAndroid Build Coastguard Worker int count = 1;
357*9880d681SAndroid Build Coastguard Worker for (auto P : make_range(MV.begin(), MV.end())) {
358*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(P.first, count);
359*9880d681SAndroid Build Coastguard Worker count++;
360*9880d681SAndroid Build Coastguard Worker }
361*9880d681SAndroid Build Coastguard Worker
362*9880d681SAndroid Build Coastguard Worker count = 6;
363*9880d681SAndroid Build Coastguard Worker for (auto P : make_range(MV.rbegin(), MV.rend())) {
364*9880d681SAndroid Build Coastguard Worker ASSERT_EQ(P.first, count);
365*9880d681SAndroid Build Coastguard Worker count--;
366*9880d681SAndroid Build Coastguard Worker }
367*9880d681SAndroid Build Coastguard Worker }
368