16bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky//===- unittest/ADT/MapVectorTest.cpp - MapVector unit tests ----*- C++ -*-===//
26bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky//
36bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky//                     The LLVM Compiler Infrastructure
46bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky//
56bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky// This file is distributed under the University of Illinois Open Source
66bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky// License. See LICENSE.TXT for details.
76bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky//
86bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky//===----------------------------------------------------------------------===//
96bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky
106bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky#include "gtest/gtest.h"
116bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky#include "llvm/ADT/MapVector.h"
126bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky#include <utility>
136bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky
146bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewyckyusing namespace llvm;
156bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky
161f1713ff7a53c9c491c59886984f6a0534ce3630Douglas GregorTEST(MapVectorTest, insert_pop) {
176bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky  MapVector<int, int> MV;
186bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky  std::pair<MapVector<int, int>::iterator, bool> R;
196bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky
206bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky  R = MV.insert(std::make_pair(1, 2));
216bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky  ASSERT_EQ(R.first, MV.begin());
226bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky  EXPECT_EQ(R.first->first, 1);
236bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky  EXPECT_EQ(R.first->second, 2);
246bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky  EXPECT_TRUE(R.second);
256bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky
266bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky  R = MV.insert(std::make_pair(1, 3));
276bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky  ASSERT_EQ(R.first, MV.begin());
286bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky  EXPECT_EQ(R.first->first, 1);
296bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky  EXPECT_EQ(R.first->second, 2);
306bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky  EXPECT_FALSE(R.second);
316bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky
326bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky  R = MV.insert(std::make_pair(4, 5));
336bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky  ASSERT_NE(R.first, MV.end());
346bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky  EXPECT_EQ(R.first->first, 4);
356bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky  EXPECT_EQ(R.first->second, 5);
366bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky  EXPECT_TRUE(R.second);
376bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky
386bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky  EXPECT_EQ(MV.size(), 2u);
396bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky  EXPECT_EQ(MV[1], 2);
406bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky  EXPECT_EQ(MV[4], 5);
411f1713ff7a53c9c491c59886984f6a0534ce3630Douglas Gregor
421f1713ff7a53c9c491c59886984f6a0534ce3630Douglas Gregor  MV.pop_back();
431f1713ff7a53c9c491c59886984f6a0534ce3630Douglas Gregor  EXPECT_EQ(MV.size(), 1u);
441f1713ff7a53c9c491c59886984f6a0534ce3630Douglas Gregor  EXPECT_EQ(MV[1], 2);
451f1713ff7a53c9c491c59886984f6a0534ce3630Douglas Gregor
461f1713ff7a53c9c491c59886984f6a0534ce3630Douglas Gregor  R = MV.insert(std::make_pair(4, 7));
471f1713ff7a53c9c491c59886984f6a0534ce3630Douglas Gregor  ASSERT_NE(R.first, MV.end());
481f1713ff7a53c9c491c59886984f6a0534ce3630Douglas Gregor  EXPECT_EQ(R.first->first, 4);
491f1713ff7a53c9c491c59886984f6a0534ce3630Douglas Gregor  EXPECT_EQ(R.first->second, 7);
501f1713ff7a53c9c491c59886984f6a0534ce3630Douglas Gregor  EXPECT_TRUE(R.second);
511f1713ff7a53c9c491c59886984f6a0534ce3630Douglas Gregor
521f1713ff7a53c9c491c59886984f6a0534ce3630Douglas Gregor  EXPECT_EQ(MV.size(), 2u);
531f1713ff7a53c9c491c59886984f6a0534ce3630Douglas Gregor  EXPECT_EQ(MV[1], 2);
541f1713ff7a53c9c491c59886984f6a0534ce3630Douglas Gregor  EXPECT_EQ(MV[4], 7);
556bbf4ff9c545c881422da37494b1ccb9c18d9c6aNick Lewycky}
56