unoxml/qa/complex/unoxml/DOMTest.java | 161 ---------------------------------- unoxml/qa/unit/domtest.cxx | 119 +++++++++++++++++++++++++ 2 files changed, 119 insertions(+), 161 deletions(-)
New commits: commit a5f45b816e6e26439fa9e6e594b6972b100d13af Author: Xisco Fauli <xiscofa...@libreoffice.org> AuthorDate: Tue Oct 15 14:22:48 2024 +0200 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Tue Oct 15 17:37:33 2024 +0200 unoxml: port testXProcessingInstruction from java to c++ Change-Id: I2112ac35f046ea0a9c3892c53e4c14a2c1b9e258 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174972 Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> Tested-by: Jenkins diff --git a/unoxml/qa/complex/unoxml/DOMTest.java b/unoxml/qa/complex/unoxml/DOMTest.java index d9008ae87b75..0d2436070e0d 100644 --- a/unoxml/qa/complex/unoxml/DOMTest.java +++ b/unoxml/qa/complex/unoxml/DOMTest.java @@ -2059,167 +2059,6 @@ public class DOMTest xERChild, xER.getLastChild()); } - @Test public void testXProcessingInstruction() throws Exception - { - XDocumentBuilder xBuilder = - UnoRuntime.queryInterface(XDocumentBuilder.class, - m_xMSF.createInstance("com.sun.star.xml.dom.DocumentBuilder")); - XDocument xDoc = xBuilder.newDocument(); - - XProcessingInstruction xPI = - xDoc.createProcessingInstruction("foo", "bar"); - assertNotNull(xPI); - - assertEquals("XProcessingInstruction.getTarget", - "foo", xPI.getTarget()); - - assertEquals("XProcessingInstruction.getData", "bar", xPI.getData()); - - xPI.setData("baz"); - assertEquals("XProcessingInstruction.setData", "baz", xPI.getData()); - - // XNode - - { - XNode xPICloneN = xPI.cloneNode(false); - assertNotNull("XProcessingInstruction.cloneNode(false)", xPICloneN); - XProcessingInstruction xPIClone = UnoRuntime.queryInterface( - XProcessingInstruction.class, xPICloneN); - assertNotNull("XProcessingInstruction.cloneNode(false)", xPIClone); - assertFalse("XProcessingInstruction.cloneNode(false)", - xPIClone.hasChildNodes()); - } - { - XNode xPICloneN = xPI.cloneNode(true); - assertNotNull("XProcessingInstruction.cloneNode(true)", xPICloneN); - XProcessingInstruction xPIClone = UnoRuntime.queryInterface( - XProcessingInstruction.class, xPICloneN); - assertNotNull("XProcessingInstruction.cloneNode(true)", xPIClone); - assertFalse("XProcessingInstruction.cloneNode(true)", - xPIClone.hasChildNodes()); - } - - assertNull("XProcessingInstruction.getAttributes()", - xPI.getAttributes()); - - { - XNodeList xChildren = xPI.getChildNodes(); - assertTrue("XProcessingInstruction.getChildNodes()", - 0 == xChildren.getLength()); - } - - assertEquals("XProcessingInstruction.getLocalName()", - "", xPI.getLocalName()); - - assertEquals("XProcessingInstruction.getNamespaceURI()", - "", xPI.getNamespaceURI()); - - assertNull("XProcessingInstruction.getNextSibling()", - xPI.getNextSibling()); - - assertEquals("XProcessingInstruction.getNodeName()", - "foo", xPI.getNodeName()); - - assertTrue("XProcessingInstruction.getNodeType()", - PROCESSING_INSTRUCTION_NODE == xPI.getNodeType()); - - assertEquals("XProcessingInstruction.getNodeValue()", - "baz", xPI.getNodeValue()); - - assertEquals("XProcessingInstruction.getOwnerDocument()", - xDoc, xPI.getOwnerDocument()); - - assertNull("XProcessingInstruction.getParentNode()", - xPI.getParentNode()); - - assertEquals("XProcessingInstruction.getPrefix()", "", xPI.getPrefix()); - - assertNull("XProcessingInstruction.getPreviousSibling()", - xPI.getPreviousSibling()); - - assertFalse("XProcessingInstruction.hasAttributes()", - xPI.hasAttributes()); - - assertFalse("XProcessingInstruction.hasChildNodes()", - xPI.hasChildNodes()); - - assertFalse("XProcessingInstruction.isSupported()", - xPI.isSupported("frobnication", "v99.33.0.0.0.1")); - - xPI.normalize(); - - xPI.setNodeValue("42"); - assertEquals("XProcessingInstruction.setNodeValue()", - "42", xPI.getNodeValue()); - - try { - xPI.setPrefix("foo"); - fail("XProcessingInstruction.setPrefix()"); - } catch (DOMException e) { - assertTrue("XProcessingInstruction.setPrefix()", - NO_MODIFICATION_ALLOWED_ERR == e.Code); - } - - XText xText2 = xDoc.createTextNode("foobar"); - XText xText3 = xDoc.createTextNode("foobar"); - - try { - xPI.appendChild(null); - fail("XProcessingInstruction.appendChild(null)"); - } catch (Exception e) { /* expected */ } - try { - xPI.appendChild(xText2); - fail("XProcessingInstruction.appendChild(xText2)"); - } catch (DOMException e) { - assertTrue("XProcessingInstruction.appendChild(xText2)", - HIERARCHY_REQUEST_ERR == e.Code); - } - - try { - xPI.insertBefore(xText2, xText3); - fail("XProcessingInstruction.insertBefore"); - } catch (Exception e) { /* expected */ } - - try { - xPI.replaceChild(xText2, xText3); - fail("XProcessingInstruction.insertBefore"); - } catch (Exception e) { /* expected */ } - - try { - xPI.removeChild(null); - fail("XProcessingInstruction.removeChild(null)"); - } catch (Exception e) { /* expected */ } - - try { - xPI.removeChild(xText2); - fail("XProcessingInstruction.removeChild"); - } catch (DOMException e) { - assertTrue("XProcessingInstruction.removeChild", - HIERARCHY_REQUEST_ERR == e.Code); - } - } - - /* - @Test public void testXEntity() throws Exception - { - XEntity xEntity = FIXME how to get at this shy creature? - } - */ - - /* - @Test public void testXNotation() throws Exception - { - XNotation xNotation = FIXME how to create? - } - */ - - /* - @Test public void testXDocumentType() throws Exception - { - XDocumentType xDT = FIXME how to create? - } - */ - @Test public void testXNodeList_ElementList() throws Exception { XDocumentBuilder xBuilder = diff --git a/unoxml/qa/unit/domtest.cxx b/unoxml/qa/unit/domtest.cxx index 73f4fb0b8813..a6d7997f8951 100644 --- a/unoxml/qa/unit/domtest.cxx +++ b/unoxml/qa/unit/domtest.cxx @@ -29,6 +29,7 @@ #include <com/sun/star/ucb/ContentCreationException.hpp> #include <com/sun/star/ucb/XSimpleFileAccess.hpp> +#include <com/sun/star/xml/dom/DOMException.hpp> #include <com/sun/star/xml/dom/XDocumentBuilder.hpp> #include <com/sun/star/xml/sax/FastToken.hpp> #include <com/sun/star/xml/sax/XSAXSerializable.hpp> @@ -560,6 +561,123 @@ public: } } + void testXProcessingInstruction() + { + Reference< xml::dom::XDocument > xDocument = mxDomBuilder->newDocument(); + CPPUNIT_ASSERT(xDocument); + Reference< xml::dom::XProcessingInstruction > xPI = xDocument->createProcessingInstruction(u"foo"_ustr, u"bar"_ustr); + CPPUNIT_ASSERT(xPI); + + CPPUNIT_ASSERT_EQUAL(u"foo"_ustr, xPI->getTarget()); + CPPUNIT_ASSERT_EQUAL(u"bar"_ustr, xPI->getData()); + + xPI->setData(u"baz"_ustr); + CPPUNIT_ASSERT_EQUAL(u"baz"_ustr, xPI->getData()); + + { + uno::Reference< xml::dom::XProcessingInstruction> xPIClone( xPI->cloneNode(false), uno::UNO_QUERY_THROW ); + CPPUNIT_ASSERT(xPIClone); + CPPUNIT_ASSERT(!xPIClone->hasChildNodes()); + } + { + uno::Reference< xml::dom::XProcessingInstruction> xPIClone( xPI->cloneNode(true), uno::UNO_QUERY_THROW ); + CPPUNIT_ASSERT(xPIClone); + CPPUNIT_ASSERT(!xPIClone->hasChildNodes()); + } + + CPPUNIT_ASSERT(!xPI->getAttributes()); + + uno::Reference<xml::dom::XNodeList> xChildList = xPI->getChildNodes(); + CPPUNIT_ASSERT_EQUAL(sal_Int32(0), xChildList->getLength()); + + CPPUNIT_ASSERT_EQUAL(u""_ustr, xPI->getLocalName()); + CPPUNIT_ASSERT_EQUAL(u""_ustr, xPI->getNamespaceURI()); + CPPUNIT_ASSERT(!xPI->getNextSibling()); + CPPUNIT_ASSERT_EQUAL(u"foo"_ustr, xPI->getNodeName()); + CPPUNIT_ASSERT_EQUAL(xml::dom::NodeType::NodeType_PROCESSING_INSTRUCTION_NODE, xPI->getNodeType()); + CPPUNIT_ASSERT_EQUAL(u"baz"_ustr, xPI->getNodeValue()); + CPPUNIT_ASSERT_EQUAL(xDocument, xPI->getOwnerDocument()); + CPPUNIT_ASSERT(!xPI->getParentNode()); + CPPUNIT_ASSERT_EQUAL(u""_ustr, xPI->getPrefix()); + CPPUNIT_ASSERT(!xPI->getPreviousSibling()); + CPPUNIT_ASSERT(!xPI->hasAttributes()); + CPPUNIT_ASSERT(!xPI->hasChildNodes()); + CPPUNIT_ASSERT(!xPI->isSupported(u"frobnication"_ustr, u"v99.33.0.0.0.1"_ustr)); + + xPI->normalize(); + xPI->setNodeValue(u"42"_ustr); + CPPUNIT_ASSERT_EQUAL(u"42"_ustr, xPI->getNodeValue()); + + try + { + xPI->setPrefix(u"foo"_ustr); + CPPUNIT_FAIL("XProcessingInstruction.setPrefix()"); + } + catch (xml::dom::DOMException& e) + { + CPPUNIT_ASSERT_EQUAL(xml::dom::DOMExceptionType::DOMExceptionType_NO_MODIFICATION_ALLOWED_ERR, e.Code); + } + + uno::Reference<xml::dom::XText> xText2 = xDocument->createTextNode(u"foobar"_ustr); + uno::Reference<xml::dom::XText> xText3 = xDocument->createTextNode(u"foobar"_ustr); + + try + { + xPI->appendChild(nullptr); + CPPUNIT_FAIL("XProcessingInstruction.appendChild(null)"); + } + catch (css::uno::RuntimeException&) + { + } + + try + { + xPI->appendChild(xText2); + CPPUNIT_FAIL("XProcessingInstruction.appendChild(xText2)"); + } + catch (xml::dom::DOMException& e) + { + CPPUNIT_ASSERT_EQUAL(xml::dom::DOMExceptionType::DOMExceptionType_HIERARCHY_REQUEST_ERR, e.Code); + } + + try + { + xPI->insertBefore(xText2, xText3); + CPPUNIT_FAIL("XProcessingInstruction.insertBefore"); + } + catch (xml::dom::DOMException&) + { + } + + try + { + xPI->replaceChild(xText2, xText3); + CPPUNIT_FAIL("XProcessingInstruction.replaceChild"); + } + catch (xml::dom::DOMException&) + { + } + + try + { + xPI->removeChild(nullptr); + CPPUNIT_FAIL("XProcessingInstruction.removeChild(null)"); + } + catch (css::uno::RuntimeException&) + { + } + + try + { + xPI->removeChild(xText2); + CPPUNIT_FAIL("XProcessingInstruction.removeChild"); + } + catch (xml::dom::DOMException& e) + { + CPPUNIT_ASSERT_EQUAL(xml::dom::DOMExceptionType::DOMExceptionType_HIERARCHY_REQUEST_ERR, e.Code); + } + } + void testXNamedNodeMap_AttributesMap() { Reference< xml::dom::XDocument > xDocument = mxDomBuilder->newDocument(); @@ -748,6 +866,7 @@ public: CPPUNIT_TEST(testXDocumentBuilder); CPPUNIT_TEST(testXXPathAPI); CPPUNIT_TEST(testXXPathObject); + CPPUNIT_TEST(testXProcessingInstruction); CPPUNIT_TEST(testXNamedNodeMap_AttributesMap); CPPUNIT_TEST(testXNodeList_ChildList); CPPUNIT_TEST(testXNodeList_NodeList);