unoxml: port testXXPathObject from java to c++

Code for "count(//foo) = 2" was duplicated
Same for "//foo" which is already tested in
testXNodeList_NodeList

Change-Id: I2144552f5b687e639fef66b82463aae3bf82f53c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174394
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
This commit is contained in:
Xisco Fauli
2024-10-02 22:35:01 +02:00
parent 466134863b
commit d937166f51
2 changed files with 47 additions and 72 deletions
-72
View File
@@ -2530,78 +2530,6 @@ public class DOMTest
*/
}
@Test public void testXXPathObject() throws Exception
{
XXPathAPI xXPathAPI =
UnoRuntime.queryInterface(XXPathAPI.class,
m_xMSF.createInstance("com.sun.star.xml.xpath.XPathAPI"));
XDocumentBuilder xBuilder =
UnoRuntime.queryInterface(XDocumentBuilder.class,
m_xMSF.createInstance("com.sun.star.xml.dom.DocumentBuilder"));
String ns = "http://example.com/";
XDocument xDoc = xBuilder.newDocument();
XElement xRoot = xDoc.createElement("root");
XElement xFoo1 = xDoc.createElement("foo");
XElement xFoo2 = xDoc.createElement("foo");
XElement xFooNs = xDoc.createElementNS(ns, "ns:foo");
XElement xBar = xDoc.createElement("bar");
xDoc.appendChild(xRoot);
xRoot.appendChild(xFoo1);
xFoo1.appendChild(xBar);
xBar.appendChild(xFoo2);
xRoot.appendChild(xFooNs);
{
XXPathObject xResult = xXPathAPI.eval(xRoot, "count(//foo)");
assertNotNull("XXPathAPI.eval", xResult);
assertEquals("XXPathObject.getObjectType",
XPATH_NUMBER, xResult.getObjectType());
assertEquals("XXPathObject.getByte", 2, xResult.getByte());
assertEquals("XXPathObject.getShort", 2, xResult.getShort());
assertEquals("XXPathObject.getLong", 2, xResult.getLong());
assertEquals("XXPathObject.getHyper", 2, xResult.getHyper());
assertEquals("XXPathObject.getFloat", 2.0, xResult.getFloat(), 0.0);
assertEquals("XXPathObject.getDouble",
2.0, xResult.getDouble(), 0.0);
assertEquals("XXPathObject.getString", "2", xResult.getString());
}
{
XXPathObject xResult = xXPathAPI.eval(xRoot, "count(//foo) = 2");
assertNotNull("XXPathAPI.eval", xResult);
assertEquals("XXPathObject.getObjectType",
XPATH_BOOLEAN, xResult.getObjectType());
assertEquals("XXPathObject.getBoolean", true, xResult.getBoolean());
assertEquals("XXPathObject.getString", "true", xResult.getString());
}
{
XXPathObject xResult = xXPathAPI.eval(xRoot, "count(//foo) = 2");
assertNotNull("XXPathAPI.eval", xResult);
assertEquals("XXPathObject.getObjectType",
XPATH_BOOLEAN, xResult.getObjectType());
assertEquals("XXPathObject.getBoolean", true, xResult.getBoolean());
assertEquals("XXPathObject.getString", "true", xResult.getString());
}
{
XXPathObject xResult = xXPathAPI.eval(xRoot, "local-name(foo)");
assertNotNull("XXPathAPI.eval", xResult);
assertEquals("XXPathObject.getObjectType",
XPATH_STRING, xResult.getObjectType());
assertEquals("XXPathObject.getString", "foo", xResult.getString());
}
{
XXPathObject xResult = xXPathAPI.eval(xRoot, "//foo");
assertNotNull("XXPathAPI.eval", xResult);
assertEquals("XXPathObject.getObjectType",
XPATH_NODESET, xResult.getObjectType());
assertNotNull("XXPathObject.getNodeList", xResult.getNodeList());
}
}
@Test public void testXSAXSerialize() throws Exception
{
String file =
+47
View File
@@ -317,6 +317,52 @@ public:
mxDomBuilder->setErrorHandler(nullptr);
}
void testXXPathObject()
{
uno::Reference<xml::xpath::XXPathAPI> xXPathAPI( getMultiServiceFactory()->createInstance(u"com.sun.star.xml.xpath.XPathAPI"_ustr), uno::UNO_QUERY_THROW );
Reference< xml::dom::XDocument > xDocument = mxDomBuilder->newDocument();
CPPUNIT_ASSERT(xDocument);
Reference< xml::dom::XElement > xRoot = xDocument->createElement(u"root"_ustr);
Reference< xml::dom::XElement > xFoo1 = xDocument->createElement(u"foo"_ustr);
Reference< xml::dom::XElement > xFoo2 = xDocument->createElement(u"foo"_ustr);
Reference< xml::dom::XElement > xFooNs = xDocument->createElementNS(u"http://example.com/"_ustr, u"ns:foo"_ustr);
Reference< xml::dom::XElement > xBar = xDocument->createElement(u"bar"_ustr);
xDocument->appendChild(xRoot);
xRoot->appendChild(xFoo1);
xFoo1->appendChild(xBar);
xBar->appendChild(xFoo2);
xRoot->appendChild(xFooNs);
{
uno::Reference<xml::xpath::XXPathObject> xResult = xXPathAPI->eval(xRoot, u"count(//foo)"_ustr);
CPPUNIT_ASSERT(xResult);
CPPUNIT_ASSERT_EQUAL(xml::xpath::XPathObjectType_XPATH_NUMBER, xResult->getObjectType());
CPPUNIT_ASSERT_EQUAL(sal_Int8(2), xResult->getByte());
CPPUNIT_ASSERT_EQUAL(sal_Int16(2), xResult->getShort());
CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xResult->getLong());
CPPUNIT_ASSERT_EQUAL(sal_Int64(2), xResult->getHyper());
CPPUNIT_ASSERT_EQUAL(float(2), xResult->getFloat());
CPPUNIT_ASSERT_EQUAL(double(2), xResult->getDouble());
CPPUNIT_ASSERT_EQUAL(u"2"_ustr, xResult->getString());
}
{
uno::Reference<xml::xpath::XXPathObject> xResult = xXPathAPI->eval(xRoot, u"count(//foo) = 2"_ustr);
CPPUNIT_ASSERT(xResult);
CPPUNIT_ASSERT_EQUAL(xml::xpath::XPathObjectType_XPATH_BOOLEAN, xResult->getObjectType());
CPPUNIT_ASSERT_EQUAL(sal_True, xResult->getBoolean());
CPPUNIT_ASSERT_EQUAL(u"true"_ustr, xResult->getString());
}
{
uno::Reference<xml::xpath::XXPathObject> xResult = xXPathAPI->eval(xRoot, u"local-name(foo)"_ustr);
CPPUNIT_ASSERT(xResult);
CPPUNIT_ASSERT_EQUAL(xml::xpath::XPathObjectType_XPATH_STRING, xResult->getObjectType());
CPPUNIT_ASSERT_EQUAL(u"foo"_ustr, xResult->getString());
}
}
void testXNodeList_NodeList()
{
uno::Reference<xml::xpath::XXPathAPI> xXPathAPI( getMultiServiceFactory()->createInstance(u"com.sun.star.xml.xpath.XPathAPI"_ustr), uno::UNO_QUERY_THROW );
@@ -396,6 +442,7 @@ public:
CPPUNIT_TEST(warningInputTest);
CPPUNIT_TEST(errorInputTest);
CPPUNIT_TEST(testXDocumentBuilder);
CPPUNIT_TEST(testXXPathObject);
CPPUNIT_TEST(testXNodeList_NodeList);
CPPUNIT_TEST(serializerTest);
CPPUNIT_TEST_SUITE_END();