diff options
author | Michael Stahl <mstahl@redhat.com> | 2016-06-30 20:52:34 +0200 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2016-07-01 11:21:10 +0200 |
commit | 3fc82623635ff8e57df2c92811abd9d7e481c046 (patch) | |
tree | 4538847371132ea77f9f00ce9e81d91d979579f5 /sd | |
parent | 0a93639221a9de78eb548cf73a616f74c464d7ce (diff) |
sd: sd_export_ooxml still takes the most time, split it in 2
Change-Id: Ib102ba9b54c4b7730c583e3cb5e769f70fcb5b09
Diffstat (limited to 'sd')
-rw-r--r-- | sd/CppunitTest_sd_export_ooxml.mk | 84 | ||||
-rw-r--r-- | sd/CppunitTest_sd_export_ooxml1.mk | 84 | ||||
-rw-r--r-- | sd/CppunitTest_sd_export_ooxml2.mk | 84 | ||||
-rw-r--r-- | sd/Module_sd.mk | 3 | ||||
-rw-r--r-- | sd/qa/unit/export-tests-ooxml1.cxx (renamed from sd/qa/unit/export-tests-ooxml.cxx) | 551 | ||||
-rw-r--r-- | sd/qa/unit/export-tests-ooxml2.cxx | 677 |
6 files changed, 875 insertions, 608 deletions
diff --git a/sd/CppunitTest_sd_export_ooxml.mk b/sd/CppunitTest_sd_export_ooxml.mk deleted file mode 100644 index e7f152018fab..000000000000 --- a/sd/CppunitTest_sd_export_ooxml.mk +++ /dev/null @@ -1,84 +0,0 @@ -# -*- 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,sd_export_ooxml)) - -$(eval $(call gb_CppunitTest_use_externals,sd_export_ooxml,\ - boost_headers \ - libxml2 \ -)) - -$(eval $(call gb_CppunitTest_add_exception_objects,sd_export_ooxml, \ - sd/qa/unit/export-tests-ooxml \ -)) - -$(eval $(call gb_CppunitTest_use_libraries,sd_export_ooxml, \ - $(call gb_Helper_optional,AVMEDIA,avmedia) \ - basegfx \ - comphelper \ - cppu \ - cppuhelper \ - drawinglayer \ - editeng \ - for \ - forui \ - i18nlangtag \ - msfilter \ - oox \ - sal \ - salhelper \ - sax \ - sd \ - sfx \ - sot \ - svl \ - svt \ - svx \ - svxcore \ - test \ - tl \ - tk \ - ucbhelper \ - unotest \ - utl \ - vcl \ - xo \ - $(gb_UWINAPI) \ -)) - -$(eval $(call gb_CppunitTest_set_include,sd_export_ooxml,\ - -I$(SRCDIR)/sd/source/ui/inc \ - -I$(SRCDIR)/sd/inc \ - $$(INCLUDE) \ -)) - -$(eval $(call gb_CppunitTest_use_sdk_api,sd_export_ooxml)) - -$(eval $(call gb_CppunitTest_use_ure,sd_export_ooxml)) -$(eval $(call gb_CppunitTest_use_vcl,sd_export_ooxml)) - -$(eval $(call gb_CppunitTest_use_rdb,sd_export_ooxml,services)) - -$(eval $(call gb_CppunitTest_use_custom_headers,sd_export_ooxml,\ - officecfg/registry \ -)) - -$(eval $(call gb_CppunitTest_use_configuration,sd_export_ooxml)) - -$(eval $(call gb_CppunitTest_add_arguments,sd_export_ooxml,\ - -env:SVG_DISABLE_FONT_EMBEDDING= \ -)) - -$(call gb_CppunitTest_get_target,sd_export_ooxml): \ - $(call gb_AllLangResTarget_get_target,avmedia) \ - $(call gb_AllLangResTarget_get_target,sd) - -# vim: set noet sw=4 ts=4: diff --git a/sd/CppunitTest_sd_export_ooxml1.mk b/sd/CppunitTest_sd_export_ooxml1.mk new file mode 100644 index 000000000000..9009de03b1bb --- /dev/null +++ b/sd/CppunitTest_sd_export_ooxml1.mk @@ -0,0 +1,84 @@ +# -*- 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,sd_export_ooxml1)) + +$(eval $(call gb_CppunitTest_use_externals,sd_export_ooxml1,\ + boost_headers \ + libxml2 \ +)) + +$(eval $(call gb_CppunitTest_add_exception_objects,sd_export_ooxml1, \ + sd/qa/unit/export-tests-ooxml1 \ +)) + +$(eval $(call gb_CppunitTest_use_libraries,sd_export_ooxml1, \ + $(call gb_Helper_optional,AVMEDIA,avmedia) \ + basegfx \ + comphelper \ + cppu \ + cppuhelper \ + drawinglayer \ + editeng \ + for \ + forui \ + i18nlangtag \ + msfilter \ + oox \ + sal \ + salhelper \ + sax \ + sd \ + sfx \ + sot \ + svl \ + svt \ + svx \ + svxcore \ + test \ + tl \ + tk \ + ucbhelper \ + unotest \ + utl \ + vcl \ + xo \ + $(gb_UWINAPI) \ +)) + +$(eval $(call gb_CppunitTest_set_include,sd_export_ooxml1,\ + -I$(SRCDIR)/sd/source/ui/inc \ + -I$(SRCDIR)/sd/inc \ + $$(INCLUDE) \ +)) + +$(eval $(call gb_CppunitTest_use_sdk_api,sd_export_ooxml1)) + +$(eval $(call gb_CppunitTest_use_ure,sd_export_ooxml1)) +$(eval $(call gb_CppunitTest_use_vcl,sd_export_ooxml1)) + +$(eval $(call gb_CppunitTest_use_rdb,sd_export_ooxml1,services)) + +$(eval $(call gb_CppunitTest_use_custom_headers,sd_export_ooxml1,\ + officecfg/registry \ +)) + +$(eval $(call gb_CppunitTest_use_configuration,sd_export_ooxml1)) + +$(eval $(call gb_CppunitTest_add_arguments,sd_export_ooxml1,\ + -env:SVG_DISABLE_FONT_EMBEDDING= \ +)) + +$(call gb_CppunitTest_get_target,sd_export_ooxml1): \ + $(call gb_AllLangResTarget_get_target,avmedia) \ + $(call gb_AllLangResTarget_get_target,sd) + +# vim: set noet sw=4 ts=4: diff --git a/sd/CppunitTest_sd_export_ooxml2.mk b/sd/CppunitTest_sd_export_ooxml2.mk new file mode 100644 index 000000000000..143cd60af498 --- /dev/null +++ b/sd/CppunitTest_sd_export_ooxml2.mk @@ -0,0 +1,84 @@ +# -*- 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,sd_export_ooxml2)) + +$(eval $(call gb_CppunitTest_use_externals,sd_export_ooxml2,\ + boost_headers \ + libxml2 \ +)) + +$(eval $(call gb_CppunitTest_add_exception_objects,sd_export_ooxml2, \ + sd/qa/unit/export-tests-ooxml2 \ +)) + +$(eval $(call gb_CppunitTest_use_libraries,sd_export_ooxml2, \ + $(call gb_Helper_optional,AVMEDIA,avmedia) \ + basegfx \ + comphelper \ + cppu \ + cppuhelper \ + drawinglayer \ + editeng \ + for \ + forui \ + i18nlangtag \ + msfilter \ + oox \ + sal \ + salhelper \ + sax \ + sd \ + sfx \ + sot \ + svl \ + svt \ + svx \ + svxcore \ + test \ + tl \ + tk \ + ucbhelper \ + unotest \ + utl \ + vcl \ + xo \ + $(gb_UWINAPI) \ +)) + +$(eval $(call gb_CppunitTest_set_include,sd_export_ooxml2,\ + -I$(SRCDIR)/sd/source/ui/inc \ + -I$(SRCDIR)/sd/inc \ + $$(INCLUDE) \ +)) + +$(eval $(call gb_CppunitTest_use_sdk_api,sd_export_ooxml2)) + +$(eval $(call gb_CppunitTest_use_ure,sd_export_ooxml2)) +$(eval $(call gb_CppunitTest_use_vcl,sd_export_ooxml2)) + +$(eval $(call gb_CppunitTest_use_rdb,sd_export_ooxml2,services)) + +$(eval $(call gb_CppunitTest_use_custom_headers,sd_export_ooxml2,\ + officecfg/registry \ +)) + +$(eval $(call gb_CppunitTest_use_configuration,sd_export_ooxml2)) + +$(eval $(call gb_CppunitTest_add_arguments,sd_export_ooxml2,\ + -env:SVG_DISABLE_FONT_EMBEDDING= \ +)) + +$(call gb_CppunitTest_get_target,sd_export_ooxml2): \ + $(call gb_AllLangResTarget_get_target,avmedia) \ + $(call gb_AllLangResTarget_get_target,sd) + +# vim: set noet sw=4 ts=4: diff --git a/sd/Module_sd.mk b/sd/Module_sd.mk index 7fe92e598199..a6b4f9defb0d 100644 --- a/sd/Module_sd.mk +++ b/sd/Module_sd.mk @@ -30,7 +30,8 @@ $(eval $(call gb_Module_add_check_targets,sd,\ $(if $(and $(filter $(COM),MSC),$(MERGELIBS)),, \ CppunitTest_sd_uimpress) \ CppunitTest_sd_import_tests \ - CppunitTest_sd_export_ooxml \ + CppunitTest_sd_export_ooxml1 \ + CppunitTest_sd_export_ooxml2 \ CppunitTest_sd_export_tests \ CppunitTest_sd_filters_test \ CppunitTest_sd_misc_tests \ diff --git a/sd/qa/unit/export-tests-ooxml.cxx b/sd/qa/unit/export-tests-ooxml1.cxx index 9a4f4d992aaa..80af08d17214 100644 --- a/sd/qa/unit/export-tests-ooxml.cxx +++ b/sd/qa/unit/export-tests-ooxml1.cxx @@ -81,9 +81,10 @@ using namespace css; using namespace css::animations; -class SdOOXMLExportTest : public SdModelTestBase, public XmlTestTools +class SdOOXMLExportTest1 : public SdModelTestBase, public XmlTestTools { public: + void testFdo90607(); void testBnc870233_1(); void testBnc870233_2(); void testN828390_4(); @@ -104,33 +105,11 @@ public: void testMergedCells(); void testTableCellBorder(); void testBulletColor(); - void testTdf93883(); void testBulletCharAndFont(); void testBulletMarginAndIndentation(); void testParaMarginAndindentation(); - void testExportTransitionsPPTX(); - void testDatetimeFieldNumberFormat(); - void testDatetimeFieldNumberFormatPPTX(); - void testSlideNumberField(); - void testSlideNumberFieldPPTX(); - void testSlideCountField(); - void testSlideNameField(); - void testExtFileField(); - void testAuthorField(); - void testFdo90607(); - void testTdf91378(); -//This test gives errors due to ATL -#if HAVE_FEATURE_ATL || !defined(_WIN32) - void testBnc822341(); -#endif - void testMathObject(); - void testMathObjectPPT2010(); - void testTdf80224(); - void testTdf92527(); - void testTdf99224(); - - CPPUNIT_TEST_SUITE(SdOOXMLExportTest); + CPPUNIT_TEST_SUITE(SdOOXMLExportTest1); CPPUNIT_TEST(testFdo90607); CPPUNIT_TEST(testBnc870233_1); @@ -153,29 +132,9 @@ public: CPPUNIT_TEST(testMergedCells); CPPUNIT_TEST(testTableCellBorder); CPPUNIT_TEST(testBulletColor); - CPPUNIT_TEST(testTdf93883); CPPUNIT_TEST(testBulletCharAndFont); CPPUNIT_TEST(testBulletMarginAndIndentation); CPPUNIT_TEST(testParaMarginAndindentation); - CPPUNIT_TEST(testTdf91378); -//This test gives errors due to ATL -#if HAVE_FEATURE_ATL || !defined(_WIN32) - CPPUNIT_TEST(testBnc822341); -#endif - CPPUNIT_TEST(testMathObject); - CPPUNIT_TEST(testMathObjectPPT2010); - CPPUNIT_TEST(testTdf80224); - CPPUNIT_TEST(testExportTransitionsPPTX); - CPPUNIT_TEST(testTdf92527); - CPPUNIT_TEST(testDatetimeFieldNumberFormat); - CPPUNIT_TEST(testDatetimeFieldNumberFormatPPTX); - CPPUNIT_TEST(testSlideNumberField); - CPPUNIT_TEST(testSlideNumberFieldPPTX); - CPPUNIT_TEST(testSlideCountField); - CPPUNIT_TEST(testSlideNameField); - CPPUNIT_TEST(testExtFileField); - CPPUNIT_TEST(testAuthorField); - CPPUNIT_TEST(testTdf99224); CPPUNIT_TEST_SUITE_END(); @@ -245,7 +204,7 @@ void checkFontAttributes( const SdrTextObj* pObj, ItemValue nVal) } -void SdOOXMLExportTest::testBnc870233_1() +void SdOOXMLExportTest1::testBnc870233_1() { ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/pptx/bnc870233_1.pptx"), PPTX); xDocShRef = saveAndReload( xDocShRef, PPTX ); @@ -271,7 +230,7 @@ void SdOOXMLExportTest::testBnc870233_1() xDocShRef->DoClose(); } -void SdOOXMLExportTest::testBnc870233_2() +void SdOOXMLExportTest1::testBnc870233_2() { ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/pptx/bnc870233_2.pptx"), PPTX); xDocShRef = saveAndReload( xDocShRef, PPTX ); @@ -301,7 +260,7 @@ void SdOOXMLExportTest::testBnc870233_2() xDocShRef->DoClose(); } -void SdOOXMLExportTest::testN828390_4() +void SdOOXMLExportTest1::testN828390_4() { bool bPassed = false; ::sd::DrawDocShellRef xDocShRef = loadURL( m_directories.getURLFromSrc("/sd/qa/unit/data/n828390_4.odp"), ODP ); @@ -337,7 +296,7 @@ void SdOOXMLExportTest::testN828390_4() xDocShRef->DoClose(); } -void SdOOXMLExportTest::testN828390_5() +void SdOOXMLExportTest1::testN828390_5() { ::sd::DrawDocShellRef xDocShRef = loadURL( m_directories.getURLFromSrc("/sd/qa/unit/data/n828390_5.odp"), ODP ); @@ -357,7 +316,7 @@ void SdOOXMLExportTest::testN828390_5() xDocShRef->DoClose(); } -void SdOOXMLExportTest::testFdo71961() +void SdOOXMLExportTest1::testFdo71961() { ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/fdo71961.odp"), ODP); @@ -384,7 +343,7 @@ void SdOOXMLExportTest::testFdo71961() xDocShRef->DoClose(); } -void SdOOXMLExportTest::testN828390() +void SdOOXMLExportTest1::testN828390() { bool bPassed = false; ::sd::DrawDocShellRef xDocShRef = loadURL( m_directories.getURLFromSrc("/sd/qa/unit/data/pptx/n828390.pptx"), PPTX ); @@ -418,7 +377,7 @@ void SdOOXMLExportTest::testN828390() xDocShRef->DoClose(); } -void SdOOXMLExportTest::testBnc880763() +void SdOOXMLExportTest1::testBnc880763() { ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/pptx/bnc880763.pptx"), PPTX); xDocShRef = saveAndReload( xDocShRef, PPTX ); @@ -439,7 +398,7 @@ void SdOOXMLExportTest::testBnc880763() xDocShRef->DoClose(); } -void SdOOXMLExportTest::testBnc862510_5() +void SdOOXMLExportTest1::testBnc862510_5() { ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/pptx/bnc862510_5.pptx"), PPTX); xDocShRef = saveAndReload( xDocShRef, PPTX ); @@ -460,7 +419,7 @@ void SdOOXMLExportTest::testBnc862510_5() // In numbering a bullet could be defined as empty (no character). // When exporting to OOXML make sure that the bullet is ignored and // not written into the file. -void SdOOXMLExportTest::testBnc822347_EmptyBullet() +void SdOOXMLExportTest1::testBnc822347_EmptyBullet() { sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/bnc822347_EmptyBullet.odp"), ODP); xDocShRef = saveAndReload(xDocShRef, PPTX); @@ -489,7 +448,7 @@ void SdOOXMLExportTest::testBnc822347_EmptyBullet() } //Bullets not having any text following them are not getting exported to pptx correctly. -void SdOOXMLExportTest::testFdo90607() +void SdOOXMLExportTest1::testFdo90607() { sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/fdo90607.pptx"), PPTX); xDocShRef = saveAndReload(xDocShRef, PPTX); @@ -503,7 +462,7 @@ void SdOOXMLExportTest::testFdo90607() xDocShRef->DoClose(); } -void SdOOXMLExportTest::testFdo83751() +void SdOOXMLExportTest1::testFdo83751() { ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/pptx/fdo83751.pptx"), PPTX); xDocShRef = saveAndReload( xDocShRef, PPTX ); @@ -520,7 +479,7 @@ void SdOOXMLExportTest::testFdo83751() xDocShRef->DoClose(); } -void SdOOXMLExportTest::testFdo79731() +void SdOOXMLExportTest1::testFdo79731() { ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/fdo79731.odp"), ODP); xDocShRef = saveAndReload(xDocShRef, PPTX); @@ -529,7 +488,7 @@ void SdOOXMLExportTest::testFdo79731() xDocShRef->DoClose(); } -void SdOOXMLExportTest::testTableCellFillProperties() +void SdOOXMLExportTest1::testTableCellFillProperties() { std::shared_ptr< comphelper::ConfigurationChanges > batch(comphelper::ConfigurationChanges::create()); officecfg::Office::Common::Cache::GraphicManager::TotalCacheSize::set(sal_Int32(1), batch); @@ -578,7 +537,7 @@ void SdOOXMLExportTest::testTableCellFillProperties() xDocShRef->DoClose(); } -void SdOOXMLExportTest::testBulletStartNumber() +void SdOOXMLExportTest1::testBulletStartNumber() { ::sd::DrawDocShellRef xDocShRef = loadURL( m_directories.getURLFromSrc("/sd/qa/unit/data/pptx/n90255.pptx"), PPTX ); xDocShRef = saveAndReload( xDocShRef, PPTX ); @@ -593,7 +552,7 @@ void SdOOXMLExportTest::testBulletStartNumber() xDocShRef->DoClose(); } -void SdOOXMLExportTest::testLineStyle() +void SdOOXMLExportTest1::testLineStyle() { ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("sd/qa/unit/data/pptx/lineStyle.pptx"), PPTX); xDocShRef = saveAndReload( xDocShRef, PPTX ); @@ -609,7 +568,7 @@ void SdOOXMLExportTest::testLineStyle() xDocShRef->DoClose(); } -void SdOOXMLExportTest::testRightToLeftParaghraph() +void SdOOXMLExportTest1::testRightToLeftParaghraph() { ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/pptx/rightToLeftParagraph.pptx"), PPTX); @@ -627,7 +586,7 @@ void SdOOXMLExportTest::testRightToLeftParaghraph() xDocShRef->DoClose(); } -void SdOOXMLExportTest::testTextboxWithHyperlink() +void SdOOXMLExportTest1::testTextboxWithHyperlink() { ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/pptx/hyperlinktest.pptx"), PPTX); @@ -653,7 +612,7 @@ void SdOOXMLExportTest::testTextboxWithHyperlink() xDocShRef->DoClose(); } -void SdOOXMLExportTest::testBulletColor() +void SdOOXMLExportTest1::testBulletColor() { ::sd::DrawDocShellRef xDocShRef = loadURL( m_directories.getURLFromSrc("/sd/qa/unit/data/pptx/bulletColor.pptx"), PPTX ); @@ -672,17 +631,7 @@ void SdOOXMLExportTest::testBulletColor() xDocShRef->DoClose(); } -void SdOOXMLExportTest::testTdf93883() -{ - ::sd::DrawDocShellRef xDocShRef = loadURL( m_directories.getURLFromSrc("/sd/qa/unit/data/odp/tdf93883.odp"), ODP); - xDocShRef = saveAndReload( xDocShRef, PPTX ); - uno::Reference< beans::XPropertySet > xShape( getShapeFromPage( 0, 0, xDocShRef ) ); - uno::Reference<text::XTextRange> const xParagraph( getParagraphFromShape( 0, xShape ) ); - uno::Reference< beans::XPropertySet > xPropSet( xParagraph, uno::UNO_QUERY_THROW ); - CPPUNIT_ASSERT(!xPropSet->getPropertyValue("NumberingLevel").hasValue()); -} - -void SdOOXMLExportTest::testBulletCharAndFont() +void SdOOXMLExportTest1::testBulletCharAndFont() { ::sd::DrawDocShellRef xDocShRef = loadURL( m_directories.getURLFromSrc("/sd/qa/unit/data/odp/bulletCharAndFont.odp"), ODP); xDocShRef = saveAndReload( xDocShRef, PPTX ); @@ -710,154 +659,7 @@ void SdOOXMLExportTest::testBulletCharAndFont() xDocShRef->DoClose(); } -//This test gives errors due to ATL -#if HAVE_FEATURE_ATL || !defined(_WIN32) -void SdOOXMLExportTest::testBnc822341() -{ - // Check import / export of embedded text document - ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("sd/qa/unit/data/odp/bnc822341.odp"), ODP); - utl::TempFile tempFile1; - xDocShRef = saveAndReload( xDocShRef, PPTX, &tempFile1 ); - - // Export an LO specific ole object (imported from an ODP document) - { - xmlDocPtr pXmlDocCT = parseExport(tempFile1, "[Content_Types].xml"); - assertXPath(pXmlDocCT, - "/ContentType:Types/ContentType:Override[@ContentType='application/vnd.openxmlformats-officedocument.wordprocessingml.document']", - "PartName", - "/ppt/embeddings/oleObject1.docx"); - - xmlDocPtr pXmlDocRels = parseExport(tempFile1, "ppt/slides/_rels/slide1.xml.rels"); - assertXPath(pXmlDocRels, - "/rels:Relationships/rels:Relationship[@Target='../embeddings/oleObject1.docx']", - "Type", - "http://schemas.openxmlformats.org/officeDocument/2006/relationships/package"); - - xmlDocPtr pXmlDocContent = parseExport(tempFile1, "ppt/slides/slide1.xml"); - assertXPath(pXmlDocContent, - "/p:sld/p:cSld/p:spTree/p:graphicFrame/a:graphic/a:graphicData/p:oleObj", - "progId", - "Word.Document.12"); - - const SdrPage *pPage = GetPage( 1, xDocShRef ); - - const SdrObject* pObj = dynamic_cast<SdrObject*>( pPage->GetObj(0) ); - CPPUNIT_ASSERT_MESSAGE( "no object", pObj != nullptr); - CPPUNIT_ASSERT_EQUAL( static_cast<sal_uInt16>(OBJ_OLE2), pObj->GetObjIdentifier() ); - } - - utl::TempFile tempFile2; - xDocShRef = saveAndReload( xDocShRef, PPTX, &tempFile2 ); - - // Export an MS specific ole object (imported from a PPTX document) - { - xmlDocPtr pXmlDocCT = parseExport(tempFile2, "[Content_Types].xml"); - assertXPath(pXmlDocCT, - "/ContentType:Types/ContentType:Override[@ContentType='application/vnd.openxmlformats-officedocument.wordprocessingml.document']", - "PartName", - "/ppt/embeddings/oleObject1.docx"); - - xmlDocPtr pXmlDocRels = parseExport(tempFile2, "ppt/slides/_rels/slide1.xml.rels"); - assertXPath(pXmlDocRels, - "/rels:Relationships/rels:Relationship[@Target='../embeddings/oleObject1.docx']", - "Type", - "http://schemas.openxmlformats.org/officeDocument/2006/relationships/package"); - - xmlDocPtr pXmlDocContent = parseExport(tempFile2, "ppt/slides/slide1.xml"); - assertXPath(pXmlDocContent, - "/p:sld/p:cSld/p:spTree/p:graphicFrame/a:graphic/a:graphicData/p:oleObj", - "progId", - "Word.Document.12"); - - SdDrawDocument *pDoc = xDocShRef->GetDoc(); - CPPUNIT_ASSERT_MESSAGE( "no document", pDoc != nullptr ); - const SdrPage *pPage = pDoc->GetPage(1); - CPPUNIT_ASSERT_MESSAGE( "no page", pPage != nullptr ); - - const SdrObject* pObj = dynamic_cast<SdrObject*>( pPage->GetObj(0) ); - CPPUNIT_ASSERT_MESSAGE( "no object", pObj != nullptr); - CPPUNIT_ASSERT_EQUAL( static_cast<sal_uInt16>(OBJ_OLE2), pObj->GetObjIdentifier() ); - } - - xDocShRef->DoClose(); -} -#endif - -void SdOOXMLExportTest::testMathObject() -{ - // Check import / export of math object - ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("sd/qa/unit/data/odp/math.odp"), ODP); - utl::TempFile tempFile1; - xDocShRef = saveAndReload(xDocShRef, PPTX, &tempFile1); - - // Export an LO specific ole object (imported from an ODP document) - { - xmlDocPtr pXmlDocContent = parseExport(tempFile1, "ppt/slides/slide1.xml"); - assertXPath(pXmlDocContent, - "/p:sld/p:cSld/p:spTree/mc:AlternateContent/mc:Choice", - "Requires", - "a14"); - assertXPathContent(pXmlDocContent, - "/p:sld/p:cSld/p:spTree/mc:AlternateContent/mc:Choice/p:sp/p:txBody/a:p/a14:m/m:oMath/m:r[1]/m:t", - "a"); - - const SdrPage *pPage = GetPage(1, xDocShRef); - const SdrObject* pObj = dynamic_cast<SdrObject*>(pPage->GetObj(0)); - CPPUNIT_ASSERT_MESSAGE("no object", pObj != nullptr); - CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(OBJ_OLE2), pObj->GetObjIdentifier()); - } - - utl::TempFile tempFile2; - xDocShRef = saveAndReload( xDocShRef, PPTX, &tempFile2 ); - - // Export an MS specific ole object (imported from a PPTX document) - { - xmlDocPtr pXmlDocContent = parseExport(tempFile1, "ppt/slides/slide1.xml"); - assertXPath(pXmlDocContent, - "/p:sld/p:cSld/p:spTree/mc:AlternateContent/mc:Choice", - "Requires", - "a14"); - assertXPathContent(pXmlDocContent, - "/p:sld/p:cSld/p:spTree/mc:AlternateContent/mc:Choice/p:sp/p:txBody/a:p/a14:m/m:oMath/m:r[1]/m:t", - "a"); - - const SdrPage *pPage = GetPage(1, xDocShRef); - const SdrObject* pObj = dynamic_cast<SdrObject*>(pPage->GetObj(0)); - CPPUNIT_ASSERT_MESSAGE("no object", pObj != nullptr); - CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(OBJ_OLE2), pObj->GetObjIdentifier()); - } - - xDocShRef->DoClose(); -} - -void SdOOXMLExportTest::testMathObjectPPT2010() -{ - // Check import / export of math object - ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("sd/qa/unit/data/pptx/Math.pptx"), PPTX); - utl::TempFile tempFile1; - xDocShRef = saveAndReload(xDocShRef, PPTX, &tempFile1); - - // Export an MS specific ole object (imported from a PPTX document) - { - xmlDocPtr pXmlDocContent = parseExport(tempFile1, "ppt/slides/slide1.xml"); - assertXPath(pXmlDocContent, - "/p:sld/p:cSld/p:spTree/mc:AlternateContent/mc:Choice", - "Requires", - "a14"); - assertXPathContent(pXmlDocContent, - "/p:sld/p:cSld/p:spTree/mc:AlternateContent/mc:Choice/p:sp/p:txBody/a:p/a14:m/m:oMath/m:sSup/m:e/m:r[1]/m:t", - OUString::fromUtf8("\xf0\x9d\x91\x8e")); // non-BMP char - - const SdrPage *pPage = GetPage(1, xDocShRef); - const SdrObject* pObj = dynamic_cast<SdrObject*>(pPage->GetObj(0)); - CPPUNIT_ASSERT_MESSAGE("no object", pObj != nullptr); - CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(OBJ_OLE2), pObj->GetObjIdentifier()); - } - - xDocShRef->DoClose(); -} - -void SdOOXMLExportTest::testBulletMarginAndIndentation() +void SdOOXMLExportTest1::testBulletMarginAndIndentation() { ::sd::DrawDocShellRef xDocShRef = loadURL( m_directories.getURLFromSrc("/sd/qa/unit/data/pptx/bulletMarginAndIndent.pptx"), PPTX ); xDocShRef = saveAndReload( xDocShRef, PPTX ); @@ -877,7 +679,7 @@ void SdOOXMLExportTest::testBulletMarginAndIndentation() xDocShRef->DoClose(); } -void SdOOXMLExportTest::testParaMarginAndindentation() +void SdOOXMLExportTest1::testParaMarginAndindentation() { ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/pptx/paraMarginAndIndentation.pptx"), PPTX); @@ -899,7 +701,7 @@ void SdOOXMLExportTest::testParaMarginAndindentation() xDocShRef->DoClose(); } -void SdOOXMLExportTest::testCellLeftAndRightMargin() +void SdOOXMLExportTest1::testCellLeftAndRightMargin() { ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("sd/qa/unit/data/pptx/n90223.pptx"), PPTX); xDocShRef = saveAndReload( xDocShRef, PPTX ); @@ -930,7 +732,7 @@ void SdOOXMLExportTest::testCellLeftAndRightMargin() xDocShRef->DoClose(); } -void SdOOXMLExportTest::testMergedCells() +void SdOOXMLExportTest1::testMergedCells() { ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("sd/qa/unit/data/odp/cellspan.odp"), ODP); xDocShRef = saveAndReload( xDocShRef, PPTX ); @@ -947,7 +749,7 @@ void SdOOXMLExportTest::testMergedCells() CPPUNIT_ASSERT_EQUAL( OUString("2,3"), xText2->getString() ); } -void SdOOXMLExportTest::testTableCellBorder() +void SdOOXMLExportTest1::testTableCellBorder() { ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("sd/qa/unit/data/pptx/n90190.pptx"), PPTX); xDocShRef = saveAndReload( xDocShRef, PPTX ); @@ -997,41 +799,6 @@ void SdOOXMLExportTest::testTableCellBorder() xDocShRef->DoClose(); } -void SdOOXMLExportTest::testTdf80224() -{ - ::sd::DrawDocShellRef xDocShRef = loadURL( m_directories.getURLFromSrc("/sd/qa/unit/data/odp/tdf80224.odp"), ODP); - xDocShRef = saveAndReload( xDocShRef, PPTX ); - uno::Reference< beans::XPropertySet > xShape( getShapeFromPage( 0, 0, xDocShRef ) ); - - uno::Reference<text::XTextRange> const xParagraph( getParagraphFromShape( 0, xShape ) ); - uno::Reference< beans::XPropertySet > xPropSet( xParagraph->getStart(), uno::UNO_QUERY_THROW ); - - sal_Int32 nCharColor; - xPropSet->getPropertyValue("CharColor") >>= nCharColor; - CPPUNIT_ASSERT_EQUAL(sal_Int32(6644396), nCharColor); - xDocShRef->DoClose(); -} - -void SdOOXMLExportTest::testTdf91378() -{ - - //Check For Import and Export Both - ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/pptx/tdf91378.pptx"), PPTX); - for( sal_uInt32 i=0;i<2;i++) - { - SdDrawDocument *pDoc = xDocShRef->GetDoc(); - CPPUNIT_ASSERT_MESSAGE( "no document", pDoc != nullptr ); - uno::Reference<document::XDocumentPropertiesSupplier> xDocumentPropertiesSupplier( xDocShRef->GetModel(), uno::UNO_QUERY ); - uno::Reference<document::XDocumentProperties> xProps( xDocumentPropertiesSupplier->getDocumentProperties(), uno::UNO_QUERY ); - uno::Reference<beans::XPropertySet> xUDProps( xProps->getUserDefinedProperties(), uno::UNO_QUERY ); - OUString propValue; - xUDProps->getPropertyValue("Testing") >>= propValue; - CPPUNIT_ASSERT(propValue.isEmpty()); - xDocShRef = saveAndReload( xDocShRef, PPTX ); - } - xDocShRef->DoClose(); -} - bool checkTransitionOnPage(uno::Reference<drawing::XDrawPagesSupplier> xDoc, sal_Int32 nSlideNumber, sal_Int16 nExpectedTransitionType, sal_Int16 nExpectedTransitionSubType, bool bExpectedDirection = true) @@ -1073,269 +840,7 @@ bool checkTransitionOnPage(uno::Reference<drawing::XDrawPagesSupplier> xDoc, sal return true; } -void SdOOXMLExportTest::testExportTransitionsPPTX() -{ - sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/AllTransitions.odp"), ODP); - xDocShRef = saveAndReload(xDocShRef, PPTX); - uno::Reference<drawing::XDrawPagesSupplier> xDoc(xDocShRef->GetDoc()->getUnoModel(), uno::UNO_QUERY_THROW); - - // WIPE TRANSITIONS - CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 01, TransitionType::BARWIPE, TransitionSubType::TOPTOBOTTOM, false)); - CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 02, TransitionType::BARWIPE, TransitionSubType::LEFTTORIGHT)); - CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 03, TransitionType::BARWIPE, TransitionSubType::LEFTTORIGHT, false)); - CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 04, TransitionType::BARWIPE, TransitionSubType::TOPTOBOTTOM)); - - // CUT THROUGH BLACK - CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 31, TransitionType::BARWIPE, TransitionSubType::FADEOVERCOLOR)); - - // COMB - CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 41, TransitionType::PUSHWIPE, TransitionSubType::COMBHORIZONTAL)); - CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 42, TransitionType::PUSHWIPE, TransitionSubType::COMBVERTICAL)); - - // OUTSIDE TURNING CUBE - CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 57, TransitionType::MISCSHAPEWIPE, TransitionSubType::CORNERSOUT)); - // INSIDE TURNING CUBE - CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 60, TransitionType::MISCSHAPEWIPE, TransitionSubType::CORNERSIN)); - - // FALL - CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 61, TransitionType::MISCSHAPEWIPE, TransitionSubType::LEFTTORIGHT)); - - // VORTEX - CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 70, TransitionType::MISCSHAPEWIPE, TransitionSubType::VERTICAL)); - - // RIPPLE - CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 71, TransitionType::MISCSHAPEWIPE, TransitionSubType::HORIZONTAL)); - - // GLITTER - CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 72, TransitionType::MISCSHAPEWIPE, TransitionSubType::DIAMOND)); - - // HONEYCOMB - CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 73, TransitionType::MISCSHAPEWIPE, TransitionSubType::HEART)); - - // NEWSFLASH - CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 74, TransitionType::ZOOM, TransitionSubType::ROTATEIN)); - - // OVAL VERTICAL - cannot be exported to PPTX so fallback to circle - //CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 76, TransitionType::ELLIPSEWIPE, TransitionSubType::VERTICAL)); - CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 76, TransitionType::ELLIPSEWIPE, TransitionSubType::CIRCLE)); - - xDocShRef->DoClose(); -} - -void SdOOXMLExportTest::testTdf92527() -{ - // We draw a diamond in an empty document. A newly created diamond shape does not have - // CustomShapeGeometry - Path - Segments property, and previously DrawingML exporter - // did not export custom shapes which did not have CustomShapeGeometry - Path - Segments property. - sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/empty.fodp"), FODG ); - uno::Reference<css::lang::XMultiServiceFactory> xFactory(xDocShRef->GetDoc()->getUnoModel(), uno::UNO_QUERY); - uno::Reference<drawing::XShape> xShape1(xFactory->createInstance("com.sun.star.drawing.CustomShape"), uno::UNO_QUERY); - uno::Reference<drawing::XDrawPagesSupplier> xDoc1(xDocShRef->GetDoc()->getUnoModel(), uno::UNO_QUERY_THROW); - uno::Reference<drawing::XDrawPage> xPage1(xDoc1->getDrawPages()->getByIndex(0), uno::UNO_QUERY_THROW); - xPage1->add(xShape1); - xShape1->setSize(awt::Size(10000, 10000)); - xShape1->setPosition(awt::Point(1000, 1000)); - uno::Sequence<beans::PropertyValue> aShapeGeometry(comphelper::InitPropertySequence( - { - {"Type", uno::makeAny(OUString("diamond"))}, - })); - uno::Reference<beans::XPropertySet> xPropertySet1(xShape1, uno::UNO_QUERY); - xPropertySet1->setPropertyValue("CustomShapeGeometry", uno::makeAny(aShapeGeometry)); - - xDocShRef = saveAndReload(xDocShRef, PPTX); - - uno::Reference<drawing::XDrawPagesSupplier> xDoc2(xDocShRef->GetDoc()->getUnoModel(), uno::UNO_QUERY_THROW); - uno::Reference<drawing::XDrawPage> xPage2(xDoc2->getDrawPages()->getByIndex(0), uno::UNO_QUERY_THROW); - uno::Reference<drawing::XShape> xShape2(xPage2->getByIndex(0), uno::UNO_QUERY_THROW); - uno::Reference< beans::XPropertySet > xPropertySet2( xShape2, uno::UNO_QUERY_THROW ); - uno::Sequence<beans::PropertyValue> aProps; - xPropertySet2->getPropertyValue("CustomShapeGeometry") >>= aProps; - uno::Sequence<beans::PropertyValue> aPathProps; - for (int i = 0; i < aProps.getLength(); ++i) - { - const beans::PropertyValue& rProp = aProps[i]; - if (rProp.Name == "Path") - aPathProps = rProp.Value.get< uno::Sequence<beans::PropertyValue> >(); - } - uno::Sequence<drawing::EnhancedCustomShapeParameterPair> aCoordinates; - for (int i = 0; i < aPathProps.getLength(); ++i) - { - const beans::PropertyValue& rProp = aPathProps[i]; - if (rProp.Name == "Coordinates") - aCoordinates = rProp.Value.get< uno::Sequence<drawing::EnhancedCustomShapeParameterPair> >(); - } - - // 5 coordinate pairs, 1 MoveTo, 4 LineTo - CPPUNIT_ASSERT_EQUAL(sal_Int32(5), aCoordinates.getLength()); - xDocShRef->DoClose(); -} - -namespace { - -void matchNumberFormat( int nPage, uno::Reference< text::XTextField > xField) -{ - uno::Reference< beans::XPropertySet > xPropSet( xField, uno::UNO_QUERY_THROW ); - sal_Int32 nNumFmt; - xPropSet->getPropertyValue("NumberFormat") >>= nNumFmt; - switch( nPage ) - { - case 0: // 13/02/96 - CPPUNIT_ASSERT_EQUAL_MESSAGE("Number formats of Date fields don't match", sal_Int32(2), nNumFmt); - break; - case 1: // 13/02/1996 - CPPUNIT_ASSERT_EQUAL_MESSAGE("Number formats of Date fields don't match", sal_Int32(5), nNumFmt); - break; - case 2: // 13 February 1996 - CPPUNIT_ASSERT_EQUAL_MESSAGE("Number formats of Date fields don't match", sal_Int32(3), nNumFmt); - break; - case 3: // 13:49:38 - CPPUNIT_ASSERT_EQUAL_MESSAGE("Number formats of Time fields don't match", sal_Int32(2), nNumFmt); - break; - case 4: // 13:49 - CPPUNIT_ASSERT_EQUAL_MESSAGE("Number formats of Time fields don't match", sal_Int32(3), nNumFmt); - break; - case 5: // 01:49 PM - CPPUNIT_ASSERT_EQUAL_MESSAGE("Number formats of Time fields don't match", sal_Int32(6), nNumFmt); - break; - case 6: // 01:49:38 PM - CPPUNIT_ASSERT_EQUAL_MESSAGE("Number formats of Time fields don't match", sal_Int32(7), nNumFmt); - } -} - -} - -void SdOOXMLExportTest::testDatetimeFieldNumberFormat() -{ - ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/odp/numfmt.odp"), ODP); - - xDocShRef = saveAndReload( xDocShRef, PPTX ); - - for(sal_uInt16 i = 0; i <= 6; ++i) - { - matchNumberFormat( i, getTextFieldFromPage(0, 0, 0, i, xDocShRef) ); - } - - xDocShRef->DoClose(); -} - -void SdOOXMLExportTest::testDatetimeFieldNumberFormatPPTX() -{ - ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/pptx/numfmt.pptx"), PPTX); - - xDocShRef = saveAndReload( xDocShRef, PPTX ); - - for(sal_uInt16 i = 0; i <= 6; ++i) - { - matchNumberFormat( i, getTextFieldFromPage(0, 0, 0, i, xDocShRef) ); - } - - xDocShRef->DoClose(); -} - -void SdOOXMLExportTest::testSlideNumberField() -{ - ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/odp/slidenum_field.odp"), ODP); - - xDocShRef = saveAndReload( xDocShRef, PPTX ); - - uno::Reference< text::XTextField > xField = getTextFieldFromPage(0, 0, 0, 0, xDocShRef); - CPPUNIT_ASSERT_MESSAGE("Where is the text field?", xField.is() ); - - xDocShRef->DoClose(); -} - -void SdOOXMLExportTest::testSlideNumberFieldPPTX() -{ - ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/pptx/slidenum_field.pptx"), PPTX); - - xDocShRef = saveAndReload( xDocShRef, PPTX ); - - uno::Reference< text::XTextField > xField = getTextFieldFromPage(0, 0, 0, 0, xDocShRef); - CPPUNIT_ASSERT_MESSAGE("Where is the text field?", xField.is() ); - - xDocShRef->DoClose(); -} - -void SdOOXMLExportTest::testSlideCountField() -{ - ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/odp/slidecount_field.odp"), ODP); - - xDocShRef = saveAndReload( xDocShRef, PPTX ); - - uno::Reference< text::XTextField > xField = getTextFieldFromPage(0, 0, 0, 0, xDocShRef); - CPPUNIT_ASSERT_MESSAGE("Where is the text field?", xField.is() ); - - xDocShRef->DoClose(); -} - -void SdOOXMLExportTest::testSlideNameField() -{ - ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/odp/slidename_field.odp"), ODP); - - xDocShRef = saveAndReload( xDocShRef, PPTX ); - - uno::Reference< text::XTextField > xField = getTextFieldFromPage(0, 0, 0, 0, xDocShRef); - CPPUNIT_ASSERT_MESSAGE("Where is the text field?", xField.is() ); - - xDocShRef->DoClose(); -} - -void SdOOXMLExportTest::testExtFileField() -{ - ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/odp/extfile_field.odp"), ODP); - - xDocShRef = saveAndReload( xDocShRef, PPTX ); - - for(sal_uInt16 i = 0; i <= 3; ++i) - { - uno::Reference< text::XTextField > xField = getTextFieldFromPage(0, 0, i, 0, xDocShRef); - CPPUNIT_ASSERT_MESSAGE("Where is the text field?", xField.is() ); - - uno::Reference< beans::XPropertySet > xPropSet( xField, uno::UNO_QUERY_THROW ); - sal_Int32 nNumFmt; - xPropSet->getPropertyValue("FileFormat") >>= nNumFmt; - switch( i ) - { - case 0: // Path/File name - CPPUNIT_ASSERT_EQUAL_MESSAGE("File formats don't match", sal_Int32(0), nNumFmt); - break; - case 1: // Path - CPPUNIT_ASSERT_EQUAL_MESSAGE("File formats don't match", sal_Int32(1), nNumFmt); - break; - case 2: // File name without extension - CPPUNIT_ASSERT_EQUAL_MESSAGE("File formats don't match", sal_Int32(2), nNumFmt); - break; - case 3: // File name with extension - CPPUNIT_ASSERT_EQUAL_MESSAGE("File formats don't match", sal_Int32(3), nNumFmt); - } - } - - xDocShRef->DoClose(); -} - -void SdOOXMLExportTest::testAuthorField() -{ - ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/odp/author_field.odp"), ODP); - - xDocShRef = saveAndReload( xDocShRef, PPTX ); - - uno::Reference< text::XTextField > xField = getTextFieldFromPage(0, 0, 0, 0, xDocShRef); - CPPUNIT_ASSERT_MESSAGE("Where is the text field?", xField.is() ); - - xDocShRef->DoClose(); -} - -void SdOOXMLExportTest::testTdf99224() -{ - sd::DrawDocShellRef xShell = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/odp/tdf99224.odp"), ODP); - xShell = saveAndReload(xShell, PPTX); - uno::Reference<drawing::XDrawPage> xPage = getPage(0, xShell); - // This was 0: the image with text was lost on export. - CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), xPage->getCount()); - xShell->DoClose(); -} - -CPPUNIT_TEST_SUITE_REGISTRATION(SdOOXMLExportTest); +CPPUNIT_TEST_SUITE_REGISTRATION(SdOOXMLExportTest1); CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/sd/qa/unit/export-tests-ooxml2.cxx b/sd/qa/unit/export-tests-ooxml2.cxx new file mode 100644 index 000000000000..fc90c82cd7b6 --- /dev/null +++ b/sd/qa/unit/export-tests-ooxml2.cxx @@ -0,0 +1,677 @@ +/* -*- 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 <officecfg/Office/Common.hxx> +#include "sdmodeltestbase.hxx" +#include "Outliner.hxx" +#include <test/xmltesttools.hxx> +#include <comphelper/processfactory.hxx> +#include <comphelper/propertysequence.hxx> +#include <svl/stritem.hxx> +#include <editeng/editobj.hxx> +#include <editeng/outlobj.hxx> +#include <editeng/ulspitem.hxx> +#include <editeng/fhgtitem.hxx> +#include <editeng/escapementitem.hxx> +#include <editeng/colritem.hxx> +#include <editeng/fontitem.hxx> +#include <editeng/wghtitem.hxx> +#include <editeng/numitem.hxx> +#include <editeng/lrspitem.hxx> +#include <editeng/postitem.hxx> +#include <editeng/bulletitem.hxx> + +#include <oox/drawingml/drawingmltypes.hxx> + +#include <rsc/rscsfx.hxx> + +#include <svx/svdoutl.hxx> +#include <svx/svdotext.hxx> +#include <svx/svdoashp.hxx> +#include <svx/svdograf.hxx> +#include <svx/svdogrp.hxx> +#include <svx/svdomedia.hxx> +#include <svx/svdoole2.hxx> +#include <svx/xflclit.hxx> +#include <animations/animationnodehelper.hxx> +#include <unotools/mediadescriptor.hxx> +#include <unotools/ucbstreamhelper.hxx> +#include <rtl/ustring.hxx> + +#include <vcl/opengl/OpenGLWrapper.hxx> + +#include <com/sun/star/drawing/XDrawPage.hpp> +#include <com/sun/star/drawing/XDrawPagesSupplier.hpp> +#include <com/sun/star/animations/XAnimationNodeSupplier.hpp> +#include <com/sun/star/animations/XAnimationNode.hpp> +#include <com/sun/star/animations/XAnimate.hpp> +#include <com/sun/star/animations/TransitionType.hpp> +#include <com/sun/star/animations/TransitionSubType.hpp> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/chart/XChartDocument.hpp> +#include <com/sun/star/chart2/XChartDocument.hpp> +#include <com/sun/star/chart2/XDataSeriesContainer.hpp> +#include <com/sun/star/chart2/XCoordinateSystemContainer.hpp> +#include <com/sun/star/chart2/XChartTypeContainer.hpp> +#include <com/sun/star/chart2/data/XLabeledDataSequence.hpp> +#include <com/sun/star/chart2/data/XDataSequence.hpp> +#include <com/sun/star/chart2/data/XNumericalDataSequence.hpp> +#include <com/sun/star/awt/XBitmap.hpp> +#include <com/sun/star/awt/FontDescriptor.hpp> +#include <com/sun/star/graphic/XGraphic.hpp> +#include <com/sun/star/frame/XStorable.hpp> +#include <com/sun/star/drawing/EnhancedCustomShapeParameterPair.hpp> +#include <com/sun/star/drawing/FillStyle.hpp> +#include <com/sun/star/packages/zip/ZipFileAccess.hpp> +#include <com/sun/star/text/WritingMode2.hpp> +#include <com/sun/star/style/XStyleFamiliesSupplier.hpp> +#include <com/sun/star/table/BorderLine2.hpp> +#include <com/sun/star/table/XTable.hpp> +#include <com/sun/star/table/XMergeableCell.hpp> + +#include <svx/svdotable.hxx> +#include <config_features.h> +#include <com/sun/star/document/XDocumentPropertiesSupplier.hpp> + +using namespace css; +using namespace css::animations; + +class SdOOXMLExportTest2 : public SdModelTestBase, public XmlTestTools +{ +public: + void testTdf93883(); + void testTdf91378(); +//This test gives errors due to ATL +#if HAVE_FEATURE_ATL || !defined(_WIN32) + void testBnc822341(); +#endif + void testMathObject(); + void testMathObjectPPT2010(); + void testTdf80224(); + void testExportTransitionsPPTX(); + void testTdf92527(); + void testDatetimeFieldNumberFormat(); + void testDatetimeFieldNumberFormatPPTX(); + void testSlideNumberField(); + void testSlideNumberFieldPPTX(); + void testSlideCountField(); + void testSlideNameField(); + void testExtFileField(); + void testAuthorField(); + void testTdf99224(); + + CPPUNIT_TEST_SUITE(SdOOXMLExportTest2); + + CPPUNIT_TEST(testTdf93883); + CPPUNIT_TEST(testTdf91378); +//This test gives errors due to ATL +#if HAVE_FEATURE_ATL || !defined(_WIN32) + CPPUNIT_TEST(testBnc822341); +#endif + CPPUNIT_TEST(testMathObject); + CPPUNIT_TEST(testMathObjectPPT2010); + CPPUNIT_TEST(testTdf80224); + CPPUNIT_TEST(testExportTransitionsPPTX); + CPPUNIT_TEST(testTdf92527); + CPPUNIT_TEST(testDatetimeFieldNumberFormat); + CPPUNIT_TEST(testDatetimeFieldNumberFormatPPTX); + CPPUNIT_TEST(testSlideNumberField); + CPPUNIT_TEST(testSlideNumberFieldPPTX); + CPPUNIT_TEST(testSlideCountField); + CPPUNIT_TEST(testSlideNameField); + CPPUNIT_TEST(testExtFileField); + CPPUNIT_TEST(testAuthorField); + CPPUNIT_TEST(testTdf99224); + + CPPUNIT_TEST_SUITE_END(); + + virtual void registerNamespaces(xmlXPathContextPtr& pXmlXPathCtx) override + { + struct { char const * pPrefix; char const * pURI; } namespaces[] = + { + // OOXML + { "ContentType", "http://schemas.openxmlformats.org/package/2006/content-types" }, + { "rels", "http://schemas.openxmlformats.org/package/2006/relationships" }, + { "mc", "http://schemas.openxmlformats.org/markup-compatibility/2006" }, + { "v", "urn:schemas-microsoft-com:vml" }, + { "a", "http://schemas.openxmlformats.org/drawingml/2006/main" }, + { "c", "http://schemas.openxmlformats.org/drawingml/2006/chart" }, + { "m", "http://schemas.openxmlformats.org/officeDocument/2006/math" }, + { "pic", "http://schemas.openxmlformats.org/drawingml/2006/picture" }, + { "wp", "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" }, + { "p", "http://schemas.openxmlformats.org/presentationml/2006/main" }, + { "w", "http://schemas.openxmlformats.org/wordprocessingml/2006/main" }, + { "a14", "http://schemas.microsoft.com/office/drawing/2010/main" }, + { "wps", "http://schemas.microsoft.com/office/word/2010/wordprocessingShape" }, + { "wpg", "http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" }, + }; + for (size_t i = 0; i < SAL_N_ELEMENTS(namespaces); ++i) + { + xmlXPathRegisterNs(pXmlXPathCtx, + reinterpret_cast<xmlChar const *>(namespaces[i].pPrefix), + reinterpret_cast<xmlChar const *>(namespaces[i].pURI)); + } + } + + xmlDocPtr parseExport(utl::TempFile & rTempFile, OUString const& rStreamName) + { + OUString const url(rTempFile.GetURL()); + uno::Reference<packages::zip::XZipFileAccess2> const xZipNames( + packages::zip::ZipFileAccess::createWithURL( + comphelper::getComponentContext(m_xSFactory), url)); + uno::Reference<io::XInputStream> const xInputStream( + xZipNames->getByName(rStreamName), uno::UNO_QUERY); + std::unique_ptr<SvStream> const pStream( + utl::UcbStreamHelper::CreateStream(xInputStream, true)); + xmlDocPtr const pXmlDoc = parseXmlStream(pStream.get()); + pXmlDoc->name = reinterpret_cast<char *>(xmlStrdup( + reinterpret_cast<xmlChar const *>(OUStringToOString(url, RTL_TEXTENCODING_UTF8).getStr()))); + return pXmlDoc; + } +}; + +void SdOOXMLExportTest2::testTdf93883() +{ + ::sd::DrawDocShellRef xDocShRef = loadURL( m_directories.getURLFromSrc("/sd/qa/unit/data/odp/tdf93883.odp"), ODP); + xDocShRef = saveAndReload( xDocShRef, PPTX ); + uno::Reference< beans::XPropertySet > xShape( getShapeFromPage( 0, 0, xDocShRef ) ); + uno::Reference<text::XTextRange> const xParagraph( getParagraphFromShape( 0, xShape ) ); + uno::Reference< beans::XPropertySet > xPropSet( xParagraph, uno::UNO_QUERY_THROW ); + CPPUNIT_ASSERT(!xPropSet->getPropertyValue("NumberingLevel").hasValue()); +} + +//This test gives errors due to ATL +#if HAVE_FEATURE_ATL || !defined(_WIN32) +void SdOOXMLExportTest2::testBnc822341() +{ + // Check import / export of embedded text document + ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("sd/qa/unit/data/odp/bnc822341.odp"), ODP); + utl::TempFile tempFile1; + xDocShRef = saveAndReload( xDocShRef, PPTX, &tempFile1 ); + + // Export an LO specific ole object (imported from an ODP document) + { + xmlDocPtr pXmlDocCT = parseExport(tempFile1, "[Content_Types].xml"); + assertXPath(pXmlDocCT, + "/ContentType:Types/ContentType:Override[@ContentType='application/vnd.openxmlformats-officedocument.wordprocessingml.document']", + "PartName", + "/ppt/embeddings/oleObject1.docx"); + + xmlDocPtr pXmlDocRels = parseExport(tempFile1, "ppt/slides/_rels/slide1.xml.rels"); + assertXPath(pXmlDocRels, + "/rels:Relationships/rels:Relationship[@Target='../embeddings/oleObject1.docx']", + "Type", + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/package"); + + xmlDocPtr pXmlDocContent = parseExport(tempFile1, "ppt/slides/slide1.xml"); + assertXPath(pXmlDocContent, + "/p:sld/p:cSld/p:spTree/p:graphicFrame/a:graphic/a:graphicData/p:oleObj", + "progId", + "Word.Document.12"); + + const SdrPage *pPage = GetPage( 1, xDocShRef ); + + const SdrObject* pObj = dynamic_cast<SdrObject*>( pPage->GetObj(0) ); + CPPUNIT_ASSERT_MESSAGE( "no object", pObj != nullptr); + CPPUNIT_ASSERT_EQUAL( static_cast<sal_uInt16>(OBJ_OLE2), pObj->GetObjIdentifier() ); + } + + utl::TempFile tempFile2; + xDocShRef = saveAndReload( xDocShRef, PPTX, &tempFile2 ); + + // Export an MS specific ole object (imported from a PPTX document) + { + xmlDocPtr pXmlDocCT = parseExport(tempFile2, "[Content_Types].xml"); + assertXPath(pXmlDocCT, + "/ContentType:Types/ContentType:Override[@ContentType='application/vnd.openxmlformats-officedocument.wordprocessingml.document']", + "PartName", + "/ppt/embeddings/oleObject1.docx"); + + xmlDocPtr pXmlDocRels = parseExport(tempFile2, "ppt/slides/_rels/slide1.xml.rels"); + assertXPath(pXmlDocRels, + "/rels:Relationships/rels:Relationship[@Target='../embeddings/oleObject1.docx']", + "Type", + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/package"); + + xmlDocPtr pXmlDocContent = parseExport(tempFile2, "ppt/slides/slide1.xml"); + assertXPath(pXmlDocContent, + "/p:sld/p:cSld/p:spTree/p:graphicFrame/a:graphic/a:graphicData/p:oleObj", + "progId", + "Word.Document.12"); + + SdDrawDocument *pDoc = xDocShRef->GetDoc(); + CPPUNIT_ASSERT_MESSAGE( "no document", pDoc != nullptr ); + const SdrPage *pPage = pDoc->GetPage(1); + CPPUNIT_ASSERT_MESSAGE( "no page", pPage != nullptr ); + + const SdrObject* pObj = dynamic_cast<SdrObject*>( pPage->GetObj(0) ); + CPPUNIT_ASSERT_MESSAGE( "no object", pObj != nullptr); + CPPUNIT_ASSERT_EQUAL( static_cast<sal_uInt16>(OBJ_OLE2), pObj->GetObjIdentifier() ); + } + + xDocShRef->DoClose(); +} +#endif + +void SdOOXMLExportTest2::testMathObject() +{ + // Check import / export of math object + ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("sd/qa/unit/data/odp/math.odp"), ODP); + utl::TempFile tempFile1; + xDocShRef = saveAndReload(xDocShRef, PPTX, &tempFile1); + + // Export an LO specific ole object (imported from an ODP document) + { + xmlDocPtr pXmlDocContent = parseExport(tempFile1, "ppt/slides/slide1.xml"); + assertXPath(pXmlDocContent, + "/p:sld/p:cSld/p:spTree/mc:AlternateContent/mc:Choice", + "Requires", + "a14"); + assertXPathContent(pXmlDocContent, + "/p:sld/p:cSld/p:spTree/mc:AlternateContent/mc:Choice/p:sp/p:txBody/a:p/a14:m/m:oMath/m:r[1]/m:t", + "a"); + + const SdrPage *pPage = GetPage(1, xDocShRef); + const SdrObject* pObj = dynamic_cast<SdrObject*>(pPage->GetObj(0)); + CPPUNIT_ASSERT_MESSAGE("no object", pObj != nullptr); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(OBJ_OLE2), pObj->GetObjIdentifier()); + } + + utl::TempFile tempFile2; + xDocShRef = saveAndReload( xDocShRef, PPTX, &tempFile2 ); + + // Export an MS specific ole object (imported from a PPTX document) + { + xmlDocPtr pXmlDocContent = parseExport(tempFile1, "ppt/slides/slide1.xml"); + assertXPath(pXmlDocContent, + "/p:sld/p:cSld/p:spTree/mc:AlternateContent/mc:Choice", + "Requires", + "a14"); + assertXPathContent(pXmlDocContent, + "/p:sld/p:cSld/p:spTree/mc:AlternateContent/mc:Choice/p:sp/p:txBody/a:p/a14:m/m:oMath/m:r[1]/m:t", + "a"); + + const SdrPage *pPage = GetPage(1, xDocShRef); + const SdrObject* pObj = dynamic_cast<SdrObject*>(pPage->GetObj(0)); + CPPUNIT_ASSERT_MESSAGE("no object", pObj != nullptr); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(OBJ_OLE2), pObj->GetObjIdentifier()); + } + + xDocShRef->DoClose(); +} + +void SdOOXMLExportTest2::testMathObjectPPT2010() +{ + // Check import / export of math object + ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("sd/qa/unit/data/pptx/Math.pptx"), PPTX); + utl::TempFile tempFile1; + xDocShRef = saveAndReload(xDocShRef, PPTX, &tempFile1); + + // Export an MS specific ole object (imported from a PPTX document) + { + xmlDocPtr pXmlDocContent = parseExport(tempFile1, "ppt/slides/slide1.xml"); + assertXPath(pXmlDocContent, + "/p:sld/p:cSld/p:spTree/mc:AlternateContent/mc:Choice", + "Requires", + "a14"); + assertXPathContent(pXmlDocContent, + "/p:sld/p:cSld/p:spTree/mc:AlternateContent/mc:Choice/p:sp/p:txBody/a:p/a14:m/m:oMath/m:sSup/m:e/m:r[1]/m:t", + OUString::fromUtf8("\xf0\x9d\x91\x8e")); // non-BMP char + + const SdrPage *pPage = GetPage(1, xDocShRef); + const SdrObject* pObj = dynamic_cast<SdrObject*>(pPage->GetObj(0)); + CPPUNIT_ASSERT_MESSAGE("no object", pObj != nullptr); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(OBJ_OLE2), pObj->GetObjIdentifier()); + } + + xDocShRef->DoClose(); +} + +void SdOOXMLExportTest2::testTdf80224() +{ + ::sd::DrawDocShellRef xDocShRef = loadURL( m_directories.getURLFromSrc("/sd/qa/unit/data/odp/tdf80224.odp"), ODP); + xDocShRef = saveAndReload( xDocShRef, PPTX ); + uno::Reference< beans::XPropertySet > xShape( getShapeFromPage( 0, 0, xDocShRef ) ); + + uno::Reference<text::XTextRange> const xParagraph( getParagraphFromShape( 0, xShape ) ); + uno::Reference< beans::XPropertySet > xPropSet( xParagraph->getStart(), uno::UNO_QUERY_THROW ); + + sal_Int32 nCharColor; + xPropSet->getPropertyValue("CharColor") >>= nCharColor; + CPPUNIT_ASSERT_EQUAL(sal_Int32(6644396), nCharColor); + xDocShRef->DoClose(); +} + +void SdOOXMLExportTest2::testTdf91378() +{ + + //Check For Import and Export Both + ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/pptx/tdf91378.pptx"), PPTX); + for( sal_uInt32 i=0;i<2;i++) + { + SdDrawDocument *pDoc = xDocShRef->GetDoc(); + CPPUNIT_ASSERT_MESSAGE( "no document", pDoc != nullptr ); + uno::Reference<document::XDocumentPropertiesSupplier> xDocumentPropertiesSupplier( xDocShRef->GetModel(), uno::UNO_QUERY ); + uno::Reference<document::XDocumentProperties> xProps( xDocumentPropertiesSupplier->getDocumentProperties(), uno::UNO_QUERY ); + uno::Reference<beans::XPropertySet> xUDProps( xProps->getUserDefinedProperties(), uno::UNO_QUERY ); + OUString propValue; + xUDProps->getPropertyValue("Testing") >>= propValue; + CPPUNIT_ASSERT(propValue.isEmpty()); + xDocShRef = saveAndReload( xDocShRef, PPTX ); + } + xDocShRef->DoClose(); +} + +bool checkTransitionOnPage(uno::Reference<drawing::XDrawPagesSupplier> xDoc, sal_Int32 nSlideNumber, + sal_Int16 nExpectedTransitionType, sal_Int16 nExpectedTransitionSubType, + bool bExpectedDirection = true) +{ + sal_Int32 nSlideIndex = nSlideNumber - 1; + + CPPUNIT_ASSERT_MESSAGE("Slide/Page index out of range", nSlideIndex < xDoc->getDrawPages()->getCount()); + + uno::Reference<drawing::XDrawPage> xPage(xDoc->getDrawPages()->getByIndex(nSlideIndex), uno::UNO_QUERY_THROW); + uno::Reference<beans::XPropertySet> xPropSet(xPage, uno::UNO_QUERY); + + sal_Int16 nTransitionType = 0; + xPropSet->getPropertyValue("TransitionType") >>= nTransitionType; + + if (nExpectedTransitionType != nTransitionType) + { + std::cerr << "Transition type: " << nTransitionType << " " << nExpectedTransitionType << std::endl; + return false; + } + + sal_Int16 nTransitionSubtype = 0; + xPropSet->getPropertyValue("TransitionSubtype") >>= nTransitionSubtype; + if (nExpectedTransitionSubType != nTransitionSubtype) + { + std::cerr << "Transition Subtype: " << nTransitionSubtype << " " << nExpectedTransitionSubType << std::endl; + return false; + } + + bool bDirection = false; + xPropSet->getPropertyValue("TransitionDirection") >>= bDirection; + + if (bExpectedDirection != bDirection) + { + std::cerr << "Transition Direction: " << (bExpectedDirection ? "normal" : "reversed") + << " " << (bDirection ? "normal" : "reversed") << std::endl; + return false; + } + + return true; +} + +void SdOOXMLExportTest2::testExportTransitionsPPTX() +{ + sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/AllTransitions.odp"), ODP); + xDocShRef = saveAndReload(xDocShRef, PPTX); + uno::Reference<drawing::XDrawPagesSupplier> xDoc(xDocShRef->GetDoc()->getUnoModel(), uno::UNO_QUERY_THROW); + + // WIPE TRANSITIONS + CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 01, TransitionType::BARWIPE, TransitionSubType::TOPTOBOTTOM, false)); + CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 02, TransitionType::BARWIPE, TransitionSubType::LEFTTORIGHT)); + CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 03, TransitionType::BARWIPE, TransitionSubType::LEFTTORIGHT, false)); + CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 04, TransitionType::BARWIPE, TransitionSubType::TOPTOBOTTOM)); + + // CUT THROUGH BLACK + CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 31, TransitionType::BARWIPE, TransitionSubType::FADEOVERCOLOR)); + + // COMB + CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 41, TransitionType::PUSHWIPE, TransitionSubType::COMBHORIZONTAL)); + CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 42, TransitionType::PUSHWIPE, TransitionSubType::COMBVERTICAL)); + + // OUTSIDE TURNING CUBE + CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 57, TransitionType::MISCSHAPEWIPE, TransitionSubType::CORNERSOUT)); + // INSIDE TURNING CUBE + CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 60, TransitionType::MISCSHAPEWIPE, TransitionSubType::CORNERSIN)); + + // FALL + CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 61, TransitionType::MISCSHAPEWIPE, TransitionSubType::LEFTTORIGHT)); + + // VORTEX + CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 70, TransitionType::MISCSHAPEWIPE, TransitionSubType::VERTICAL)); + + // RIPPLE + CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 71, TransitionType::MISCSHAPEWIPE, TransitionSubType::HORIZONTAL)); + + // GLITTER + CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 72, TransitionType::MISCSHAPEWIPE, TransitionSubType::DIAMOND)); + + // HONEYCOMB + CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 73, TransitionType::MISCSHAPEWIPE, TransitionSubType::HEART)); + + // NEWSFLASH + CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 74, TransitionType::ZOOM, TransitionSubType::ROTATEIN)); + + // OVAL VERTICAL - cannot be exported to PPTX so fallback to circle + //CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 76, TransitionType::ELLIPSEWIPE, TransitionSubType::VERTICAL)); + CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 76, TransitionType::ELLIPSEWIPE, TransitionSubType::CIRCLE)); + + xDocShRef->DoClose(); +} + +void SdOOXMLExportTest2::testTdf92527() +{ + // We draw a diamond in an empty document. A newly created diamond shape does not have + // CustomShapeGeometry - Path - Segments property, and previously DrawingML exporter + // did not export custom shapes which did not have CustomShapeGeometry - Path - Segments property. + sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/empty.fodp"), FODG ); + uno::Reference<css::lang::XMultiServiceFactory> xFactory(xDocShRef->GetDoc()->getUnoModel(), uno::UNO_QUERY); + uno::Reference<drawing::XShape> xShape1(xFactory->createInstance("com.sun.star.drawing.CustomShape"), uno::UNO_QUERY); + uno::Reference<drawing::XDrawPagesSupplier> xDoc1(xDocShRef->GetDoc()->getUnoModel(), uno::UNO_QUERY_THROW); + uno::Reference<drawing::XDrawPage> xPage1(xDoc1->getDrawPages()->getByIndex(0), uno::UNO_QUERY_THROW); + xPage1->add(xShape1); + xShape1->setSize(awt::Size(10000, 10000)); + xShape1->setPosition(awt::Point(1000, 1000)); + uno::Sequence<beans::PropertyValue> aShapeGeometry(comphelper::InitPropertySequence( + { + {"Type", uno::makeAny(OUString("diamond"))}, + })); + uno::Reference<beans::XPropertySet> xPropertySet1(xShape1, uno::UNO_QUERY); + xPropertySet1->setPropertyValue("CustomShapeGeometry", uno::makeAny(aShapeGeometry)); + + xDocShRef = saveAndReload(xDocShRef, PPTX); + + uno::Reference<drawing::XDrawPagesSupplier> xDoc2(xDocShRef->GetDoc()->getUnoModel(), uno::UNO_QUERY_THROW); + uno::Reference<drawing::XDrawPage> xPage2(xDoc2->getDrawPages()->getByIndex(0), uno::UNO_QUERY_THROW); + uno::Reference<drawing::XShape> xShape2(xPage2->getByIndex(0), uno::UNO_QUERY_THROW); + uno::Reference< beans::XPropertySet > xPropertySet2( xShape2, uno::UNO_QUERY_THROW ); + uno::Sequence<beans::PropertyValue> aProps; + xPropertySet2->getPropertyValue("CustomShapeGeometry") >>= aProps; + uno::Sequence<beans::PropertyValue> aPathProps; + for (int i = 0; i < aProps.getLength(); ++i) + { + const beans::PropertyValue& rProp = aProps[i]; + if (rProp.Name == "Path") + aPathProps = rProp.Value.get< uno::Sequence<beans::PropertyValue> >(); + } + uno::Sequence<drawing::EnhancedCustomShapeParameterPair> aCoordinates; + for (int i = 0; i < aPathProps.getLength(); ++i) + { + const beans::PropertyValue& rProp = aPathProps[i]; + if (rProp.Name == "Coordinates") + aCoordinates = rProp.Value.get< uno::Sequence<drawing::EnhancedCustomShapeParameterPair> >(); + } + + // 5 coordinate pairs, 1 MoveTo, 4 LineTo + CPPUNIT_ASSERT_EQUAL(sal_Int32(5), aCoordinates.getLength()); + xDocShRef->DoClose(); +} + +namespace { + +void matchNumberFormat( int nPage, uno::Reference< text::XTextField > xField) +{ + uno::Reference< beans::XPropertySet > xPropSet( xField, uno::UNO_QUERY_THROW ); + sal_Int32 nNumFmt; + xPropSet->getPropertyValue("NumberFormat") >>= nNumFmt; + switch( nPage ) + { + case 0: // 13/02/96 + CPPUNIT_ASSERT_EQUAL_MESSAGE("Number formats of Date fields don't match", sal_Int32(2), nNumFmt); + break; + case 1: // 13/02/1996 + CPPUNIT_ASSERT_EQUAL_MESSAGE("Number formats of Date fields don't match", sal_Int32(5), nNumFmt); + break; + case 2: // 13 February 1996 + CPPUNIT_ASSERT_EQUAL_MESSAGE("Number formats of Date fields don't match", sal_Int32(3), nNumFmt); + break; + case 3: // 13:49:38 + CPPUNIT_ASSERT_EQUAL_MESSAGE("Number formats of Time fields don't match", sal_Int32(2), nNumFmt); + break; + case 4: // 13:49 + CPPUNIT_ASSERT_EQUAL_MESSAGE("Number formats of Time fields don't match", sal_Int32(3), nNumFmt); + break; + case 5: // 01:49 PM + CPPUNIT_ASSERT_EQUAL_MESSAGE("Number formats of Time fields don't match", sal_Int32(6), nNumFmt); + break; + case 6: // 01:49:38 PM + CPPUNIT_ASSERT_EQUAL_MESSAGE("Number formats of Time fields don't match", sal_Int32(7), nNumFmt); + } +} + +} + +void SdOOXMLExportTest2::testDatetimeFieldNumberFormat() +{ + ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/odp/numfmt.odp"), ODP); + + xDocShRef = saveAndReload( xDocShRef, PPTX ); + + for(sal_uInt16 i = 0; i <= 6; ++i) + { + matchNumberFormat( i, getTextFieldFromPage(0, 0, 0, i, xDocShRef) ); + } + + xDocShRef->DoClose(); +} + +void SdOOXMLExportTest2::testDatetimeFieldNumberFormatPPTX() +{ + ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/pptx/numfmt.pptx"), PPTX); + + xDocShRef = saveAndReload( xDocShRef, PPTX ); + + for(sal_uInt16 i = 0; i <= 6; ++i) + { + matchNumberFormat( i, getTextFieldFromPage(0, 0, 0, i, xDocShRef) ); + } + + xDocShRef->DoClose(); +} + +void SdOOXMLExportTest2::testSlideNumberField() +{ + ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/odp/slidenum_field.odp"), ODP); + + xDocShRef = saveAndReload( xDocShRef, PPTX ); + + uno::Reference< text::XTextField > xField = getTextFieldFromPage(0, 0, 0, 0, xDocShRef); + CPPUNIT_ASSERT_MESSAGE("Where is the text field?", xField.is() ); + + xDocShRef->DoClose(); +} + +void SdOOXMLExportTest2::testSlideNumberFieldPPTX() +{ + ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/pptx/slidenum_field.pptx"), PPTX); + + xDocShRef = saveAndReload( xDocShRef, PPTX ); + + uno::Reference< text::XTextField > xField = getTextFieldFromPage(0, 0, 0, 0, xDocShRef); + CPPUNIT_ASSERT_MESSAGE("Where is the text field?", xField.is() ); + + xDocShRef->DoClose(); +} + +void SdOOXMLExportTest2::testSlideCountField() +{ + ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/odp/slidecount_field.odp"), ODP); + + xDocShRef = saveAndReload( xDocShRef, PPTX ); + + uno::Reference< text::XTextField > xField = getTextFieldFromPage(0, 0, 0, 0, xDocShRef); + CPPUNIT_ASSERT_MESSAGE("Where is the text field?", xField.is() ); + + xDocShRef->DoClose(); +} + +void SdOOXMLExportTest2::testSlideNameField() +{ + ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/odp/slidename_field.odp"), ODP); + + xDocShRef = saveAndReload( xDocShRef, PPTX ); + + uno::Reference< text::XTextField > xField = getTextFieldFromPage(0, 0, 0, 0, xDocShRef); + CPPUNIT_ASSERT_MESSAGE("Where is the text field?", xField.is() ); + + xDocShRef->DoClose(); +} + +void SdOOXMLExportTest2::testExtFileField() +{ + ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/odp/extfile_field.odp"), ODP); + + xDocShRef = saveAndReload( xDocShRef, PPTX ); + + for(sal_uInt16 i = 0; i <= 3; ++i) + { + uno::Reference< text::XTextField > xField = getTextFieldFromPage(0, 0, i, 0, xDocShRef); + CPPUNIT_ASSERT_MESSAGE("Where is the text field?", xField.is() ); + + uno::Reference< beans::XPropertySet > xPropSet( xField, uno::UNO_QUERY_THROW ); + sal_Int32 nNumFmt; + xPropSet->getPropertyValue("FileFormat") >>= nNumFmt; + switch( i ) + { + case 0: // Path/File name + CPPUNIT_ASSERT_EQUAL_MESSAGE("File formats don't match", sal_Int32(0), nNumFmt); + break; + case 1: // Path + CPPUNIT_ASSERT_EQUAL_MESSAGE("File formats don't match", sal_Int32(1), nNumFmt); + break; + case 2: // File name without extension + CPPUNIT_ASSERT_EQUAL_MESSAGE("File formats don't match", sal_Int32(2), nNumFmt); + break; + case 3: // File name with extension + CPPUNIT_ASSERT_EQUAL_MESSAGE("File formats don't match", sal_Int32(3), nNumFmt); + } + } + + xDocShRef->DoClose(); +} + +void SdOOXMLExportTest2::testAuthorField() +{ + ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/odp/author_field.odp"), ODP); + + xDocShRef = saveAndReload( xDocShRef, PPTX ); + + uno::Reference< text::XTextField > xField = getTextFieldFromPage(0, 0, 0, 0, xDocShRef); + CPPUNIT_ASSERT_MESSAGE("Where is the text field?", xField.is() ); + + xDocShRef->DoClose(); +} + +void SdOOXMLExportTest2::testTdf99224() +{ + sd::DrawDocShellRef xShell = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/odp/tdf99224.odp"), ODP); + xShell = saveAndReload(xShell, PPTX); + uno::Reference<drawing::XDrawPage> xPage = getPage(0, xShell); + // This was 0: the image with text was lost on export. + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), xPage->getCount()); + xShell->DoClose(); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(SdOOXMLExportTest2); + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |