diff options
Diffstat (limited to 'unittests/ADT/MapVectorTest.cpp')
-rw-r--r-- | unittests/ADT/MapVectorTest.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/unittests/ADT/MapVectorTest.cpp b/unittests/ADT/MapVectorTest.cpp index bd6602b030f6..16e9b5a74f42 100644 --- a/unittests/ADT/MapVectorTest.cpp +++ b/unittests/ADT/MapVectorTest.cpp @@ -157,6 +157,45 @@ TEST(MapVectorTest, NonCopyable) { ASSERT_EQ(*MV.find(2)->second, 2); } +template <class IntType> struct MapVectorMappedTypeTest : ::testing::Test { + using int_type = IntType; +}; + +using MapIntTypes = ::testing::Types<int, long, long long, unsigned, + unsigned long, unsigned long long>; +TYPED_TEST_CASE(MapVectorMappedTypeTest, MapIntTypes); + +TYPED_TEST(MapVectorMappedTypeTest, DifferentDenseMap) { + // Test that using a map with a mapped type other than 'unsigned' compiles + // and works. + using IntType = typename TestFixture::int_type; + using MapVectorType = MapVector<int, int, DenseMap<int, IntType>>; + + MapVectorType MV; + std::pair<typename MapVectorType::iterator, bool> R; + + R = MV.insert(std::make_pair(1, 2)); + ASSERT_EQ(R.first, MV.begin()); + EXPECT_EQ(R.first->first, 1); + EXPECT_EQ(R.first->second, 2); + EXPECT_TRUE(R.second); + + const std::pair<int, int> Elem(1, 3); + R = MV.insert(Elem); + ASSERT_EQ(R.first, MV.begin()); + EXPECT_EQ(R.first->first, 1); + EXPECT_EQ(R.first->second, 2); + EXPECT_FALSE(R.second); + + int& value = MV[4]; + EXPECT_EQ(value, 0); + value = 5; + + EXPECT_EQ(MV.size(), 2u); + EXPECT_EQ(MV[1], 2); + EXPECT_EQ(MV[4], 5); +} + TEST(SmallMapVectorSmallTest, insert_pop) { SmallMapVector<int, int, 32> MV; std::pair<SmallMapVector<int, int, 32>::iterator, bool> R; |