Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1910)

Unified Diff: cc/base/list_container_unittest.cc

Issue 1199343004: Add ListContainer::swap (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Refactor test for clarity Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/base/list_container.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/base/list_container_unittest.cc
diff --git a/cc/base/list_container_unittest.cc b/cc/base/list_container_unittest.cc
index 2c56e85edde2dcdc98db94f9f45f87568147835c..536a55e27f90798e075720c42e14bc6f2b22b174 100644
--- a/cc/base/list_container_unittest.cc
+++ b/cc/base/list_container_unittest.cc
@@ -107,6 +107,14 @@ class SimpleDerivedElementConstructMagicNumberTwo
}
};
+class SimpleDerivedElementConstructMagicNumberThree
+ : public SimpleDerivedElement {
+ public:
+ SimpleDerivedElementConstructMagicNumberThree() {
+ set_value(kMagicNumberToUseForSimpleDerivedElementThree);
+ }
+};
+
class MockDerivedElement : public SimpleDerivedElementConstructMagicNumberOne {
public:
~MockDerivedElement() override { Destruct(); }
@@ -881,8 +889,7 @@ TEST(ListContainerTest, AppendByMovingReplacesSourceWithNewDerivedElement) {
// AppendByMoving replaces the source element with a new derived element so
// we do not expect sizes to shrink after AppendByMoving is called.
- EXPECT_EQ(2u,
- list_1.size()); // One direct allocation and one AppendByMoving.
+ EXPECT_EQ(2u, list_1.size()); // One direct allocation, one AppendByMoving.
EXPECT_EQ(1u, list_2.size()); // One AppendByMoving.
}
@@ -954,5 +961,40 @@ TEST(ListContainerTest, AppendByMovingLongAndSimpleDerivedElements) {
list.back()->get_value());
}
+TEST(ListContainerTest, Swap) {
+ ListContainer<SimpleDerivedElement> list_1(kCurrentLargestDerivedElementSize);
+ list_1.AllocateAndConstruct<SimpleDerivedElementConstructMagicNumberOne>();
+ ListContainer<SimpleDerivedElement> list_2(kCurrentLargestDerivedElementSize);
+ list_2.AllocateAndConstruct<SimpleDerivedElementConstructMagicNumberTwo>();
+ list_2.AllocateAndConstruct<SimpleDerivedElementConstructMagicNumberThree>();
+
+ SimpleDerivedElement* pre_swap_list_1_front = list_1.front();
+
+ EXPECT_EQ(kMagicNumberToUseForSimpleDerivedElementOne,
+ list_1.front()->get_value());
+ EXPECT_EQ(1u, list_1.size());
+
+ EXPECT_EQ(kMagicNumberToUseForSimpleDerivedElementTwo,
+ list_2.front()->get_value());
+ EXPECT_EQ(kMagicNumberToUseForSimpleDerivedElementThree,
+ list_2.back()->get_value());
+ EXPECT_EQ(2u, list_2.size());
+
+ list_2.swap(list_1);
+
+ EXPECT_EQ(kMagicNumberToUseForSimpleDerivedElementTwo,
+ list_1.front()->get_value());
+ EXPECT_EQ(kMagicNumberToUseForSimpleDerivedElementThree,
+ list_1.back()->get_value());
+ EXPECT_EQ(2u, list_1.size());
+
+ EXPECT_EQ(kMagicNumberToUseForSimpleDerivedElementOne,
+ list_2.front()->get_value());
+ EXPECT_EQ(1u, list_2.size());
+
+ // Ensure pointers are still valid after swapping.
+ EXPECT_EQ(pre_swap_list_1_front, list_2.front());
+}
+
} // namespace
} // namespace cc
« no previous file with comments | « cc/base/list_container.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698