Creating a CompareFS_MATRIX util function
Created a CompareFS_MATRIX util function in the
testing/utils/compare_coordinates.cc and .h files.
Also tested it's working by running the FPDFEditEmbedderTest after
replacing all the instances of manual checks of matrix equality,
i.e. checking each of the fields individually, by a singular
function call.
Bug: 42270439
Change-Id: I7008afe7ddc6cbf152756f4c62764f1edde35990
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/125250
Reviewed-by: Lei Zhang <thestig@chromium.org>
Reviewed-by: Thomas Sepez <tsepez@google.com>
Commit-Queue: Thomas Sepez <tsepez@google.com>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/fpdfsdk/fpdf_edit_embeddertest.cpp b/fpdfsdk/fpdf_edit_embeddertest.cpp
index 95fc846..8cff133 100644
--- a/fpdfsdk/fpdf_edit_embeddertest.cpp
+++ b/fpdfsdk/fpdf_edit_embeddertest.cpp
@@ -38,6 +38,7 @@
#include "testing/fx_string_testhelpers.h"
#include "testing/gmock/include/gmock/gmock-matchers.h"
#include "testing/gtest/include/gtest/gtest.h"
+#include "testing/utils/compare_coordinates.h"
#include "testing/utils/file_util.h"
#include "testing/utils/hash.h"
#include "testing/utils/path_service.h"
@@ -197,8 +198,9 @@
EXPECT_TRUE(font_desc->KeyExist("StemV"));
ByteString present("FontFile");
ByteString absent("FontFile2");
- if (font_type == FPDF_FONT_TRUETYPE)
+ if (font_type == FPDF_FONT_TRUETYPE) {
std::swap(present, absent);
+ }
EXPECT_TRUE(font_desc->KeyExist(present));
EXPECT_FALSE(font_desc->KeyExist(absent));
@@ -213,8 +215,9 @@
}
pdfium::span<const uint8_t> stream_data = streamAcc->GetSpan();
- for (size_t j = 0; j < span.size(); j++)
+ for (size_t j = 0; j < span.size(); j++) {
EXPECT_EQ(span[j], stream_data[j]) << " at byte " << j;
+ }
}
void CheckCompositeFontWidths(const CPDF_Array* widths_array,
@@ -464,13 +467,9 @@
EXPECT_TRUE(FPDFPageObj_SetMatrix(red_rect, &kMatrix));
FS_MATRIX matrix;
+
EXPECT_TRUE(FPDFPageObj_GetMatrix(red_rect, &matrix));
- EXPECT_FLOAT_EQ(1.0f, matrix.a);
- EXPECT_FLOAT_EQ(2.0f, matrix.b);
- EXPECT_FLOAT_EQ(3.0f, matrix.c);
- EXPECT_FLOAT_EQ(4.0f, matrix.d);
- EXPECT_FLOAT_EQ(5.0f, matrix.e);
- EXPECT_FLOAT_EQ(6.0f, matrix.f);
+ CompareFS_MATRIX(kMatrix, matrix);
// Set back the identity matrix.
matrix = {1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f};
@@ -827,7 +826,6 @@
EXPECT_TRUE(FPDFPage_GenerateContent(page.get()));
EXPECT_TRUE(FPDF_SaveAsCopy(document(), this, 0));
-
// Re-open the file and check the changes were kept in the saved .pdf.
ASSERT_TRUE(OpenSavedDocument());
FPDF_PAGE saved_page = LoadSavedPage(0);
@@ -1707,7 +1705,6 @@
EXPECT_TRUE(FPDFPage_GenerateContent(page.get()));
EXPECT_TRUE(FPDF_SaveAsCopy(document(), this, 0));
-
ASSERT_TRUE(OpenSavedDocument());
FPDF_PAGE saved_page = LoadSavedPage(0);
ASSERT_TRUE(saved_page);
@@ -1738,7 +1735,6 @@
EXPECT_TRUE(FPDFPage_GenerateContent(page.get()));
EXPECT_TRUE(FPDF_SaveAsCopy(document(), this, 0));
-
ASSERT_TRUE(OpenSavedDocument());
FPDF_PAGE saved_page = LoadSavedPage(0);
ASSERT_TRUE(saved_page);
@@ -1889,12 +1885,13 @@
ASSERT_TRUE(page_object);
CPDF_PageObject* cpdf_page_object =
CPDFPageObjectFromFPDFPageObject(page_object);
- if (i < 15)
+ if (i < 15) {
EXPECT_EQ(0, cpdf_page_object->GetContentStream()) << i;
- else if (i < 18)
+ } else if (i < 18) {
EXPECT_EQ(1, cpdf_page_object->GetContentStream()) << i;
- else
+ } else {
EXPECT_EQ(2, cpdf_page_object->GetContentStream()) << i;
+ }
}
}
@@ -1932,10 +1929,11 @@
ASSERT_TRUE(page_object);
CPDF_PageObject* cpdf_page_object =
CPDFPageObjectFromFPDFPageObject(page_object);
- if (i < 15)
+ if (i < 15) {
EXPECT_EQ(0, cpdf_page_object->GetContentStream()) << i;
- else
+ } else {
EXPECT_EQ(2, cpdf_page_object->GetContentStream()) << i;
+ }
}
// Generate contents should remove the empty stream and update the page
@@ -1950,10 +1948,11 @@
ASSERT_TRUE(page_object);
CPDF_PageObject* cpdf_page_object =
CPDFPageObjectFromFPDFPageObject(page_object);
- if (i < 15)
+ if (i < 15) {
EXPECT_EQ(0, cpdf_page_object->GetContentStream()) << i;
- else
+ } else {
EXPECT_EQ(1, cpdf_page_object->GetContentStream()) << i;
+ }
}
const char* stream1_removed_checksum = []() {
@@ -1998,10 +1997,11 @@
ASSERT_TRUE(page_object);
CPDF_PageObject* cpdf_page_object =
CPDFPageObjectFromFPDFPageObject(page_object);
- if (i < 15)
+ if (i < 15) {
EXPECT_EQ(0, cpdf_page_object->GetContentStream()) << i;
- else
+ } else {
EXPECT_EQ(1, cpdf_page_object->GetContentStream()) << i;
+ }
}
{
@@ -2726,13 +2726,9 @@
}
FS_MATRIX matrix;
+
EXPECT_TRUE(FPDFPageObj_GetMatrix(text_object3, &matrix));
- EXPECT_FLOAT_EQ(1.0f, matrix.a);
- EXPECT_FLOAT_EQ(1.5f, matrix.b);
- EXPECT_FLOAT_EQ(2.0f, matrix.c);
- EXPECT_FLOAT_EQ(0.5f, matrix.d);
- EXPECT_FLOAT_EQ(200.0f, matrix.e);
- EXPECT_FLOAT_EQ(200.0f, matrix.f);
+ CompareFS_MATRIX({1.0f, 1.5f, 2.0f, 0.5f, 200.0f, 200.0f}, matrix);
EXPECT_FALSE(FPDFTextObj_GetFontSize(nullptr, nullptr));
float size = 55;
@@ -2854,7 +2850,6 @@
// Save a copy.
EXPECT_TRUE(FPDFPage_GenerateContent(page.get()));
EXPECT_TRUE(FPDF_SaveAsCopy(document(), this, 0));
-
}
{
@@ -3158,12 +3153,7 @@
FS_MATRIX matrix;
EXPECT_TRUE(FPDFPageObj_GetMatrix(form, &matrix));
- EXPECT_FLOAT_EQ(kMatrix.a, matrix.a);
- EXPECT_FLOAT_EQ(kMatrix.b, matrix.b);
- EXPECT_FLOAT_EQ(kMatrix.c, matrix.c);
- EXPECT_FLOAT_EQ(kMatrix.d, matrix.d);
- EXPECT_FLOAT_EQ(kMatrix.e, matrix.e);
- EXPECT_FLOAT_EQ(kMatrix.f, matrix.f);
+ CompareFS_MATRIX(kMatrix, matrix);
// FPDFPageObj_GetMatrix() negative testing for forms.
EXPECT_FALSE(FPDFPageObj_GetMatrix(form, nullptr));
@@ -4394,13 +4384,10 @@
// Check the matrix for |obj|.
FS_MATRIX matrix;
+
EXPECT_TRUE(FPDFPageObj_GetMatrix(obj, &matrix));
- EXPECT_FLOAT_EQ(53.0f, matrix.a);
- EXPECT_FLOAT_EQ(0.0f, matrix.b);
- EXPECT_FLOAT_EQ(0.0f, matrix.c);
- EXPECT_FLOAT_EQ(43.0f, matrix.d);
- EXPECT_FLOAT_EQ(72.0f, matrix.e);
- EXPECT_FLOAT_EQ(646.510009765625f, matrix.f);
+ CompareFS_MATRIX({53.0f, 0.0f, 0.0f, 43.0f, 72.0f, 646.510009765625f},
+ matrix);
// Modify the matrix for |obj|.
matrix.a = 120.0;
@@ -4408,12 +4395,8 @@
// Make sure the matrix modification took place.
EXPECT_TRUE(FPDFPageObj_GetMatrix(obj, &matrix));
- EXPECT_FLOAT_EQ(120.0f, matrix.a);
- EXPECT_FLOAT_EQ(0.0f, matrix.b);
- EXPECT_FLOAT_EQ(0.0f, matrix.c);
- EXPECT_FLOAT_EQ(43.0f, matrix.d);
- EXPECT_FLOAT_EQ(72.0f, matrix.e);
- EXPECT_FLOAT_EQ(646.510009765625f, matrix.f);
+ CompareFS_MATRIX({120.0f, 0.0f, 0.0f, 43.0f, 72.0f, 646.510009765625f},
+ matrix);
{
// Render |obj| again. Note that the FPDFPageObj_SetMatrix() call has no
@@ -4500,13 +4483,10 @@
// Check the matrix for `obj`.
FS_MATRIX matrix;
+
EXPECT_TRUE(FPDFPageObj_GetMatrix(obj, &matrix));
- EXPECT_FLOAT_EQ(53.0f, matrix.a);
- EXPECT_FLOAT_EQ(0.0f, matrix.b);
- EXPECT_FLOAT_EQ(0.0f, matrix.c);
- EXPECT_FLOAT_EQ(43.0f, matrix.d);
- EXPECT_FLOAT_EQ(72.0f, matrix.e);
- EXPECT_FLOAT_EQ(646.510009765625f, matrix.f);
+ CompareFS_MATRIX({53.0f, 0.0f, 0.0f, 43.0f, 72.0f, 646.510009765625f},
+ matrix);
// Modify the matrix for `obj`.
matrix.a = 120.0;
@@ -4514,12 +4494,8 @@
// Make sure the matrix modification took place.
EXPECT_TRUE(FPDFPageObj_GetMatrix(obj, &matrix));
- EXPECT_FLOAT_EQ(120.0f, matrix.a);
- EXPECT_FLOAT_EQ(0.0f, matrix.b);
- EXPECT_FLOAT_EQ(0.0f, matrix.c);
- EXPECT_FLOAT_EQ(43.0f, matrix.d);
- EXPECT_FLOAT_EQ(72.0f, matrix.e);
- EXPECT_FLOAT_EQ(646.510009765625f, matrix.f);
+ CompareFS_MATRIX({120.0f, 0.0f, 0.0f, 43.0f, 72.0f, 646.510009765625f},
+ matrix);
{
// Render `obj` again. Note that the FPDFPageObj_SetMatrix() call has an
@@ -4565,10 +4541,11 @@
FPDFImageObj_GetRenderedBitmap(document(), page.get(), obj));
ASSERT_TRUE(bitmap);
EXPECT_EQ(FPDFBitmap_BGRA, FPDFBitmap_GetFormat(bitmap.get()));
- if (i == 0)
+ if (i == 0) {
CompareBitmap(bitmap.get(), 40, 60, smask_checksum);
- else
+ } else {
CompareBitmap(bitmap.get(), 40, 60, no_smask_checksum);
+ }
}
}
@@ -4650,62 +4627,40 @@
obj = FPDFPage_GetObject(page.get(), 33);
ASSERT_EQ(FPDF_PAGEOBJ_IMAGE, FPDFPageObj_GetType(obj));
EXPECT_TRUE(FPDFPageObj_GetMatrix(obj, &matrix));
- EXPECT_FLOAT_EQ(53.0f, matrix.a);
- EXPECT_FLOAT_EQ(0.0f, matrix.b);
- EXPECT_FLOAT_EQ(0.0f, matrix.c);
- EXPECT_FLOAT_EQ(43.0f, matrix.d);
- EXPECT_FLOAT_EQ(72.0f, matrix.e);
- EXPECT_FLOAT_EQ(646.510009765625f, matrix.f);
+ CompareFS_MATRIX({53.0f, 0.0f, 0.0f, 43.0f, 72.0f, 646.510009765625f},
+ matrix);
obj = FPDFPage_GetObject(page.get(), 34);
ASSERT_EQ(FPDF_PAGEOBJ_IMAGE, FPDFPageObj_GetType(obj));
EXPECT_TRUE(FPDFPageObj_GetMatrix(obj, &matrix));
- EXPECT_FLOAT_EQ(70.0f, matrix.a);
- EXPECT_FLOAT_EQ(0.0f, matrix.b);
- EXPECT_FLOAT_EQ(0.0f, matrix.c);
- EXPECT_FLOAT_EQ(51.0f, matrix.d);
- EXPECT_FLOAT_EQ(216.0f, matrix.e);
- EXPECT_FLOAT_EQ(646.510009765625f, matrix.f);
+ CompareFS_MATRIX({70.0f, 0.0f, 0.0f, 51.0f, 216.0f, 646.510009765625f},
+ matrix);
obj = FPDFPage_GetObject(page.get(), 35);
ASSERT_EQ(FPDF_PAGEOBJ_IMAGE, FPDFPageObj_GetType(obj));
EXPECT_TRUE(FPDFPageObj_GetMatrix(obj, &matrix));
- EXPECT_FLOAT_EQ(69.0f, matrix.a);
- EXPECT_FLOAT_EQ(0.0f, matrix.b);
- EXPECT_FLOAT_EQ(0.0f, matrix.c);
- EXPECT_FLOAT_EQ(51.0f, matrix.d);
- EXPECT_FLOAT_EQ(360.0f, matrix.e);
- EXPECT_FLOAT_EQ(646.510009765625f, matrix.f);
+ CompareFS_MATRIX({69.0f, 0.0f, 0.0f, 51.0f, 360.0f, 646.510009765625f},
+ matrix);
obj = FPDFPage_GetObject(page.get(), 36);
ASSERT_EQ(FPDF_PAGEOBJ_IMAGE, FPDFPageObj_GetType(obj));
EXPECT_TRUE(FPDFPageObj_GetMatrix(obj, &matrix));
- EXPECT_FLOAT_EQ(59.0f, matrix.a);
- EXPECT_FLOAT_EQ(0.0f, matrix.b);
- EXPECT_FLOAT_EQ(0.0f, matrix.c);
- EXPECT_FLOAT_EQ(45.0f, matrix.d);
- EXPECT_FLOAT_EQ(72.0f, matrix.e);
- EXPECT_FLOAT_EQ(553.510009765625f, matrix.f);
+ CompareFS_MATRIX({59.0f, 0.0f, 0.0f, 45.0f, 72.0f, 553.510009765625f},
+ matrix);
obj = FPDFPage_GetObject(page.get(), 37);
ASSERT_EQ(FPDF_PAGEOBJ_IMAGE, FPDFPageObj_GetType(obj));
EXPECT_TRUE(FPDFPageObj_GetMatrix(obj, &matrix));
- EXPECT_FLOAT_EQ(55.94000244140625f, matrix.a);
- EXPECT_FLOAT_EQ(0.0f, matrix.b);
- EXPECT_FLOAT_EQ(0.0f, matrix.c);
- EXPECT_FLOAT_EQ(46.950000762939453f, matrix.d);
- EXPECT_FLOAT_EQ(216.0f, matrix.e);
- EXPECT_FLOAT_EQ(552.510009765625f, matrix.f);
+ CompareFS_MATRIX({55.94000244140625f, 0.0f, 0.0f, 46.950000762939453f, 216.0f,
+ 552.510009765625f},
+ matrix);
obj = FPDFPage_GetObject(page.get(), 38);
ASSERT_EQ(FPDF_PAGEOBJ_IMAGE, FPDFPageObj_GetType(obj));
EXPECT_TRUE(FPDFPageObj_GetMatrix(obj, &matrix));
- EXPECT_FLOAT_EQ(70.528999328613281f, matrix.a);
- EXPECT_FLOAT_EQ(0.0f, matrix.b);
- EXPECT_FLOAT_EQ(0.0f, matrix.c);
- EXPECT_FLOAT_EQ(43.149997711181641f, matrix.d);
- EXPECT_FLOAT_EQ(360.0f, matrix.e);
- EXPECT_FLOAT_EQ(553.3599853515625f, matrix.f);
+ CompareFS_MATRIX({70.528999328613281f, 0.0f, 0.0f, 43.149997711181641f,
+ 360.0f, 553.3599853515625f},
+ matrix);
}
TEST_F(FPDFEditEmbedderTest, DestroyPageObject) {
@@ -5219,13 +5174,9 @@
ASSERT_EQ(FPDF_PAGEOBJ_FORM, FPDFPageObj_GetType(form));
FS_MATRIX matrix;
+
ASSERT_TRUE(FPDFPageObj_GetMatrix(form, &matrix));
- EXPECT_FLOAT_EQ(2.0f, matrix.a);
- EXPECT_FLOAT_EQ(0.0f, matrix.b);
- EXPECT_FLOAT_EQ(0.0f, matrix.c);
- EXPECT_FLOAT_EQ(-1.0f, matrix.d);
- EXPECT_FLOAT_EQ(0.0f, matrix.e);
- EXPECT_FLOAT_EQ(200.0f, matrix.f);
+ CompareFS_MATRIX({2.0f, 0.0f, 0.0f, -1.0f, 0.0f, 200.0f}, matrix);
ASSERT_TRUE(FPDFPageObj_SetMatrix(form, &matrix));
{
@@ -5239,12 +5190,7 @@
ASSERT_EQ(FPDF_PAGEOBJ_TEXT, FPDFPageObj_GetType(text));
ASSERT_TRUE(FPDFPageObj_GetMatrix(text, &matrix));
- EXPECT_FLOAT_EQ(0.5f, matrix.a);
- EXPECT_FLOAT_EQ(0.0f, matrix.b);
- EXPECT_FLOAT_EQ(0.0f, matrix.c);
- EXPECT_FLOAT_EQ(-1.0f, matrix.d);
- EXPECT_FLOAT_EQ(10.0f, matrix.e);
- EXPECT_FLOAT_EQ(150.0f, matrix.f);
+ CompareFS_MATRIX({0.5f, 0.0f, 0.0f, -1.0f, 10.0f, 150.0f}, matrix);
ASSERT_TRUE(FPDFPageObj_SetMatrix(text, &matrix));
{
@@ -5262,7 +5208,6 @@
HelloWorldChecksum());
}
-
VerifySavedDocument(kExpectedWidth, kExpectedHeight, HelloWorldChecksum());
}
diff --git a/testing/utils/compare_coordinates.cc b/testing/utils/compare_coordinates.cc
index 096f868..ff11676 100644
--- a/testing/utils/compare_coordinates.cc
+++ b/testing/utils/compare_coordinates.cc
@@ -13,3 +13,12 @@
EXPECT_FLOAT_EQ(val1.right, val2.right);
EXPECT_FLOAT_EQ(val1.top, val2.top);
}
+
+void CompareFS_MATRIX(const FS_MATRIX& val1, const FS_MATRIX& val2) {
+ EXPECT_FLOAT_EQ(val1.a, val2.a);
+ EXPECT_FLOAT_EQ(val1.b, val2.b);
+ EXPECT_FLOAT_EQ(val1.c, val2.c);
+ EXPECT_FLOAT_EQ(val1.d, val2.d);
+ EXPECT_FLOAT_EQ(val1.e, val2.e);
+ EXPECT_FLOAT_EQ(val1.f, val2.f);
+}
diff --git a/testing/utils/compare_coordinates.h b/testing/utils/compare_coordinates.h
index 053a9b4..ae3931f 100644
--- a/testing/utils/compare_coordinates.h
+++ b/testing/utils/compare_coordinates.h
@@ -8,5 +8,6 @@
#include "public/fpdfview.h"
void CompareFS_RECTF(const FS_RECTF& val1, const FS_RECTF& val2);
+void CompareFS_MATRIX(const FS_MATRIX& val1, const FS_MATRIX& val2);
#endif // TESTING_UTILS_COMPARE_COORDINATES_H_