Add more test cases for CFX_PathData.
Add tests for corner cases not covered by any other tests to bring code
coverage closer to 100%.
Change-Id: I8e5644883a2f39926337f5bb4b4fc6c9101791d4
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/80941
Reviewed-by: Hui Yingst <nigi@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fxge/cfx_pathdata_unittest.cpp b/core/fxge/cfx_pathdata_unittest.cpp
index 842bf6c..c7cf3ce 100644
--- a/core/fxge/cfx_pathdata_unittest.cpp
+++ b/core/fxge/cfx_pathdata_unittest.cpp
@@ -317,6 +317,19 @@
rect = path.GetRect(nullptr);
EXPECT_FALSE(rect.has_value());
EXPECT_EQ(CFX_FloatRect(0, 0, 2, 1), path.GetBoundingBox());
+
+ path.Clear();
+ path.AppendPoint({0, 0}, FXPT_TYPE::MoveTo);
+ path.AppendPoint({2, 0}, FXPT_TYPE::LineTo);
+ path.AppendPoint({2, 1}, FXPT_TYPE::LineTo);
+ path.AppendPoint({2, 2}, FXPT_TYPE::LineTo);
+ EXPECT_FALSE(path.IsRect());
+ rect = path.GetRect(nullptr);
+ EXPECT_FALSE(rect.has_value());
+ const CFX_Matrix kScaleMatrix(1, 0, 0, 2, 60, 70);
+ rect = path.GetRect(&kScaleMatrix);
+ EXPECT_FALSE(rect.has_value());
+ EXPECT_EQ(CFX_FloatRect(0, 0, 2, 2), path.GetBoundingBox());
}
TEST(CFX_PathData, EmptyRect) {
@@ -333,3 +346,28 @@
EXPECT_EQ(CFX_FloatRect(0, 0, 0, 1), rect.value());
EXPECT_EQ(CFX_FloatRect(0, 0, 0, 1), path.GetBoundingBox());
}
+
+TEST(CFX_PathData, Append) {
+ CFX_PathData path;
+ path.AppendPoint({5, 6}, FXPT_TYPE::MoveTo);
+ ASSERT_EQ(1u, path.GetPoints().size());
+ EXPECT_EQ(CFX_PointF(5, 6), path.GetPoint(0));
+
+ CFX_PathData empty_path;
+ path.Append(empty_path, nullptr);
+ ASSERT_EQ(1u, path.GetPoints().size());
+ EXPECT_EQ(CFX_PointF(5, 6), path.GetPoint(0));
+
+ path.Append(path, nullptr);
+ ASSERT_EQ(2u, path.GetPoints().size());
+ EXPECT_EQ(CFX_PointF(5, 6), path.GetPoint(0));
+ EXPECT_EQ(CFX_PointF(5, 6), path.GetPoint(1));
+
+ const CFX_Matrix kScaleMatrix(1, 0, 0, 2, 60, 70);
+ path.Append(path, &kScaleMatrix);
+ ASSERT_EQ(4u, path.GetPoints().size());
+ EXPECT_EQ(CFX_PointF(5, 6), path.GetPoint(0));
+ EXPECT_EQ(CFX_PointF(5, 6), path.GetPoint(1));
+ EXPECT_EQ(CFX_PointF(65, 82), path.GetPoint(2));
+ EXPECT_EQ(CFX_PointF(65, 82), path.GetPoint(3));
+}