sw/qa/extras/ooxmlexport/ooxmlexport.cxx | 155 ++++++++++--------------------- 1 file changed, 51 insertions(+), 104 deletions(-)
New commits: commit 3083cadd7a88f4d839f01d3f282af2909efc93bd Author: Miklos Vajna <[email protected]> Date: Thu Jul 18 12:52:25 2013 +0200 merge more copypaste into assertXPath() Change-Id: I8ee063454e6de98ed134877d6298b6a772cf1e7a diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx index f7bd4ae..ea46058 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx @@ -113,6 +113,7 @@ private: * xml stream, so that you can do the asserting. */ xmlDocPtr parseExport(); + void assertXPath(xmlDocPtr pXmlDoc, OString aXPath, OString aAttribute, OUString aExpectedValue); }; void Test::run() @@ -217,6 +218,18 @@ xmlDocPtr Test::parseExport() return xmlParseMemory((const char*)aDocument.getStr(), aDocument.getLength()); } +void Test::assertXPath(xmlDocPtr pXmlDoc, OString aXPath, OString aAttribute, OUString aExpectedValue) +{ + xmlXPathContextPtr pXmlXpathCtx = xmlXPathNewContext(pXmlDoc); + xmlXPathRegisterNs(pXmlXpathCtx, BAD_CAST("w"), BAD_CAST("http://schemas.openxmlformats.org/wordprocessingml/2006/main")); + xmlXPathObjectPtr pXmlXpathObj = xmlXPathEvalExpression(BAD_CAST(aXPath.getStr()), pXmlXpathCtx); + xmlNodeSetPtr pXmlNodes = pXmlXpathObj->nodesetval; + CPPUNIT_ASSERT_EQUAL(1, xmlXPathNodeSetGetLength(pXmlNodes)); + xmlNodePtr pXmlNode = pXmlNodes->nodeTab[0]; + OUString aValue = OUString::createFromAscii((const char*)xmlGetProp(pXmlNode, BAD_CAST(aAttribute.getStr()))); + CPPUNIT_ASSERT_EQUAL(aExpectedValue, aValue); +} + void Test::testZoom() { uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY); @@ -653,17 +666,7 @@ void Test::testCellBtlr() */ xmlDocPtr pXmlDoc = parseExport(); - - xmlXPathContextPtr pXmlXpathCtx = xmlXPathNewContext(pXmlDoc); - xmlXPathRegisterNs(pXmlXpathCtx, BAD_CAST("w"), BAD_CAST("http://schemas.openxmlformats.org/wordprocessingml/2006/main")); - OString aXPath = "/w:document/w:body/w:tbl/w:tr/w:tc/w:tcPr/w:textDirection"; - xmlXPathObjectPtr pXmlXpathObj = xmlXPathEvalExpression(BAD_CAST(aXPath.getStr()), pXmlXpathCtx); - xmlNodeSetPtr pXmlNodes = pXmlXpathObj->nodesetval; - CPPUNIT_ASSERT_EQUAL(1, xmlXPathNodeSetGetLength(pXmlNodes)); - xmlNodePtr pXmlNode = pXmlNodes->nodeTab[0]; - OString aAttribute = "val"; - OUString aValue = OUString::createFromAscii((const char*)xmlGetProp(pXmlNode, BAD_CAST(aAttribute.getStr()))); - CPPUNIT_ASSERT_EQUAL(OUString("btLr"), aValue); + assertXPath(pXmlDoc, "/w:document/w:body/w:tbl/w:tr/w:tc/w:tcPr/w:textDirection", "val", "btLr"); } void Test::testTableStylerPrSz() @@ -989,49 +992,15 @@ void Test::testPageBorderSpacingExportCase2() */ xmlDocPtr pXmlDoc = parseExport(); - xmlXPathContextPtr pXmlXpathContext; - OString aXPath; - xmlXPathObjectPtr pXmlXpathObj; - xmlNodeSetPtr pXmlNodes; - xmlNodePtr pXmlNode; - OString aAttributeName; - OUString aAttributeValue; // Assert the XPath expression - page borders - pXmlXpathContext = xmlXPathNewContext(pXmlDoc); - xmlXPathRegisterNs(pXmlXpathContext, BAD_CAST("w"), BAD_CAST("http://schemas.openxmlformats.org/wordprocessingml/2006/main")); - aXPath = "/w:document/w:body/w:sectPr/w:pgBorders"; - pXmlXpathObj = xmlXPathEvalExpression(BAD_CAST(aXPath.getStr()), pXmlXpathContext); - pXmlNodes = pXmlXpathObj->nodesetval; - CPPUNIT_ASSERT_EQUAL(1, xmlXPathNodeSetGetLength(pXmlNodes)); - pXmlNode = pXmlNodes->nodeTab[0]; - aAttributeName = "offsetFrom"; - aAttributeValue = OUString::createFromAscii((const char*)xmlGetProp(pXmlNode, BAD_CAST(aAttributeName.getStr()))); - CPPUNIT_ASSERT_EQUAL(OUString("page"), aAttributeValue); + assertXPath(pXmlDoc, "/w:document/w:body/w:sectPr/w:pgBorders", "offsetFrom", "page"); // Assert the XPath expression - 'left' border - pXmlXpathContext = xmlXPathNewContext(pXmlDoc); - xmlXPathRegisterNs(pXmlXpathContext, BAD_CAST("w"), BAD_CAST("http://schemas.openxmlformats.org/wordprocessingml/2006/main")); - aXPath = "/w:document/w:body/w:sectPr/w:pgBorders/w:left"; - pXmlXpathObj = xmlXPathEvalExpression(BAD_CAST(aXPath.getStr()), pXmlXpathContext); - pXmlNodes = pXmlXpathObj->nodesetval; - CPPUNIT_ASSERT_EQUAL(1, xmlXPathNodeSetGetLength(pXmlNodes)); - pXmlNode = pXmlNodes->nodeTab[0]; - aAttributeName = "space"; - aAttributeValue = OUString::createFromAscii((const char*)xmlGetProp(pXmlNode, BAD_CAST(aAttributeName.getStr()))); - CPPUNIT_ASSERT_EQUAL(OUString("24"), aAttributeValue); + assertXPath(pXmlDoc, "/w:document/w:body/w:sectPr/w:pgBorders/w:left", "space", "24"); // Assert the XPath expression - 'right' border - pXmlXpathContext = xmlXPathNewContext(pXmlDoc); - xmlXPathRegisterNs(pXmlXpathContext, BAD_CAST("w"), BAD_CAST("http://schemas.openxmlformats.org/wordprocessingml/2006/main")); - aXPath = "/w:document/w:body/w:sectPr/w:pgBorders/w:right"; - pXmlXpathObj = xmlXPathEvalExpression(BAD_CAST(aXPath.getStr()), pXmlXpathContext); - pXmlNodes = pXmlXpathObj->nodesetval; - CPPUNIT_ASSERT_EQUAL(1, xmlXPathNodeSetGetLength(pXmlNodes)); - pXmlNode = pXmlNodes->nodeTab[0]; - aAttributeName = "space"; - aAttributeValue = OUString::createFromAscii((const char*)xmlGetProp(pXmlNode, BAD_CAST(aAttributeName.getStr()))); - CPPUNIT_ASSERT_EQUAL(OUString("24"), aAttributeValue); + assertXPath(pXmlDoc, "/w:document/w:body/w:sectPr/w:pgBorders/w:right", "space", "24"); } CPPUNIT_TEST_SUITE_REGISTRATION(Test); commit 4210c68f7504a9cfb2272781956355679888fc18 Author: Miklos Vajna <[email protected]> Date: Thu Jul 18 12:37:13 2013 +0200 merge copypaste into parseExport() Change-Id: I5a680e3853d2411b00de1e286fce08d30b368ad7 diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx index 9778100..f7bd4ae 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx @@ -106,6 +106,13 @@ public: private: void run(); + /** + * Given that some problem doesn't affect the result in the importer, we + * test the resulting file directly, by opening the zip file, parsing an + * xml stream, and asserting an XPath expression. This method returns the + * xml stream, so that you can do the asserting. + */ + xmlDocPtr parseExport(); }; void Test::run() @@ -185,6 +192,31 @@ void Test::run() } } +xmlDocPtr Test::parseExport() +{ + // Create the zip file. + utl::TempFile aTempFile; + save("Office Open XML Text", aTempFile); + + // 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<io::XInputStream> xInputStream(xNameAccess->getByName("word/document.xml"), uno::UNO_QUERY); + boost::shared_ptr<SvStream> pStream(utl::UcbStreamHelper::CreateStream(xInputStream, sal_True)); + pStream->Seek(STREAM_SEEK_TO_END); + sal_Size nSize = pStream->Tell(); + pStream->Seek(0); + OStringBuffer aDocument(nSize); + char ch; + for (sal_Size i = 0; i < nSize; ++i) + { + *pStream >> ch; + aDocument.append(ch); + } + + // Parse the XML. + return xmlParseMemory((const char*)aDocument.getStr(), aDocument.getLength()); +} + void Test::testZoom() { uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY); @@ -618,36 +650,10 @@ void Test::testCellBtlr() * The problem was that the exporter didn't mirror the workaround of the * importer, regarding the btLr text direction: the <w:textDirection * w:val="btLr"/> token was completely missing in the output. - * - * Given that this doesn't affect the result in the importer, we test the - * resulting file directly, by opening the zip file, parsing an xml stream, - * and asserting an XPath expression. This can be extracted to a helper - * method, once it's clear what is common in such tests. */ - // Create the zip file. - utl::TempFile aTempFile; - save("Office Open XML Text", aTempFile); + xmlDocPtr pXmlDoc = parseExport(); - // 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<io::XInputStream> xInputStream(xNameAccess->getByName("word/document.xml"), uno::UNO_QUERY); - boost::shared_ptr<SvStream> pStream(utl::UcbStreamHelper::CreateStream(xInputStream, sal_True)); - pStream->Seek(STREAM_SEEK_TO_END); - sal_Size nSize = pStream->Tell(); - pStream->Seek(0); - OStringBuffer aDocument(nSize); - char ch; - for (sal_Size i = 0; i < nSize; ++i) - { - *pStream >> ch; - aDocument.append(ch); - } - - // Parse the XML. - xmlDocPtr pXmlDoc = xmlParseMemory((const char*)aDocument.getStr(), aDocument.getLength()); - - // Assert the XPath expression. xmlXPathContextPtr pXmlXpathCtx = xmlXPathNewContext(pXmlDoc); xmlXPathRegisterNs(pXmlXpathCtx, BAD_CAST("w"), BAD_CAST("http://schemas.openxmlformats.org/wordprocessingml/2006/main")); OString aXPath = "/w:document/w:body/w:tbl/w:tr/w:tc/w:tcPr/w:textDirection"; @@ -980,34 +986,9 @@ void Test::testPageBorderSpacingExportCase2() * * The exporter ALWAYS exported 'w:offsetFrom="text"' even when the spacing values where too large * for Word to handle (larger than 31 points) - * - * Given that this doesn't affect the result in the importer, we test the - * resulting file directly, by opening the zip file, parsing an xml stream, - * and asserting an XPath expression. This can be extracted to a helper - * method, once it's clear what is common in such tests. */ - // Create the zip file - utl::TempFile aTempFile; - save("Office Open XML Text", aTempFile); - - // 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<io::XInputStream> xInputStream(xNameAccess->getByName("word/document.xml"), uno::UNO_QUERY); - boost::shared_ptr<SvStream> pStream(utl::UcbStreamHelper::CreateStream(xInputStream, sal_True)); - pStream->Seek(STREAM_SEEK_TO_END); - sal_Size nSize = pStream->Tell(); - pStream->Seek(0); - OStringBuffer aDocument(nSize); - - char ch; - for (sal_Size i = 0; i < nSize; ++i) - { - *pStream >> ch; - aDocument.append(ch); - } - - xmlDocPtr pXmlDoc; + xmlDocPtr pXmlDoc = parseExport(); xmlXPathContextPtr pXmlXpathContext; OString aXPath; xmlXPathObjectPtr pXmlXpathObj; @@ -1016,9 +997,6 @@ void Test::testPageBorderSpacingExportCase2() OString aAttributeName; OUString aAttributeValue; - // Parse the XML - pXmlDoc = xmlParseMemory((const char*)aDocument.getStr(), aDocument.getLength()); - // Assert the XPath expression - page borders pXmlXpathContext = xmlXPathNewContext(pXmlDoc); xmlXPathRegisterNs(pXmlXpathContext, BAD_CAST("w"), BAD_CAST("http://schemas.openxmlformats.org/wordprocessingml/2006/main")); _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
