Index: third_party/WebKit/Source/wtf/HashMapTest.cpp |
diff --git a/third_party/WebKit/Source/wtf/HashMapTest.cpp b/third_party/WebKit/Source/wtf/HashMapTest.cpp |
index 25207ff7afd2e2f2ab0100351813f1891662da6a..f8b97ed0214f7085949dcfd1d696008d01b9a8f7 100644 |
--- a/third_party/WebKit/Source/wtf/HashMapTest.cpp |
+++ b/third_party/WebKit/Source/wtf/HashMapTest.cpp |
@@ -608,6 +608,67 @@ TEST(HashMapTest, UniquePtrAsValue) |
} |
} |
+TEST(HashMapTest, MoveOnlyPairKeyType) |
+{ |
+ using Pair = std::pair<MoveOnly, int>; |
+ using TheMap = HashMap<Pair, int>; |
+ TheMap map; |
+ { |
+ TheMap::AddResult addResult = map.add(Pair(MoveOnly(1), -1), 10); |
+ EXPECT_TRUE(addResult.isNewEntry); |
+ EXPECT_EQ(1, addResult.storedValue->key.first.value()); |
+ EXPECT_EQ(-1, addResult.storedValue->key.second); |
+ EXPECT_EQ(10, addResult.storedValue->value); |
+ } |
+ auto iter = map.find(Pair(MoveOnly(1), -1)); |
+ ASSERT_TRUE(iter != map.end()); |
+ EXPECT_EQ(1, iter->key.first.value()); |
+ EXPECT_EQ(-1, iter->key.second); |
+ EXPECT_EQ(10, iter->value); |
+ |
+ iter = map.find(Pair(MoveOnly(1), 0)); |
+ EXPECT_TRUE(iter == map.end()); |
+ |
+ for (int i = 2; i < 32; ++i) { |
+ TheMap::AddResult addResult = map.add(Pair(MoveOnly(i), -i), i * 10); |
+ EXPECT_TRUE(addResult.isNewEntry); |
+ EXPECT_EQ(i, addResult.storedValue->key.first.value()); |
+ EXPECT_EQ(-i, addResult.storedValue->key.second); |
+ EXPECT_EQ(i * 10, addResult.storedValue->value); |
+ } |
+ |
+ iter = map.find(Pair(MoveOnly(1), -1)); |
+ ASSERT_TRUE(iter != map.end()); |
+ EXPECT_EQ(1, iter->key.first.value()); |
+ EXPECT_EQ(-1, iter->key.second); |
+ EXPECT_EQ(10, iter->value); |
+ |
+ iter = map.find(Pair(MoveOnly(7), -7)); |
+ ASSERT_TRUE(iter != map.end()); |
+ EXPECT_EQ(7, iter->key.first.value()); |
+ EXPECT_EQ(-7, iter->key.second); |
+ EXPECT_EQ(70, iter->value); |
+ |
+ { |
+ TheMap::AddResult addResult = map.set(Pair(MoveOnly(9), -9), 999); |
+ EXPECT_FALSE(addResult.isNewEntry); |
+ EXPECT_EQ(9, addResult.storedValue->key.first.value()); |
+ EXPECT_EQ(-9, addResult.storedValue->key.second); |
+ EXPECT_EQ(999, addResult.storedValue->value); |
+ } |
+ |
+ map.remove(Pair(MoveOnly(11), -11)); |
+ iter = map.find(Pair(MoveOnly(11), -11)); |
+ EXPECT_TRUE(iter == map.end()); |
+ |
+ int oneThirty = map.take(Pair(MoveOnly(13), -13)); |
+ EXPECT_EQ(130, oneThirty); |
+ iter = map.find(Pair(MoveOnly(13), -13)); |
+ EXPECT_TRUE(iter == map.end()); |
+ |
+ map.clear(); |
+} |
+ |
} // anonymous namespace |
} // namespace WTF |