summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXisco Fauli <xiscofauli@libreoffice.org>2021-11-17 17:14:17 +0100
committerXisco Fauli <xiscofauli@libreoffice.org>2021-11-17 19:36:22 +0100
commitfe1121cb8c79b0843b26331325332c3953049a92 (patch)
tree815a6fce39d4b2008bd0cb5ce495fcb08e67ede0
parent82067a6e996c197d84394a82aa0adef243ed8f69 (diff)
tdf#84012: sc_pdf_export: Add unittest
Change-Id: Ibdbf9cff1afe63eb2263d54d23996efcee22337a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125412 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
-rw-r--r--sc/qa/extras/scpdfexport.cxx43
-rw-r--r--sc/qa/extras/testdocuments/tdf84012.odsbin0 -> 12777 bytes
2 files changed, 43 insertions, 0 deletions
diff --git a/sc/qa/extras/scpdfexport.cxx b/sc/qa/extras/scpdfexport.cxx
index a9f7c1df4e77..a85e05555d24 100644
--- a/sc/qa/extras/scpdfexport.cxx
+++ b/sc/qa/extras/scpdfexport.cxx
@@ -70,6 +70,7 @@ public:
void testUnoCommands_Tdf120161();
void testTdf64703_hiddenPageBreak();
void testTdf143978();
+ void testTdf84012();
CPPUNIT_TEST_SUITE(ScPDFExportTest);
CPPUNIT_TEST(testExportRange_Tdf120161);
@@ -77,6 +78,7 @@ public:
CPPUNIT_TEST(testUnoCommands_Tdf120161);
CPPUNIT_TEST(testTdf64703_hiddenPageBreak);
CPPUNIT_TEST(testTdf143978);
+ CPPUNIT_TEST(testTdf84012);
CPPUNIT_TEST_SUITE_END();
};
@@ -502,6 +504,47 @@ void ScPDFExportTest::testTdf143978()
CPPUNIT_ASSERT_EQUAL(OUString("2021-11-17"), sText2);
}
+void ScPDFExportTest::testTdf84012()
+{
+ std::shared_ptr<vcl::pdf::PDFium> pPDFium = vcl::pdf::PDFiumLibrary::get();
+ if (!pPDFium)
+ {
+ return;
+ }
+
+ mxComponent = loadFromDesktop(m_directories.getURLFromSrc(DATA_DIRECTORY) + "tdf84012.ods",
+ "com.sun.star.sheet.SpreadsheetDocument");
+ uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
+
+ // A1
+ ScRange range1(0, 0, 0, 0, 0, 0);
+ std::shared_ptr<utl::TempFile> pPDFFile = exportToPDF(xModel, range1);
+ // Parse the export result with pdfium.
+ SvFileStream aFile(pPDFFile->GetURL(), StreamMode::READ);
+ SvMemoryStream aMemory;
+ aMemory.WriteStream(aFile);
+ std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument
+ = pPDFium->openDocument(aMemory.GetData(), aMemory.GetSize());
+ CPPUNIT_ASSERT(pPdfDocument);
+ CPPUNIT_ASSERT_EQUAL(1, pPdfDocument->getPageCount());
+
+ // Get the first page
+ std::unique_ptr<vcl::pdf::PDFiumPage> pPdfPage = pPdfDocument->openPage(/*nIndex=*/0);
+ CPPUNIT_ASSERT(pPdfPage);
+ std::unique_ptr<vcl::pdf::PDFiumTextPage> pTextPage = pPdfPage->getTextPage();
+
+ int nChars = pTextPage->countChars();
+ std::vector<sal_uInt32> aChars(nChars);
+ for (int i = 0; i < nChars; i++)
+ aChars[i] = pTextPage->getUnicode(i);
+ OUString aActualText(aChars.data(), aChars.size());
+
+ // Without the fix in place, this test would have failed with
+ // - Expected: Blah blah (blah, blah)
+ // - Actual : Blah blah
+ CPPUNIT_ASSERT_EQUAL(OUString("Blah blah (blah, blah)"), aActualText);
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(ScPDFExportTest);
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sc/qa/extras/testdocuments/tdf84012.ods b/sc/qa/extras/testdocuments/tdf84012.ods
new file mode 100644
index 000000000000..c2f30e0f4978
--- /dev/null
+++ b/sc/qa/extras/testdocuments/tdf84012.ods
Binary files differ