diff options
Diffstat (limited to 'sw')
-rw-r--r-- | sw/CppunitTest_sw_odfimport.mk | 1 | ||||
-rw-r--r-- | sw/CppunitTest_sw_uiwriter.mk | 1 | ||||
-rw-r--r-- | sw/CppunitTest_sw_ww8import.mk | 1 | ||||
-rw-r--r-- | sw/qa/extras/inc/swmodeltestbase.hxx | 16 | ||||
-rw-r--r-- | sw/qa/extras/ooxmlexport/ooxmlexport.cxx | 62 |
5 files changed, 68 insertions, 13 deletions
diff --git a/sw/CppunitTest_sw_odfimport.mk b/sw/CppunitTest_sw_odfimport.mk index 7bbdab876e81..a37b4380fa25 100644 --- a/sw/CppunitTest_sw_odfimport.mk +++ b/sw/CppunitTest_sw_odfimport.mk @@ -26,6 +26,7 @@ $(eval $(call gb_CppunitTest_use_libraries,sw_odfimport, \ unotest \ vcl \ tl \ + utl \ $(gb_UWINAPI) \ )) diff --git a/sw/CppunitTest_sw_uiwriter.mk b/sw/CppunitTest_sw_uiwriter.mk index b4c125769bf8..721cbf6bfe8b 100644 --- a/sw/CppunitTest_sw_uiwriter.mk +++ b/sw/CppunitTest_sw_uiwriter.mk @@ -26,6 +26,7 @@ $(eval $(call gb_CppunitTest_use_libraries,sw_uiwriter, \ unotest \ vcl \ tl \ + utl \ $(gb_UWINAPI) \ )) diff --git a/sw/CppunitTest_sw_ww8import.mk b/sw/CppunitTest_sw_ww8import.mk index 93acdbf98ef7..d2282f5dd298 100644 --- a/sw/CppunitTest_sw_ww8import.mk +++ b/sw/CppunitTest_sw_ww8import.mk @@ -23,6 +23,7 @@ $(eval $(call gb_CppunitTest_use_libraries,sw_ww8import, \ test \ unotest \ sw \ + utl \ $(gb_UWINAPI) \ )) diff --git a/sw/qa/extras/inc/swmodeltestbase.hxx b/sw/qa/extras/inc/swmodeltestbase.hxx index 79eb8af578ed..ba64155ae001 100644 --- a/sw/qa/extras/inc/swmodeltestbase.hxx +++ b/sw/qa/extras/inc/swmodeltestbase.hxx @@ -89,7 +89,11 @@ class SwModelTestBase : public test::BootstrapFixture, public unotest::MacrosTes { public: SwModelTestBase(const char* pTestDocumentPath = "", const char* pFilter = "") - : mpXmlBuffer(0), mpTestDocumentPath(pTestDocumentPath), mpFilter(pFilter) + : mpXmlBuffer(0), + mpTestDocumentPath(pTestDocumentPath), + mpFilter(pFilter), + m_nStartTime(0), + m_bExported(false) { } @@ -419,12 +423,12 @@ protected: uno::Sequence<beans::PropertyValue> aArgs(1); aArgs[0].Name = "FilterName"; aArgs[0].Value <<= OUString::createFromAscii(pFilter); - utl::TempFile aTempFile; - aTempFile.EnableKillingFile(); - xStorable->storeToURL(aTempFile.GetURL(), aArgs); + m_aTempFile.EnableKillingFile(); + xStorable->storeToURL(m_aTempFile.GetURL(), aArgs); uno::Reference<lang::XComponent> xComponent(xStorable, uno::UNO_QUERY); xComponent->dispose(); - mxComponent = loadFromDesktop(aTempFile.GetURL(), "com.sun.star.text.TextDocument"); + m_bExported = true; + mxComponent = loadFromDesktop(m_aTempFile.GetURL(), "com.sun.star.text.TextDocument"); if (mpXmlBuffer) { xmlBufferFree(mpXmlBuffer); @@ -478,6 +482,8 @@ protected: void (T::*pMethod)(); }; sal_uInt32 m_nStartTime; + utl::TempFile m_aTempFile; + bool m_bExported; ///< Does m_aTempFile already contain something useful? }; /** diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx index e624bfb91585..e59f13e68fd2 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx @@ -106,12 +106,11 @@ protected: xmlDocPtr Test::parseExport(const OUString& rStreamName) { - // Create the zip file. - utl::TempFile aTempFile; - save("Office Open XML Text", aTempFile); + if (!m_bExported) + return 0; // Read the XML stream we're interested in. - uno::Reference<packages::zip::XZipFileAccess2> xNameAccess = packages::zip::ZipFileAccess::createWithURL(comphelper::getComponentContext(m_xSFactory), aTempFile.GetURL()); + uno::Reference<packages::zip::XZipFileAccess2> xNameAccess = packages::zip::ZipFileAccess::createWithURL(comphelper::getComponentContext(m_xSFactory), m_aTempFile.GetURL()); uno::Reference<io::XInputStream> xInputStream(xNameAccess->getByName(rStreamName), uno::UNO_QUERY); boost::shared_ptr<SvStream> pStream(utl::UcbStreamHelper::CreateStream(xInputStream, sal_True)); pStream->Seek(STREAM_SEEK_TO_END); @@ -610,6 +609,8 @@ DECLARE_OOXMLEXPORT_TEST(testCellBtlr, "cell-btlr.docx") */ xmlDocPtr pXmlDoc = parseExport(); + if (!pXmlDoc) + return; assertXPath(pXmlDoc, "/w:document/w:body/w:tbl/w:tr/w:tc/w:tcPr/w:textDirection", "val", "btLr"); } @@ -928,6 +929,8 @@ DECLARE_OOXMLEXPORT_TEST(testPageBorderSpacingExportCase2, "page-borders-export- // for Word to handle (larger than 31 points) xmlDocPtr pXmlDoc = parseExport(); + if (!pXmlDoc) + return; // Assert the XPath expression - page borders assertXPath(pXmlDoc, "/w:document/w:body/w:sectPr/w:pgBorders", "offsetFrom", "page"); @@ -950,6 +953,8 @@ DECLARE_OOXMLEXPORT_TEST(testGrabBag, "grabbag.docx") { // w:mirrorIndents was lost on roundtrip, now should be handled as a grab bag property xmlDocPtr pXmlDoc = parseExport(); + if (!pXmlDoc) + return; assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:pPr/w:mirrorIndents"); } @@ -1090,6 +1095,8 @@ DECLARE_OOXMLEXPORT_TEST(testTableFloatingMargins, "table-floating-margins.docx" // Paragraph bottom margin wasn't 0 in the A1 cell of the floating table. xmlDocPtr pXmlDoc = parseExport(); + if (!pXmlDoc) + return; assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:r/w:pict/v:rect/v:textbox/w:txbxContent/w:tbl/w:tr[1]/w:tc[1]/w:p/w:pPr/w:spacing", "after", "0"); } @@ -1135,14 +1142,13 @@ DECLARE_OOXMLEXPORT_TEST(testTransparentShadow, "transparent-shadow.docx") DECLARE_OOXMLEXPORT_TEST(testBnc834035, "bnc834035.odt") { - // This is tricky, when saving manually, there are 2 hyperlinks, here only - // one, no idea why. That one still shows that we're not using bookmarks, though. - // Illustration index had wrong hyperlinks: anchor was using Writer's // <seqname>!<index>|sequence syntax, not a bookmark name. xmlDocPtr pXmlDoc = parseExport(); + if (!pXmlDoc) + return; // This was Figure!1|sequence. - assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:hyperlink", "anchor", "_Toc363553908"); + assertXPath(pXmlDoc, "/w:document/w:body/w:p[10]/w:hyperlink", "anchor", "_Toc363553908"); } DECLARE_OOXMLEXPORT_TEST(testFdo68418, "fdo68418.docx") @@ -1232,6 +1238,8 @@ DECLARE_OOXMLEXPORT_TEST(testStyleInheritance, "style-inheritance.docx") { // Check that now styleId's are more like what MSO produces xmlDocPtr pXmlStyles = parseExport("word/styles.xml"); + if (!pXmlStyles) + return; // the 1st style always must be Normal assertXPath(pXmlStyles, "/w:styles/w:style[1]", "styleId", "Normal"); // some random style later @@ -1327,6 +1335,8 @@ DECLARE_OOXMLEXPORT_TEST(testCalendar1, "calendar1.docx") { // Document has a non-trivial table style, test the roundtrip of it. xmlDocPtr pXmlStyles = parseExport("word/styles.xml"); + if (!pXmlStyles) + return; assertXPath(pXmlStyles, "/w:styles/w:style[@w:styleId='Calendar1']/w:basedOn", "val", "TableNormal"); assertXPath(pXmlStyles, "/w:styles/w:style[@w:styleId='Calendar1']/w:rsid", "val", "00903003"); assertXPath(pXmlStyles, "/w:styles/w:style[@w:styleId='Calendar1']/w:tblPr/w:tblStyleColBandSize", "val", "1"); @@ -1349,6 +1359,8 @@ DECLARE_OOXMLEXPORT_TEST(testCalendar2, "calendar2.docx") { // This paragraph property was missing in table style. xmlDocPtr pXmlStyles = parseExport("word/styles.xml"); + if (!pXmlStyles) + return; assertXPath(pXmlStyles, "/w:styles/w:style[@w:styleId='Calendar2']/w:pPr/w:jc", "val", "center"); // These run properties were missing @@ -1366,6 +1378,8 @@ DECLARE_OOXMLEXPORT_TEST(testCalendar2, "calendar2.docx") DECLARE_OOXMLEXPORT_TEST(testQuicktables, "quicktables.docx") { xmlDocPtr pXmlStyles = parseExport("word/styles.xml"); + if (!pXmlStyles) + return; // These were missing in the Calendar3 table style. assertXPath(pXmlStyles, "/w:styles/w:style[@w:styleId='Calendar3']/w:rPr/w:rFonts", "cstheme", "majorBidi"); @@ -1394,6 +1408,8 @@ DECLARE_OOXMLEXPORT_TEST(testQuicktables, "quicktables.docx") DECLARE_OOXMLEXPORT_TEST(testFdo71302, "fdo71302.docx") { xmlDocPtr pXmlStyles = parseExport("word/styles.xml"); + if (!pXmlStyles) + return; // This got renamed to "Strong Emphasis" without a good reason. assertXPath(pXmlStyles, "/w:styles/w:style[@w:styleId='Strong']", 1); @@ -1486,6 +1502,8 @@ DECLARE_OOXMLEXPORT_TEST(testFdo69636, "fdo69636.docx") * mso-layout-flow-alt property was completely missing in the output. */ xmlDocPtr pXmlDoc = parseExport(); + if (!pXmlDoc) + return; CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r/w:pict/v:rect/v:textbox", "style").match("mso-layout-flow-alt:bottom-to-top")); } @@ -1542,6 +1560,8 @@ DECLARE_OOXMLEXPORT_TEST(testFontNameIsEmpty, "font-name-is-empty.docx") // This test does not fail, if the document contains a font with empty name. xmlDocPtr pXmlFontTable = parseExport("word/fontTable.xml"); + if (!pXmlFontTable) + return; xmlNodeSetPtr pXmlNodes = getXPathNode(pXmlFontTable, "/w:fonts/w:font"); sal_Int32 length = xmlXPathNodeSetGetLength(pXmlNodes); for(sal_Int32 index = 0; index < length; index++){ @@ -1557,6 +1577,8 @@ DECLARE_OOXMLEXPORT_TEST(testMultiColumnLineSeparator, "multi-column-line-separa { // Check for the Column Separator value.It should be FALSE as the document doesnt contains separator line. xmlDocPtr pXmlDoc = parseExport(); + if (!pXmlDoc) + return; assertXPath(pXmlDoc, "/w:document/w:body/w:p[3]/w:pPr/w:sectPr/w:cols","sep","false"); } @@ -1651,6 +1673,8 @@ DECLARE_OOXMLEXPORT_TEST(testFdo69644, "fdo69644.docx") // with only 3 columns, instead of 5 columns. // Check that the table grid is exported with 5 columns xmlDocPtr pXmlDoc = parseExport(); + if (!pXmlDoc) + return; assertXPath(pXmlDoc, "/w:document/w:body/w:tbl/w:tblGrid/w:gridCol", 5); } @@ -1670,6 +1694,8 @@ DECLARE_OOXMLEXPORT_TEST(testFdo70812, "fdo70812.docx") DECLARE_OOXMLEXPORT_TEST(testPgMargin, "testPgMargin.docx") { xmlDocPtr pXmlDoc = parseExport(); + if (!pXmlDoc) + return; assertXPath(pXmlDoc, "/w:document/w:body/w:sectPr/w:pgMar", "left", "1440"); } @@ -1678,6 +1704,8 @@ DECLARE_OOXMLEXPORT_TEST(testVMLData, "TestVMLData.docx") // The problem was exporter was exporting vml data for shape in w:rPr element. // vml data shoud not come under w:rPr element. xmlDocPtr pXmlDoc = parseExport("word/header1.xml"); + if (!pXmlDoc) + return; CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:hdr/w:p/w:r/w:pict/v:rect", "stroked").match("f")); } @@ -1686,6 +1714,8 @@ DECLARE_OOXMLEXPORT_TEST(testImageData, "image_data.docx") // The problem was exporter was exporting v:imagedata data for shape in w:pict as v:fill w element. xmlDocPtr pXmlDoc = parseExport("word/header1.xml"); + if (!pXmlDoc) + return; CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:hdr/w:p/w:r/w:pict/v:rect/v:imagedata", "detectmouseclick").match("t")); } @@ -1711,6 +1741,8 @@ DECLARE_OOXMLEXPORT_TEST(testFdo70838, "fdo70838.docx") // and ImplEESdrWriter::ImplFlipBoundingBox made a mistake calculating the position xmlDocPtr pXmlDocument = parseExport("word/document.xml"); + if (!pXmlDocument) + return; // get styles of the four shapes OUString aStyles[4]; @@ -1773,6 +1805,8 @@ DECLARE_OOXMLEXPORT_TEST(testLineSpacingexport, "test_line_spacing.docx") style::LineSpacing alineSpacing = getProperty<style::LineSpacing>(xParaEnum->nextElement(), "ParaLineSpacing"); CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int16>(13200), static_cast<sal_Int16>(alineSpacing.Height)); xmlDocPtr pXmlDoc = parseExport("word/document.xml"); + if (!pXmlDoc) + return; assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:pPr/w:spacing", "line", "31680"); } @@ -1780,6 +1814,8 @@ DECLARE_OOXMLEXPORT_TEST(testHyperlineIsEnd, "hyperlink.docx") { // Check that the document.xml contents all the tag properly closed. xmlDocPtr pXmlDoc = parseExport("word/document.xml"); + if (!pXmlDoc) + return; // If document.xml miss any ending tag then parseExport() returns NULL which fail the test case. CPPUNIT_ASSERT(pXmlDoc) ; // Check hyperlink is properly open. @@ -1847,6 +1883,8 @@ DECLARE_OOXMLEXPORT_TEST(testCellGridSpan, "cell-grid-span.docx") // used to get set wrongly to 5 and 65532 respectively which was the reason for crash during save operation // Varifying gridSpan element is not present in RoundTriped Document (As it's Default value is 1). xmlDocPtr pXmlDoc = parseExport(); + if (!pXmlDoc) + return; assertXPath(pXmlDoc, "/w:document/w:body/w:tbl/w:tr/w:tc[1]/w:tcPr/w:gridSpan",0); assertXPath(pXmlDoc, "/w:document/w:body/w:tbl/w:tr/w:tc[2]/w:tcPr/w:gridSpan",0); } @@ -1866,6 +1904,8 @@ DECLARE_OOXMLEXPORT_TEST(testFdo71646, "fdo71646.docx") DECLARE_OOXMLEXPORT_TEST(testParaAutoSpacing, "para-auto-spacing.docx") { xmlDocPtr pXmlDoc = parseExport(); + if (!pXmlDoc) + return; CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:pPr/w:spacing", "beforeAutospacing").match("1")); CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:pPr/w:spacing", "afterAutospacing").match("1")); } @@ -1918,6 +1958,8 @@ DECLARE_OOXMLEXPORT_TEST(testFootnoteParagraphTag, "testFootnote.docx") * Check for, paragraph tag is correctly written into footnotes.xml. */ xmlDocPtr pXmlFootnotes = parseExport("word/footnotes.xml"); + if (!pXmlFootnotes) + return; assertXPath(pXmlFootnotes, "/w:footnotes/w:footnote[3]","id","2"); assertXPath(pXmlFootnotes, "/w:footnotes/w:footnote[3]/w:p/w:r/w:rPr/w:rStyle","val","Footnotereference"); } @@ -1925,12 +1967,16 @@ DECLARE_OOXMLEXPORT_TEST(testFootnoteParagraphTag, "testFootnote.docx") DECLARE_OOXMLEXPORT_TEST(testSpacingLineRule,"table_lineRule.docx") { xmlDocPtr pXmlDoc = parseExport("word/document.xml"); + if (!pXmlDoc) + return; assertXPath(pXmlDoc, "/w:document/w:body/w:tbl/w:tr[1]/w:tc[1]/w:p/w:pPr/w:spacing", "lineRule", "auto"); } DECLARE_OOXMLEXPORT_TEST(testTableLineSpacing, "table_atleast.docx") { xmlDocPtr pXmlDoc = parseExport("word/document.xml"); + if (!pXmlDoc) + return; assertXPath(pXmlDoc, "/w:document/w:body/w:tbl/w:tr/w:tc/w:p/w:pPr/w:spacing", "line", "320"); } |