diff options
-rw-r--r-- | sw/CppunitTest_sw_fodfexport.mk | 57 | ||||
-rw-r--r-- | sw/Module_sw.mk | 1 | ||||
-rw-r--r-- | sw/qa/extras/fodfexport/data/tdf113696.odt | bin | 0 -> 10731 bytes | |||
-rw-r--r-- | sw/qa/extras/fodfexport/fodfexport.cxx | 44 | ||||
-rw-r--r-- | sw/qa/extras/inc/swmodeltestbase.hxx | 11 |
5 files changed, 113 insertions, 0 deletions
diff --git a/sw/CppunitTest_sw_fodfexport.mk b/sw/CppunitTest_sw_fodfexport.mk new file mode 100644 index 000000000000..4703b85435f7 --- /dev/null +++ b/sw/CppunitTest_sw_fodfexport.mk @@ -0,0 +1,57 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +#************************************************************************* +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +#************************************************************************* + +$(eval $(call gb_CppunitTest_CppunitTest,sw_fodfexport)) + +$(eval $(call gb_CppunitTest_add_exception_objects,sw_fodfexport, \ + sw/qa/extras/fodfexport/fodfexport \ +)) + +$(eval $(call gb_CppunitTest_use_libraries,sw_fodfexport, \ + comphelper \ + cppu \ + cppuhelper \ + sal \ + sfx \ + sw \ + test \ + tl \ + unotest \ + utl \ + vcl \ +)) + +$(eval $(call gb_CppunitTest_use_externals,sw_fodfexport,\ + boost_headers \ + libxml2 \ +)) + +$(eval $(call gb_CppunitTest_set_include,sw_fodfexport,\ + -I$(SRCDIR)/sw/inc \ + -I$(SRCDIR)/sw/source/core/inc \ + -I$(SRCDIR)/sw/qa/extras/inc \ + $$(INCLUDE) \ +)) + +$(eval $(call gb_CppunitTest_use_sdk_api,sw_fodfexport)) + +$(eval $(call gb_CppunitTest_use_ure,sw_fodfexport)) +$(eval $(call gb_CppunitTest_use_vcl,sw_fodfexport)) + +$(eval $(call gb_CppunitTest_use_rdb,sw_fodfexport,services)) + +$(eval $(call gb_CppunitTest_use_custom_headers,sw_fodfexport,\ + officecfg/registry \ +)) + +$(eval $(call gb_CppunitTest_use_configuration,sw_fodfexport)) + +# vim: set noet sw=4 ts=4: diff --git a/sw/Module_sw.mk b/sw/Module_sw.mk index 39772b8b930e..966c71d097fd 100644 --- a/sw/Module_sw.mk +++ b/sw/Module_sw.mk @@ -52,6 +52,7 @@ $(eval $(call gb_Module_add_slowcheck_targets,sw,\ $(if $(and $(filter $(COM),MSC),$(MERGELIBS)),, \ CppunitTest_sw_uwriter) \ CppunitTest_sw_docbookexport \ + CppunitTest_sw_fodfexport \ CppunitTest_sw_htmlexport \ CppunitTest_sw_htmlimport \ CppunitTest_sw_macros_test \ diff --git a/sw/qa/extras/fodfexport/data/tdf113696.odt b/sw/qa/extras/fodfexport/data/tdf113696.odt Binary files differnew file mode 100644 index 000000000000..03e0612a3d14 --- /dev/null +++ b/sw/qa/extras/fodfexport/data/tdf113696.odt diff --git a/sw/qa/extras/fodfexport/fodfexport.cxx b/sw/qa/extras/fodfexport/fodfexport.cxx new file mode 100644 index 000000000000..6cd00b49ba47 --- /dev/null +++ b/sw/qa/extras/fodfexport/fodfexport.cxx @@ -0,0 +1,44 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <swmodeltestbase.hxx> + +class Test : public SwModelTestBase +{ +public: + Test() + : SwModelTestBase("/sw/qa/extras/fodfexport/data/", "OpenDocument Text Flat XML") + { + } + + /** + * Blacklist handling + */ + bool mustTestImportOf(const char* filename) const override + { + // Only test import of .fodt document + return OString(filename).endsWith(".odt") || OString(filename).endsWith(".fodt"); + } +}; + +DECLARE_FODFEXPORT_TEST(testTdf113696, "tdf113696.odt") +{ + // Test that an image which is written in svm format (image/x-vclgraphic) + // is accompanied by a png fallback graphic. + if (xmlDocPtr pXmlDoc = parseExportedFile()) + { + assertXPath(pXmlDoc, "/office:document/office:body/office:text/text:p/draw:frame/" + "draw:image[@loext:mime-type='image/x-vclgraphic']"); + assertXPath(pXmlDoc, "/office:document/office:body/office:text/text:p/draw:frame/" + "draw:image[@loext:mime-type='image/png']"); + } +} + +CPPUNIT_PLUGIN_IMPLEMENT(); +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/extras/inc/swmodeltestbase.hxx b/sw/qa/extras/inc/swmodeltestbase.hxx index 4725b2c7a2c3..7cf82ad81311 100644 --- a/sw/qa/extras/inc/swmodeltestbase.hxx +++ b/sw/qa/extras/inc/swmodeltestbase.hxx @@ -94,6 +94,7 @@ using namespace css; #define DECLARE_RTFEXPORT_TEST(TestName, filename) DECLARE_SW_ROUNDTRIP_TEST(TestName, filename, nullptr, Test) #define DECLARE_ODFIMPORT_TEST(TestName, filename) DECLARE_SW_IMPORT_TEST(TestName, filename, nullptr, Test) #define DECLARE_ODFEXPORT_TEST(TestName, filename) DECLARE_SW_ROUNDTRIP_TEST(TestName, filename, nullptr, Test) +#define DECLARE_FODFEXPORT_TEST(TestName, filename) DECLARE_SW_ROUNDTRIP_TEST(TestName, filename, nullptr, Test) #define DECLARE_WW8EXPORT_TEST(TestName, filename) DECLARE_SW_ROUNDTRIP_TEST(TestName, filename, nullptr, Test) #define DECLARE_SW_IMPORT_TEST(TestName, filename, password, BaseClass) \ @@ -783,6 +784,16 @@ protected: return parseExportInternal( maTempFile.GetURL(), rStreamName ); } + /** + * Returns an xml stream of a an exported file. + * To be used when the exporter doesn't create zip archives, but single files + * (like Flat ODF Export) + */ + xmlDocPtr parseExportedFile() + { + return parseXmlStream(maTempFile.GetStream(StreamMode::READ)); + } + xmlDocPtr parseExportInternal( const OUString& url, const OUString& rStreamName ) { // Read the XML stream we're interested in. |