include/test/unoapi_test.hxx | 94 +++++++++++++++++++++++++++++++++++++++++++ test/source/unoapi_test.cxx | 18 ++++++++ 2 files changed, 112 insertions(+)
New commits: commit 91c5cb9f9fcf7bbbda7d3cc9f83689f20011253e Author: Justin Luth <[email protected]> AuthorDate: Thu Nov 27 08:34:32 2025 -0500 Commit: Miklos Vajna <[email protected]> CommitDate: Mon Dec 1 09:25:11 2025 +0100 UnoApiTest: Add enum for filter names (non-intrusive backport) This is a backport of 26.2 801dc48c6f7df686574c76e8ca67ac59dd1604f8 and 6675e7893ebe8d59ed3975b1cbd4f3673e66e746 to simplify backporting unit tests - allowing both new and old way. Change-Id: I4dad6f77853b53b74150dab0edaf41c5ff5b4f3d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194750 Reviewed-by: Miklos Vajna <[email protected]> Tested-by: Jenkins CollaboraOffice <[email protected]> Reviewed-by: Justin Luth <[email protected]> diff --git a/include/test/unoapi_test.hxx b/include/test/unoapi_test.hxx index a28784543c9f..ecaaea24a47d 100644 --- a/include/test/unoapi_test.hxx +++ b/include/test/unoapi_test.hxx @@ -23,6 +23,96 @@ #include <unotools/tempfile.hxx> #include <vcl/filter/PDFiumLibrary.hxx> +enum class TestFilter +{ + NONE, + CSV, + DOC, + DOCBOOK, + DOCM, + DOCX, + DOCX_2007, + DOTX, + FODG, + FODS, + FODT, + HTML_CALC, + HTML_CALC_WEBQUERY, + HTML_IMPRESS, + HTML_WRITER, + MD, + MML, + ODB, + ODG, + ODM, + ODP, + ODS, + ODT, + OTT, + PDF_WRITER, + POTX, + PPT, + PPTM, + PPTX, + PPTX_2007, + RTF, + SVG_DRAW, + SVG_IMPRESS, + TEXT, + TEXT_ENCODED, + XHTML_CALC, + XHTML_DRAW, + XHTML_WRITER, + XLS, + XLSM, + XLST, + XLSX, +}; + +const std::unordered_map<TestFilter, OUString> TestFilterNames{ + { TestFilter::CSV, u"Text - txt - csv (StarCalc)"_ustr }, + { TestFilter::DOC, u"MS Word 97"_ustr }, + { TestFilter::DOCBOOK, u"DocBook File"_ustr }, + { TestFilter::DOCM, u"MS Word 2007 XML VBA"_ustr }, + { TestFilter::DOCX, u"Office Open XML Text"_ustr }, + { TestFilter::DOCX_2007, u"MS Word 2007 XML"_ustr }, + { TestFilter::DOTX, u"MS Word 2007 XML Template"_ustr }, + { TestFilter::FODG, u"OpenDocument Drawing Flat XML"_ustr }, + { TestFilter::FODS, u"OpenDocument Spreadsheet Flat XML"_ustr }, + { TestFilter::FODT, u"OpenDocument Text Flat XML"_ustr }, + { TestFilter::HTML_CALC, u"HTML (StarCalc)"_ustr }, + { TestFilter::HTML_CALC_WEBQUERY, u"calc_HTML_WebQuery"_ustr }, + { TestFilter::HTML_IMPRESS, u"impress_html_Export"_ustr }, + { TestFilter::HTML_WRITER, u"HTML (StarWriter)"_ustr }, + { TestFilter::MD, u"Markdown"_ustr }, + { TestFilter::MML, u"MathML XML (Math)"_ustr }, + { TestFilter::ODB, u"StarOffice XML (Base)"_ustr }, + { TestFilter::ODG, u"draw8"_ustr }, + { TestFilter::ODM, u"writerglobal8_writer"_ustr }, + { TestFilter::ODP, u"impress8"_ustr }, + { TestFilter::ODS, u"calc8"_ustr }, + { TestFilter::ODT, u"writer8"_ustr }, + { TestFilter::OTT, u"writer8_template"_ustr }, + { TestFilter::PDF_WRITER, u"writer_pdf_Export"_ustr }, + { TestFilter::POTX, u"Impress Office Open XML Template"_ustr }, + { TestFilter::PPT, u"MS PowerPoint 97"_ustr }, + { TestFilter::PPTM, u"Impress MS PowerPoint 2007 XML VBA"_ustr }, + { TestFilter::PPTX, u"Impress Office Open XML"_ustr }, + { TestFilter::PPTX_2007, u"Impress MS PowerPoint 2007 XML"_ustr }, + { TestFilter::RTF, u"Rich Text Format"_ustr }, + { TestFilter::SVG_DRAW, u"draw_svg_Export"_ustr }, + { TestFilter::SVG_IMPRESS, u"impress_svg_Export"_ustr }, + { TestFilter::TEXT, u"Text"_ustr }, + { TestFilter::TEXT_ENCODED, u"Text (encoded)"_ustr }, + { TestFilter::XHTML_CALC, u"XHTML Calc File"_ustr }, + { TestFilter::XHTML_DRAW, u"XHTML Draw File"_ustr }, + { TestFilter::XHTML_WRITER, u"XHTML Writer File"_ustr }, + { TestFilter::XLS, u"MS Excel 97"_ustr }, + { TestFilter::XLSM, u"Calc MS Excel 2007 VBA XML"_ustr }, + { TestFilter::XLST, u"Calc MS Excel 2007 XML Template"_ustr }, + { TestFilter::XLSX, u"Calc Office Open XML"_ustr }, +}; + // basic uno api test class class OOO_DLLPUBLIC_TEST UnoApiTest : public test::BootstrapFixture, public unotest::MacrosTest @@ -44,8 +134,10 @@ public: const css::uno::Sequence<css::uno::Any>& rParams = {}); void save(const OUString& rFilter, const char* pPassword = nullptr); + void save(TestFilter eFilter, const char* pPassword = nullptr); void saveWithParams(const css::uno::Sequence<css::beans::PropertyValue>& rParams); void saveAndReload(const OUString& rFilter, const char* pPassword = nullptr); + void saveAndReload(TestFilter eFilter, const char* pPassword = nullptr); std::unique_ptr<vcl::pdf::PDFiumDocument> parsePDFExport(const OString& rPassword = OString()); @@ -60,6 +152,7 @@ public: } void setImportFilterName(const OUString& rFilterName) { maImportFilterName = rFilterName; } + void setImportFilterName(TestFilter eFilterName) { meImportFilterName = eFilterName; } protected: // reference to document component that we are testing @@ -84,6 +177,7 @@ private: OUString maFilterOptions; OUString maImportFilterOptions; + TestFilter meImportFilterName; OUString maImportFilterName; }; diff --git a/test/source/unoapi_test.cxx b/test/source/unoapi_test.cxx index ce88aac3158e..ec73f7e44923 100644 --- a/test/source/unoapi_test.cxx +++ b/test/source/unoapi_test.cxx @@ -27,6 +27,7 @@ using namespace css::uno; UnoApiTest::UnoApiTest(OUString path) : mbSkipValidation(false) , m_aBaseString(std::move(path)) + , meImportFilterName(TestFilter::NONE) { maTempFile.EnableKillingFile(); } @@ -104,6 +105,13 @@ void UnoApiTest::load(OUString const& rURL, const char* pPassword) aValue.Value <<= maImportFilterName; aFilterOptions.push_back(aValue); } + else if (meImportFilterName != TestFilter::NONE) + { + beans::PropertyValue aValue; + aValue.Name = "FilterName"; + aValue.Value <<= TestFilterNames.at(meImportFilterName); + aFilterOptions.push_back(aValue); + } loadWithParams(rURL, comphelper::containerToSequence(aFilterOptions)); @@ -147,6 +155,11 @@ uno::Any UnoApiTest::executeMacro(const OUString& rScriptURL, return aRet; } +void UnoApiTest::save(TestFilter eFilter, const char* pPassword) +{ + save(TestFilterNames.at(eFilter), pPassword); +} + void UnoApiTest::save(const OUString& rFilter, const char* pPassword) { utl::MediaDescriptor aMediaDescriptor; @@ -220,6 +233,11 @@ void UnoApiTest::saveAndReload(const OUString& rFilter, const char* pPassword) load(maTempFile.GetURL(), pPassword); } +void UnoApiTest::saveAndReload(TestFilter eFilter, const char* pPassword) +{ + saveAndReload(TestFilterNames.at(eFilter), pPassword); +} + std::unique_ptr<vcl::pdf::PDFiumDocument> UnoApiTest::parsePDFExport(const OString& rPassword) { SvFileStream aFile(maTempFile.GetURL(), StreamMode::READ);
