Add more tests for TreeNode.
Test AppendFirstChild() and RemoveChild() some more.
Change-Id: I9cd26ba34aa3c3a70743b9934e024a61651c0b63
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/54571
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fxcrt/tree_node_unittest.cpp b/core/fxcrt/tree_node_unittest.cpp
index fe0ebca..26dd610 100644
--- a/core/fxcrt/tree_node_unittest.cpp
+++ b/core/fxcrt/tree_node_unittest.cpp
@@ -121,4 +121,44 @@
pParent->RemoveAllChildren();
}
+TEST(TreeNode, AppendFirstChild) {
+ auto parent = pdfium::MakeUnique<TestTreeNode>();
+ auto child0 = pdfium::MakeUnique<TestTreeNode>();
+ auto child1 = pdfium::MakeUnique<TestTreeNode>();
+ parent->AppendFirstChild(child0.get());
+ EXPECT_EQ(child0.get(), parent->GetFirstChild());
+ parent->AppendFirstChild(child1.get());
+ EXPECT_EQ(child1.get(), parent->GetFirstChild());
+ EXPECT_EQ(child1.get(), parent->GetNthChild(0));
+ EXPECT_EQ(child0.get(), parent->GetNthChild(1));
+}
+
+TEST(TreeNode, RemoveChild) {
+ auto parent = pdfium::MakeUnique<TestTreeNode>();
+ auto child0 = pdfium::MakeUnique<TestTreeNode>();
+ auto child1 = pdfium::MakeUnique<TestTreeNode>();
+
+ parent->AppendFirstChild(child0.get());
+ parent->AppendLastChild(child1.get());
+ EXPECT_EQ(child0.get(), parent->GetFirstChild());
+ EXPECT_EQ(child1.get(), parent->GetLastChild());
+ parent->RemoveChild(child0.get());
+ EXPECT_EQ(child1.get(), parent->GetFirstChild());
+ EXPECT_EQ(child1.get(), parent->GetLastChild());
+ parent->RemoveChild(child1.get());
+ EXPECT_EQ(nullptr, parent->GetFirstChild());
+ EXPECT_EQ(nullptr, parent->GetLastChild());
+
+ parent->AppendFirstChild(child0.get());
+ parent->AppendLastChild(child1.get());
+ EXPECT_EQ(child0.get(), parent->GetFirstChild());
+ EXPECT_EQ(child1.get(), parent->GetLastChild());
+ parent->RemoveChild(child1.get());
+ EXPECT_EQ(child0.get(), parent->GetFirstChild());
+ EXPECT_EQ(child0.get(), parent->GetLastChild());
+ parent->RemoveChild(child0.get());
+ EXPECT_EQ(nullptr, parent->GetFirstChild());
+ EXPECT_EQ(nullptr, parent->GetLastChild());
+}
+
} // namespace fxcrt