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_