summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXisco Fauli <xiscofauli@libreoffice.org>2021-11-17 15:59:20 +0100
committerXisco Fauli <xiscofauli@libreoffice.org>2021-11-17 19:35:28 +0100
commit2678f500fa4cf20a83c29fc28969efa71027b1ec (patch)
tree4149380dabffc8282b8cbc69192670733d038078
parentb254ecc2bbc716343fccf303f58dfb034b487bca (diff)
tdf#143978: sc_pdf_export: Add unittest
Exporting to PDF is the only way I could find to test this issue Change-Id: I05da96cadc2785d31a9a63925ee072456ec72a93 Change-Id: Ic31e1eb37f78451c4e34d91f9dd240716b94f973 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125407 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
-rw-r--r--sc/CppunitTest_sc_pdf_export.mk1
-rw-r--r--sc/qa/extras/scpdfexport.cxx51
-rw-r--r--sc/qa/extras/testdocuments/tdf143978.odsbin0 -> 9179 bytes
3 files changed, 52 insertions, 0 deletions
diff --git a/sc/CppunitTest_sc_pdf_export.mk b/sc/CppunitTest_sc_pdf_export.mk
index 9da73eed40d6..19b67515cb14 100644
--- a/sc/CppunitTest_sc_pdf_export.mk
+++ b/sc/CppunitTest_sc_pdf_export.mk
@@ -38,6 +38,7 @@ $(eval $(call gb_CppunitTest_use_libraries,sc_pdf_export, \
tl \
unotest \
utl \
+ vcl \
))
$(eval $(call gb_CppunitTest_set_include,sc_pdf_export,\
diff --git a/sc/qa/extras/scpdfexport.cxx b/sc/qa/extras/scpdfexport.cxx
index 9ccfa8edc978..a9f7c1df4e77 100644
--- a/sc/qa/extras/scpdfexport.cxx
+++ b/sc/qa/extras/scpdfexport.cxx
@@ -28,6 +28,8 @@
#include <comphelper/processfactory.hxx>
#include <comphelper/propertyvalue.hxx>
+#include <vcl/filter/PDFiumLibrary.hxx>
+
#if USE_TLS_NSS
#include <nss.h>
#endif
@@ -67,12 +69,14 @@ public:
void testExportFitToPage_Tdf103516();
void testUnoCommands_Tdf120161();
void testTdf64703_hiddenPageBreak();
+ void testTdf143978();
CPPUNIT_TEST_SUITE(ScPDFExportTest);
CPPUNIT_TEST(testExportRange_Tdf120161);
CPPUNIT_TEST(testExportFitToPage_Tdf103516);
CPPUNIT_TEST(testUnoCommands_Tdf120161);
CPPUNIT_TEST(testTdf64703_hiddenPageBreak);
+ CPPUNIT_TEST(testTdf143978);
CPPUNIT_TEST_SUITE_END();
};
@@ -451,6 +455,53 @@ void ScPDFExportTest::testTdf64703_hiddenPageBreak()
}
}
+void ScPDFExportTest::testTdf143978()
+{
+ std::shared_ptr<vcl::pdf::PDFium> pPDFium = vcl::pdf::PDFiumLibrary::get();
+ if (!pPDFium)
+ {
+ return;
+ }
+
+ mxComponent = loadFromDesktop(m_directories.getURLFromSrc(DATA_DIRECTORY) + "tdf143978.ods",
+ "com.sun.star.sheet.SpreadsheetDocument");
+ uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
+
+ // A1:A2
+ ScRange range1(0, 0, 0, 0, 1, 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 nPageObjectCount = pPdfPage->getObjectCount();
+ CPPUNIT_ASSERT_EQUAL(2, nPageObjectCount);
+
+ // Without the fix in place, this test would have failed with
+ // - Expected: Dies ist viel zu viel Text
+ // - Actual : Dies ist vie
+ std::unique_ptr<vcl::pdf::PDFiumPageObject> pPageObject1 = pPdfPage->getObject(0);
+ OUString sText1 = pPageObject1->getText(pTextPage);
+ CPPUNIT_ASSERT_EQUAL(OUString("Dies ist viel zu viel Text"), sText1);
+
+ // and it would also have failed with
+ // - Expected: 2021-11-17
+ // - Actual : ###
+ std::unique_ptr<vcl::pdf::PDFiumPageObject> pPageObject2 = pPdfPage->getObject(1);
+ OUString sText2 = pPageObject2->getText(pTextPage);
+ CPPUNIT_ASSERT_EQUAL(OUString("2021-11-17"), sText2);
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(ScPDFExportTest);
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sc/qa/extras/testdocuments/tdf143978.ods b/sc/qa/extras/testdocuments/tdf143978.ods
new file mode 100644
index 000000000000..25a79defc66e
--- /dev/null
+++ b/sc/qa/extras/testdocuments/tdf143978.ods
Binary files differ