dd84e7ebd13fbdad5fff66b07c062597b4f2b16b
[oota-llvm.git] / unittests / ADT / MapVectorTest.cpp
1 //===- unittest/ADT/MapVectorTest.cpp - MapVector unit tests ----*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 #include "gtest/gtest.h"
11 #include "llvm/ADT/MapVector.h"
12 #include <utility>
13
14 using namespace llvm;
15
16 TEST(MapVectorTest, insert_pop) {
17   MapVector<int, int> MV;
18   std::pair<MapVector<int, int>::iterator, bool> R;
19
20   R = MV.insert(std::make_pair(1, 2));
21   ASSERT_EQ(R.first, MV.begin());
22   EXPECT_EQ(R.first->first, 1);
23   EXPECT_EQ(R.first->second, 2);
24   EXPECT_TRUE(R.second);
25
26   R = MV.insert(std::make_pair(1, 3));
27   ASSERT_EQ(R.first, MV.begin());
28   EXPECT_EQ(R.first->first, 1);
29   EXPECT_EQ(R.first->second, 2);
30   EXPECT_FALSE(R.second);
31
32   R = MV.insert(std::make_pair(4, 5));
33   ASSERT_NE(R.first, MV.end());
34   EXPECT_EQ(R.first->first, 4);
35   EXPECT_EQ(R.first->second, 5);
36   EXPECT_TRUE(R.second);
37
38   EXPECT_EQ(MV.size(), 2u);
39   EXPECT_EQ(MV[1], 2);
40   EXPECT_EQ(MV[4], 5);
41
42   MV.pop_back();
43   EXPECT_EQ(MV.size(), 1u);
44   EXPECT_EQ(MV[1], 2);
45
46   R = MV.insert(std::make_pair(4, 7));
47   ASSERT_NE(R.first, MV.end());
48   EXPECT_EQ(R.first->first, 4);
49   EXPECT_EQ(R.first->second, 7);
50   EXPECT_TRUE(R.second);  
51
52   EXPECT_EQ(MV.size(), 2u);
53   EXPECT_EQ(MV[1], 2);
54   EXPECT_EQ(MV[4], 7);
55 }
56
57 TEST(MapVectorTest, erase) {
58   MapVector<int, int> MV;
59
60   MV.insert(std::make_pair(1, 2));
61   MV.insert(std::make_pair(3, 4));
62   MV.insert(std::make_pair(5, 6));
63   ASSERT_EQ(MV.size(), 3u);
64
65   MV.erase(MV.find(1));
66   ASSERT_EQ(MV.size(), 2u);
67   ASSERT_EQ(MV.find(1), MV.end());
68   ASSERT_EQ(MV[3], 4);
69   ASSERT_EQ(MV[5], 6);
70 }