unoxml/qa/complex/unoxml/DOMTest.java | 68 ---------------------------------- unoxml/qa/unit/domtest.cxx | 61 ++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 68 deletions(-)
New commits: commit 9526206b547f967e1246d5104896428ce964db29 Author: Xisco Fauli <xiscofa...@libreoffice.org> AuthorDate: Mon Oct 7 17:09:11 2024 +0200 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Tue Oct 8 10:10:41 2024 +0200 unoxml: port testXNamedNodeMap_AttributesMap from java to c++ Change-Id: I1a37c7a63622d38cd8d9148589ba999901453611 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174612 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> diff --git a/unoxml/qa/complex/unoxml/DOMTest.java b/unoxml/qa/complex/unoxml/DOMTest.java index 2e262f083b77..d9008ae87b75 100644 --- a/unoxml/qa/complex/unoxml/DOMTest.java +++ b/unoxml/qa/complex/unoxml/DOMTest.java @@ -2267,74 +2267,6 @@ public class DOMTest assertEquals("ElementList.item", xFoo3, xElementList.item(0)); } - @Test public void testXNamedNodeMap_AttributesMap() throws Exception - { - XDocumentBuilder xBuilder = - UnoRuntime.queryInterface(XDocumentBuilder.class, - m_xMSF.createInstance("com.sun.star.xml.dom.DocumentBuilder")); - XDocument xDoc = xBuilder.newDocument(); - - String ns = "http://example.com/"; - - XElement xElem = xDoc.createElement("foo"); - - XNamedNodeMap xAttributes = xElem.getAttributes(); - assertNotNull(xAttributes); - assertSame("AttributesMap.getLength()", 0, xAttributes.getLength()); - - try { - xAttributes.item(4); - } catch (Exception e) { /* expected */ } - - xElem.setAttribute("bar", "42"); - XAttr xAttrBar = xElem.getAttributeNode("bar"); - assertSame("AttributesMap.getLength()", 1, xAttributes.getLength()); - assertEquals("AttributesMap.item", xAttrBar, xAttributes.item(0)); - assertEquals("AttributesMap.getNamedItem", - xAttrBar, xAttributes.getNamedItem("bar")); - - xElem.setAttributeNS(ns, "n:bar", "43"); - XAttr xAttrBarNs = xElem.getAttributeNodeNS(ns, "bar"); - assertSame("AttributesMap.getLength()", 2, xAttributes.getLength()); - assertEquals("AttributesMap.item", xAttrBar, xAttributes.item(0)); - assertEquals("AttributesMap.item", xAttrBarNs, xAttributes.item(1)); - assertEquals("AttributesMap.getNamedItem", - xAttrBar, xAttributes.getNamedItem("bar")); - assertEquals("AttributesMap.getNamedItemNS", - xAttrBarNs, xAttributes.getNamedItemNS(ns, "bar")); - - XNode xAttrBarNsRem = xAttributes.removeNamedItemNS(ns, "bar"); - assertSame("AttributesMap.getLength()", 1, xAttributes.getLength()); - assertEquals("AttributesMap.removeNamedItemNS", - xAttrBar, xAttributes.item(0)); - assertEquals("AttributesMap.removeNamedItemNS", - xAttrBar, xAttributes.getNamedItem("bar")); - assertNull("AttributesMap.removeNamedItemNS", - xAttrBarNsRem.getParentNode()); - - XNode xAttrBarRem = xAttributes.removeNamedItem("bar"); - assertSame("AttributesMap.getLength()", 0, xAttributes.getLength()); - assertNull("AttributesMap.removeNamedItem", - xAttrBarRem.getParentNode()); - - XNode xAttrBarSetN = xAttributes.setNamedItem(xAttrBarRem); - assertNotNull("AttributesMap.setNamedItem", xAttrBarSetN); - XAttr xAttrBarSet = - UnoRuntime.queryInterface(XAttr.class, xAttrBarSetN); - assertNotNull("AttributesMap.setNamedItem", xAttrBarSet); - assertEquals("AttributesMap.setNamedItem", - xAttrBarSet, xAttributes.getNamedItem("bar")); - - XNode xAttrBarNsSetN = xAttributes.setNamedItemNS(xAttrBarNsRem); - assertNotNull("AttributesMap.setNamedItemNS", xAttrBarNsSetN); - XAttr xAttrBarNsSet = - UnoRuntime.queryInterface(XAttr.class, xAttrBarNsSetN); - assertNotNull("AttributesMap.setNamedItemNS", xAttrBarNsSet); - assertEquals("AttributesMap.setNamedItemNS", - xAttrBarNsSet, xAttributes.getNamedItemNS(ns, "bar")); - assertSame("AttributesMap.getLength()", 2, xAttributes.getLength()); - } - @Test public void testXSAXSerialize() throws Exception { String file = diff --git a/unoxml/qa/unit/domtest.cxx b/unoxml/qa/unit/domtest.cxx index 612d36654993..73f4fb0b8813 100644 --- a/unoxml/qa/unit/domtest.cxx +++ b/unoxml/qa/unit/domtest.cxx @@ -560,6 +560,65 @@ public: } } + void testXNamedNodeMap_AttributesMap() + { + Reference< xml::dom::XDocument > xDocument = mxDomBuilder->newDocument(); + CPPUNIT_ASSERT(xDocument); + + Reference< xml::dom::XElement > xElem = xDocument->createElement(u"foo"_ustr); + Reference< xml::dom::XNamedNodeMap > xAttributes = xElem->getAttributes(); + CPPUNIT_ASSERT(xAttributes); + CPPUNIT_ASSERT_EQUAL(sal_Int32(0), xAttributes->getLength()); + + // Should it throw an exception ? + CPPUNIT_ASSERT(!xAttributes->item(4)); + + xElem->setAttribute(u"bar"_ustr, u"42"_ustr); + Reference< xml::dom::XAttr > xAttBar = xElem->getAttributeNode(u"bar"_ustr); + CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xAttributes->getLength()); + CPPUNIT_ASSERT_EQUAL(Reference< XInterface >(xAttBar, uno::UNO_QUERY), + Reference< XInterface >(xAttributes->item(0), uno::UNO_QUERY)); + CPPUNIT_ASSERT_EQUAL(Reference< XInterface >(xAttBar, uno::UNO_QUERY), + Reference< XInterface >(xAttributes->getNamedItem(u"bar"_ustr), uno::UNO_QUERY)); + + OUString aNS(u"http://example.com/"_ustr); + + xElem->setAttributeNS(aNS, u"n:bar"_ustr, u"43"_ustr); + Reference< xml::dom::XAttr > xAttBarNS = xElem->getAttributeNodeNS(aNS, u"bar"_ustr); + CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xAttributes->getLength()); + CPPUNIT_ASSERT_EQUAL(Reference< XInterface >(xAttBar, uno::UNO_QUERY), + Reference< XInterface >(xAttributes->item(0), uno::UNO_QUERY)); + CPPUNIT_ASSERT_EQUAL(Reference< XInterface >(xAttBarNS, uno::UNO_QUERY), + Reference< XInterface >(xAttributes->item(1), uno::UNO_QUERY)); + CPPUNIT_ASSERT_EQUAL(Reference< XInterface >(xAttBar, uno::UNO_QUERY), + Reference< XInterface >(xAttributes->getNamedItem(u"bar"_ustr), uno::UNO_QUERY)); + CPPUNIT_ASSERT_EQUAL(Reference< XInterface >(xAttBarNS, uno::UNO_QUERY), + Reference< XInterface >(xAttributes->getNamedItemNS(aNS, u"bar"_ustr), uno::UNO_QUERY)); + + uno::Reference<xml::dom::XNode> xAttrBarNsRem = xAttributes->removeNamedItemNS(aNS, u"bar"_ustr); + CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xAttributes->getLength()); + CPPUNIT_ASSERT_EQUAL(Reference< XInterface >(xAttBar, uno::UNO_QUERY), + Reference< XInterface >(xAttributes->item(0), uno::UNO_QUERY)); + CPPUNIT_ASSERT_EQUAL(Reference< XInterface >(xAttBar, uno::UNO_QUERY), + Reference< XInterface >(xAttributes->getNamedItem(u"bar"_ustr), uno::UNO_QUERY)); + CPPUNIT_ASSERT(!xAttrBarNsRem->getParentNode()); + + uno::Reference<xml::dom::XNode> xAttrBarRem = xAttributes->removeNamedItem(u"bar"_ustr); + CPPUNIT_ASSERT_EQUAL(sal_Int32(0), xAttributes->getLength()); + CPPUNIT_ASSERT(!xAttrBarRem->getParentNode()); + + uno::Reference<xml::dom::XNode> xAttrBarSet = xAttributes->setNamedItem(xAttrBarRem); + CPPUNIT_ASSERT(xAttrBarSet); + CPPUNIT_ASSERT_EQUAL(Reference< XInterface >(xAttrBarSet, uno::UNO_QUERY), + Reference< XInterface >(xAttributes->getNamedItem(u"bar"_ustr), uno::UNO_QUERY)); + + uno::Reference<xml::dom::XNode> xAttrBarNsSet = xAttributes->setNamedItemNS(xAttrBarNsRem); + CPPUNIT_ASSERT(xAttrBarNsSet); + CPPUNIT_ASSERT_EQUAL(Reference< XInterface >(xAttrBarNsSet, uno::UNO_QUERY), + Reference< XInterface >(xAttributes->getNamedItemNS(aNS, u"bar"_ustr), uno::UNO_QUERY)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xAttributes->getLength()); + } + void testXNodeList_ChildList() { Reference< xml::dom::XDocument > xDocument = mxDomBuilder->newDocument(); @@ -576,6 +635,7 @@ public: CPPUNIT_ASSERT(xChildList); CPPUNIT_ASSERT_EQUAL(sal_Int32(0), xChildList->getLength()); + // Should it throw an exception ? CPPUNIT_ASSERT(!xChildList->item(4)); xRoot->appendChild(xFoo); @@ -688,6 +748,7 @@ public: CPPUNIT_TEST(testXDocumentBuilder); CPPUNIT_TEST(testXXPathAPI); CPPUNIT_TEST(testXXPathObject); + CPPUNIT_TEST(testXNamedNodeMap_AttributesMap); CPPUNIT_TEST(testXNodeList_ChildList); CPPUNIT_TEST(testXNodeList_NodeList); CPPUNIT_TEST(serializerTest);