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);

Reply via email to