unoxml: port testXProcessingInstruction from java to c++
Change-Id: I2112ac35f046ea0a9c3892c53e4c14a2c1b9e258 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174972 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org> Tested-by: Jenkins
This commit is contained in:
@@ -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 =
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user