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