Add TestWithPageModule support class.
Consolidate test classes that call CPDF_PageModule::Create() and
Destroy().
Change-Id: I779a4ec7dae11f48ef77ca2e2cd09e8dd3b32981
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/90991
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/edit/BUILD.gn b/core/fpdfapi/edit/BUILD.gn
index 4361352..f0d42c8 100644
--- a/core/fpdfapi/edit/BUILD.gn
+++ b/core/fpdfapi/edit/BUILD.gn
@@ -37,6 +37,7 @@
"../../fxge",
"../font",
"../page",
+ "../page:unit_test_support",
"../parser",
"../parser:unit_test_support",
"../render",
diff --git a/core/fpdfapi/edit/cpdf_pagecontentgenerator_unittest.cpp b/core/fpdfapi/edit/cpdf_pagecontentgenerator_unittest.cpp
index ed95590..c34138d 100644
--- a/core/fpdfapi/edit/cpdf_pagecontentgenerator_unittest.cpp
+++ b/core/fpdfapi/edit/cpdf_pagecontentgenerator_unittest.cpp
@@ -12,10 +12,10 @@
#include "core/fpdfapi/page/cpdf_docpagedata.h"
#include "core/fpdfapi/page/cpdf_form.h"
#include "core/fpdfapi/page/cpdf_page.h"
-#include "core/fpdfapi/page/cpdf_pagemodule.h"
#include "core/fpdfapi/page/cpdf_pathobject.h"
#include "core/fpdfapi/page/cpdf_textobject.h"
#include "core/fpdfapi/page/cpdf_textstate.h"
+#include "core/fpdfapi/page/test_with_page_module.h"
#include "core/fpdfapi/parser/cpdf_dictionary.h"
#include "core/fpdfapi/parser/cpdf_document.h"
#include "core/fpdfapi/parser/cpdf_name.h"
@@ -28,11 +28,8 @@
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/base/cxx17_backports.h"
-class CPDF_PageContentGeneratorTest : public testing::Test {
+class CPDF_PageContentGeneratorTest : public TestWithPageModule {
protected:
- void SetUp() override { CPDF_PageModule::Create(); }
- void TearDown() override { CPDF_PageModule::Destroy(); }
-
void TestProcessPath(CPDF_PageContentGenerator* pGen,
fxcrt::ostringstream* buf,
CPDF_PathObject* pPathObj) {
diff --git a/core/fpdfapi/font/BUILD.gn b/core/fpdfapi/font/BUILD.gn
index 71522a8..39f2ffa 100644
--- a/core/fpdfapi/font/BUILD.gn
+++ b/core/fpdfapi/font/BUILD.gn
@@ -64,7 +64,7 @@
]
deps = [
":font",
- "../page",
+ "../page:unit_test_support",
"../parser",
"../parser:unit_test_support",
"../render",
diff --git a/core/fpdfapi/font/cpdf_cidfont_unittest.cpp b/core/fpdfapi/font/cpdf_cidfont_unittest.cpp
index a9405fb..9287780 100644
--- a/core/fpdfapi/font/cpdf_cidfont_unittest.cpp
+++ b/core/fpdfapi/font/cpdf_cidfont_unittest.cpp
@@ -6,7 +6,7 @@
#include <utility>
-#include "core/fpdfapi/page/cpdf_pagemodule.h"
+#include "core/fpdfapi/page/test_with_page_module.h"
#include "core/fpdfapi/parser/cpdf_array.h"
#include "core/fpdfapi/parser/cpdf_dictionary.h"
#include "core/fpdfapi/parser/cpdf_document.h"
@@ -14,11 +14,7 @@
#include "core/fpdfapi/parser/cpdf_test_document.h"
#include "testing/gtest/include/gtest/gtest.h"
-class CPDF_CIDFontTest : public testing::Test {
- protected:
- void SetUp() override { CPDF_PageModule::Create(); }
- void TearDown() override { CPDF_PageModule::Destroy(); }
-};
+using CPDF_CIDFontTest = TestWithPageModule;
TEST_F(CPDF_CIDFontTest, BUG_920636) {
CPDF_TestDocument doc;
diff --git a/core/fpdfapi/page/BUILD.gn b/core/fpdfapi/page/BUILD.gn
index b180a6d..aa40526 100644
--- a/core/fpdfapi/page/BUILD.gn
+++ b/core/fpdfapi/page/BUILD.gn
@@ -119,6 +119,19 @@
visibility = [ "../../../*" ]
}
+source_set("unit_test_support") {
+ testonly = true
+ sources = [
+ "test_with_page_module.cpp",
+ "test_with_page_module.h",
+ ]
+ configs += [ "../../../:pdfium_strict_config" ]
+ deps = [
+ "../page",
+ "//testing/gtest",
+ ]
+}
+
pdfium_unittest_source_set("unittests") {
sources = [
"cpdf_colorspace_unittest.cpp",
diff --git a/core/fpdfapi/page/test_with_page_module.cpp b/core/fpdfapi/page/test_with_page_module.cpp
new file mode 100644
index 0000000..34a05d4
--- /dev/null
+++ b/core/fpdfapi/page/test_with_page_module.cpp
@@ -0,0 +1,15 @@
+// Copyright 2022 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "core/fpdfapi/page/test_with_page_module.h"
+
+#include "core/fpdfapi/page/cpdf_pagemodule.h"
+
+void TestWithPageModule::SetUp() {
+ CPDF_PageModule::Create();
+}
+
+void TestWithPageModule::TearDown() {
+ CPDF_PageModule::Destroy();
+}
diff --git a/core/fpdfapi/page/test_with_page_module.h b/core/fpdfapi/page/test_with_page_module.h
new file mode 100644
index 0000000..74dd5ca
--- /dev/null
+++ b/core/fpdfapi/page/test_with_page_module.h
@@ -0,0 +1,16 @@
+// Copyright 2022 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CORE_FPDFAPI_PAGE_TEST_WITH_PAGE_MODULE_H_
+#define CORE_FPDFAPI_PAGE_TEST_WITH_PAGE_MODULE_H_
+
+#include "testing/gtest/include/gtest/gtest.h"
+
+class TestWithPageModule : public testing::Test {
+ public:
+ void SetUp() override;
+ void TearDown() override;
+};
+
+#endif // CORE_FPDFAPI_PAGE_TEST_WITH_PAGE_MODULE_H_
diff --git a/core/fpdfapi/parser/BUILD.gn b/core/fpdfapi/parser/BUILD.gn
index 9ed32fc..79ea940 100644
--- a/core/fpdfapi/parser/BUILD.gn
+++ b/core/fpdfapi/parser/BUILD.gn
@@ -135,6 +135,7 @@
":unit_test_support",
"../../../constants",
"../page",
+ "../page:unit_test_support",
"../render",
]
pdfium_root_dir = "../../../"
diff --git a/core/fpdfapi/parser/cpdf_document_unittest.cpp b/core/fpdfapi/parser/cpdf_document_unittest.cpp
index b6aee6b..fe0d71d 100644
--- a/core/fpdfapi/parser/cpdf_document_unittest.cpp
+++ b/core/fpdfapi/parser/cpdf_document_unittest.cpp
@@ -7,7 +7,7 @@
#include <memory>
#include <utility>
-#include "core/fpdfapi/page/cpdf_pagemodule.h"
+#include "core/fpdfapi/page/test_with_page_module.h"
#include "core/fpdfapi/parser/cpdf_array.h"
#include "core/fpdfapi/parser/cpdf_boolean.h"
#include "core/fpdfapi/parser/cpdf_dictionary.h"
@@ -149,11 +149,7 @@
} // namespace
-class cpdf_document_test : public testing::Test {
- public:
- void SetUp() override { CPDF_PageModule::Create(); }
- void TearDown() override { CPDF_PageModule::Destroy(); }
-};
+using cpdf_document_test = TestWithPageModule;
TEST_F(cpdf_document_test, GetPages) {
std::unique_ptr<CPDF_TestDocumentForPages> document =
diff --git a/core/fpdfapi/parser/cpdf_hint_tables_unittest.cpp b/core/fpdfapi/parser/cpdf_hint_tables_unittest.cpp
index 84e2575..d1cfd20 100644
--- a/core/fpdfapi/parser/cpdf_hint_tables_unittest.cpp
+++ b/core/fpdfapi/parser/cpdf_hint_tables_unittest.cpp
@@ -8,7 +8,7 @@
#include <string>
#include <utility>
-#include "core/fpdfapi/page/cpdf_pagemodule.h"
+#include "core/fpdfapi/page/test_with_page_module.h"
#include "core/fpdfapi/parser/cpdf_data_avail.h"
#include "core/fpdfapi/parser/cpdf_dictionary.h"
#include "core/fpdfapi/parser/cpdf_linearized_header.h"
@@ -59,15 +59,8 @@
} // namespace
-class CPDF_HintTablesTest : public testing::Test {
- public:
- CPDF_HintTablesTest() {
- // Needs for encoding Hint table stream.
- CPDF_PageModule::Create();
- }
-
- ~CPDF_HintTablesTest() override { CPDF_PageModule::Destroy(); }
-};
+// Needs page module for encoding Hint table stream.
+using CPDF_HintTablesTest = TestWithPageModule;
TEST_F(CPDF_HintTablesTest, Load) {
auto data_avail = MakeDataAvailFromFile("feature_linearized_loading.pdf");
diff --git a/fpdfsdk/BUILD.gn b/fpdfsdk/BUILD.gn
index f63ba67..228e7c8 100644
--- a/fpdfsdk/BUILD.gn
+++ b/fpdfsdk/BUILD.gn
@@ -117,7 +117,7 @@
":fpdfsdk",
"../:pdfium_public_headers",
"../constants",
- "../core/fpdfapi/page",
+ "../core/fpdfapi/page:unit_test_support",
"../core/fpdfapi/parser",
"../core/fpdfapi/parser:unit_test_support",
"../core/fpdfapi/render",
diff --git a/fpdfsdk/fpdf_annot_embeddertest.cpp b/fpdfsdk/fpdf_annot_embeddertest.cpp
index 2f3d08a..31c1c64 100644
--- a/fpdfsdk/fpdf_annot_embeddertest.cpp
+++ b/fpdfsdk/fpdf_annot_embeddertest.cpp
@@ -13,7 +13,6 @@
#include "build/build_config.h"
#include "constants/annotation_common.h"
#include "core/fpdfapi/page/cpdf_annotcontext.h"
-#include "core/fpdfapi/page/cpdf_pagemodule.h"
#include "core/fpdfapi/parser/cpdf_array.h"
#include "core/fpdfapi/parser/cpdf_dictionary.h"
#include "core/fxcrt/fx_system.h"
diff --git a/fpdfsdk/fpdf_catalog_unittest.cpp b/fpdfsdk/fpdf_catalog_unittest.cpp
index 117ab02..690f012 100644
--- a/fpdfsdk/fpdf_catalog_unittest.cpp
+++ b/fpdfsdk/fpdf_catalog_unittest.cpp
@@ -6,7 +6,7 @@
#include <memory>
-#include "core/fpdfapi/page/cpdf_pagemodule.h"
+#include "core/fpdfapi/page/test_with_page_module.h"
#include "core/fpdfapi/parser/cpdf_dictionary.h"
#include "core/fpdfapi/parser/cpdf_document.h"
#include "core/fpdfapi/parser/cpdf_number.h"
@@ -17,10 +17,10 @@
#include "public/cpp/fpdf_scopers.h"
#include "testing/gtest/include/gtest/gtest.h"
-class PDFCatalogTest : public testing::Test {
+class PDFCatalogTest : public TestWithPageModule {
public:
void SetUp() override {
- CPDF_PageModule::Create();
+ TestWithPageModule::SetUp();
auto pTestDoc = std::make_unique<CPDF_TestDocument>();
m_pDoc.reset(FPDFDocumentFromCPDFDocument(pTestDoc.release()));
m_pRootObj = pdfium::MakeRetain<CPDF_Dictionary>();
@@ -28,7 +28,7 @@
void TearDown() override {
m_pDoc.reset();
- CPDF_PageModule::Destroy();
+ TestWithPageModule::TearDown();
}
protected:
diff --git a/fpdfsdk/fpdf_doc_unittest.cpp b/fpdfsdk/fpdf_doc_unittest.cpp
index a205459..391b9ba 100644
--- a/fpdfsdk/fpdf_doc_unittest.cpp
+++ b/fpdfsdk/fpdf_doc_unittest.cpp
@@ -7,7 +7,7 @@
#include <memory>
#include <vector>
-#include "core/fpdfapi/page/cpdf_pagemodule.h"
+#include "core/fpdfapi/page/test_with_page_module.h"
#include "core/fpdfapi/parser/cpdf_array.h"
#include "core/fpdfapi/parser/cpdf_dictionary.h"
#include "core/fpdfapi/parser/cpdf_document.h"
@@ -24,7 +24,7 @@
#include "testing/fx_string_testhelpers.h"
#include "testing/gtest/include/gtest/gtest.h"
-class PDFDocTest : public testing::Test {
+class PDFDocTest : public TestWithPageModule {
public:
struct DictObjInfo {
uint32_t num;
@@ -32,7 +32,7 @@
};
void SetUp() override {
- CPDF_PageModule::Create();
+ TestWithPageModule::SetUp();
auto pTestDoc = std::make_unique<CPDF_TestDocument>();
m_pIndirectObjs = pTestDoc.get();
m_pRootObj.Reset(m_pIndirectObjs->NewIndirect<CPDF_Dictionary>());
@@ -44,7 +44,7 @@
m_pRootObj = nullptr;
m_pIndirectObjs = nullptr;
m_pDoc.reset();
- CPDF_PageModule::Destroy();
+ TestWithPageModule::TearDown();
}
std::vector<DictObjInfo> CreateDictObjs(int num) {
diff --git a/fpdfsdk/fpdf_edit_unittest.cpp b/fpdfsdk/fpdf_edit_unittest.cpp
index 6aa24f4..c16272a 100644
--- a/fpdfsdk/fpdf_edit_unittest.cpp
+++ b/fpdfsdk/fpdf_edit_unittest.cpp
@@ -4,13 +4,10 @@
#include "public/fpdf_edit.h"
-#include "core/fpdfapi/page/cpdf_pagemodule.h"
+#include "core/fpdfapi/page/test_with_page_module.h"
#include "testing/gtest/include/gtest/gtest.h"
-class PDFEditTest : public testing::Test {
- void SetUp() override { CPDF_PageModule::Create(); }
- void TearDown() override { CPDF_PageModule::Destroy(); }
-};
+using PDFEditTest = TestWithPageModule;
TEST_F(PDFEditTest, LineJoin) {
EXPECT_FALSE(FPDFPageObj_SetLineJoin(nullptr, -1));