[Libreoffice-commits] core.git: sw/qa
Jan-Marek Glogowski (via logerrit)
logerrit at kemper.freedesktop.org
Mon Nov 18 20:28:19 UTC 2019
sw/qa/extras/ooxmlexport/data/textinput.odt |binary
sw/qa/extras/ooxmlexport/ooxmlexport13.cxx | 67 ++++++++++++++++++++++++++--
2 files changed, 63 insertions(+), 4 deletions(-)
New commits:
commit feff6668d8e978f37b37fe043858297eb3b4a2d4
Author: Jan-Marek Glogowski <jan-marek.glogowski at extern.cib.de>
AuthorDate: Sun Nov 17 20:07:45 2019 +0100
Commit: Jan-Marek Glogowski <glogow at fbihome.de>
CommitDate: Mon Nov 18 21:26:38 2019 +0100
Extend DOCX input field export test for round-trip
This expands the test from tdf#125103 to include more use cases
and validate the import of the exported document (tdf#128460).
Change-Id: Ifb8615b6b90931996becb8cb44d846eb30956971
Reviewed-on: https://gerrit.libreoffice.org/83038
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow at fbihome.de>
diff --git a/sw/qa/extras/ooxmlexport/data/textinput.odt b/sw/qa/extras/ooxmlexport/data/textinput.odt
index 04b8d054c354..3a5da684a0a0 100644
Binary files a/sw/qa/extras/ooxmlexport/data/textinput.odt and b/sw/qa/extras/ooxmlexport/data/textinput.odt differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx
index 0d9cd773ef9a..e59df2a5ca53 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx
@@ -465,10 +465,69 @@ DECLARE_OOXMLEXPORT_TEST(testTextInput, "textinput.odt")
xmlDocPtr pXmlDoc = parseExport("word/document.xml");
if (!pXmlDoc)
return;
- // Ensure we have a formfield
- assertXPathContent(pXmlDoc, "/w:document/w:body/w:p/w:r[3]/w:instrText", " FILLIN \"\"");
- // and it's content is not gone
- assertXPathContent(pXmlDoc, "/w:document/w:body/w:p/w:r[5]/w:t", "SomeText");
+
+ // test the exported DOCX
+
+ // no hint, empty
+ assertXPathContent(pXmlDoc, "/w:document/w:body/w:p[1]/w:r[3]/w:instrText", " FILLIN \"\"");
+ assertXPathChildren(pXmlDoc, "/w:document/w:body/w:p[1]/w:r[5]", 1);
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:r[5]/w:rPr", 1);
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:r[6]/w:fldChar", "fldCharType", "end");
+
+ // no hint, content
+ assertXPathContent(pXmlDoc, "/w:document/w:body/w:p[2]/w:r[3]/w:instrText", " FILLIN \"\"");
+ assertXPathContent(pXmlDoc, "/w:document/w:body/w:p[2]/w:r[5]/w:t", "content without hint");
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[2]/w:r[6]/w:fldChar", "fldCharType", "end");
+
+ // hint, empty
+ assertXPathContent(pXmlDoc, "/w:document/w:body/w:p[3]/w:r[3]/w:instrText", " FILLIN \"hint empty\"");
+ assertXPathChildren(pXmlDoc, "/w:document/w:body/w:p[3]/w:r[5]", 1);
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[3]/w:r[5]/w:rPr", 1);
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[3]/w:r[6]/w:fldChar", "fldCharType", "end");
+
+ // hint, content
+ assertXPathContent(pXmlDoc, "/w:document/w:body/w:p[4]/w:r[3]/w:instrText", " FILLIN \"hint content\"");
+ assertXPathContent(pXmlDoc, "/w:document/w:body/w:p[4]/w:r[5]/w:t", "content with hint");
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[4]/w:r[6]/w:fldChar", "fldCharType", "end");
+
+ // test the imported DOCX
+ uno::Reference<text::XTextFieldsSupplier> xTextFieldsSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XEnumerationAccess> xFieldsAccess(xTextFieldsSupplier->getTextFields());
+ uno::Reference<container::XEnumeration> xFields(xFieldsAccess->createEnumeration());
+ CPPUNIT_ASSERT(xFields->hasMoreElements());
+ int nElements = 0;
+
+ do
+ {
+ uno::Any aField = xFields->nextElement();
+ uno::Reference<lang::XServiceInfo> xServiceInfo(aField, uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xServiceInfo->supportsService("com.sun.star.text.textfield.Input"));
+ uno::Reference<beans::XPropertySet> xPropertySet(aField, uno::UNO_QUERY);
+ uno::Reference<text::XTextContent> xText(aField, uno::UNO_QUERY);
+
+ // why is the enumeration not in the same order then the fields in the document?
+ // it seems to be stable and the navigation in the GUI is actually correct.
+ OUString sContent, sHint;
+ switch (nElements)
+ {
+ case 1:
+ sContent = "content with hint";
+ sHint = "hint content";
+ break;
+ case 2:
+ sHint = "hint empty";
+ break;
+ case 3:
+ sContent = "content without hint";
+ break;
+ }
+ CPPUNIT_ASSERT_EQUAL(uno::makeAny(sContent), xPropertySet->getPropertyValue("Content"));
+ CPPUNIT_ASSERT_EQUAL(sContent, xText->getAnchor()->getString());
+ CPPUNIT_ASSERT_EQUAL(uno::makeAny(sHint), xPropertySet->getPropertyValue("Hint"));
+ nElements++;
+ }
+ while (xFields->hasMoreElements());
+ CPPUNIT_ASSERT_EQUAL(4, nElements);
}
DECLARE_OOXMLIMPORT_TEST(testTdf123460, "tdf123460.docx")
More information about the Libreoffice-commits
mailing list