unoxml/JunitTest_unordf_complex.mk              |   38 -
 unoxml/Module_unoxml.mk                         |    1 
 unoxml/qa/complex/unoxml/RDFRepositoryTest.java |  497 ------------------------
 unoxml/qa/unit/rdftest.cxx                      |  386 ++++++++++++++++--
 4 files changed, 338 insertions(+), 584 deletions(-)

New commits:
commit b42b218bd72ed490ed765588d97da67b9b309f59
Author:     Xisco Fauli <[email protected]>
AuthorDate: Tue Sep 17 16:22:25 2024 +0200
Commit:     Xisco Fauli <[email protected]>
CommitDate: Wed Sep 18 08:51:03 2024 +0200

    unoxml: move checkRDF from Java to CppUnittest
    
    Change-Id: If4e3120643c40f52b99bb71782c4c34a34871031
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173567
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <[email protected]>

diff --git a/unoxml/JunitTest_unordf_complex.mk 
b/unoxml/JunitTest_unordf_complex.mk
deleted file mode 100644
index 948a68303994..000000000000
--- a/unoxml/JunitTest_unordf_complex.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
-#
-# This file is part of the LibreOffice project.
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# This file incorporates work covered by the following license notice:
-#
-#   Licensed to the Apache Software Foundation (ASF) under one or more
-#   contributor license agreements. See the NOTICE file distributed
-#   with this work for additional information regarding copyright
-#   ownership. The ASF licenses this file to you under the Apache
-#   License, Version 2.0 (the "License"); you may not use this file
-#   except in compliance with the License. You may obtain a copy of
-#   the License at http://www.apache.org/licenses/LICENSE-2.0 .
-#
-
-$(eval $(call gb_JunitTest_JunitTest,unordf_complex))
-
-$(eval $(call gb_JunitTest_set_defs,unordf_complex,\
-    $$(DEFS) \
-    
-Dorg.openoffice.test.arg.tdoc=$(SRCDIR)/unoxml/qa/complex/unoxml/testdocuments 
\
-))
-
-$(eval $(call gb_JunitTest_use_unoapi_jars,unordf_complex))
-
-$(eval $(call gb_JunitTest_add_sourcefiles,unordf_complex,\
-    unoxml/qa/complex/unoxml/RDFRepositoryTest \
-    unoxml/qa/complex/unoxml/TestDocument \
-))
-
-$(eval $(call gb_JunitTest_add_classes,unordf_complex,\
-    complex.unoxml.RDFRepositoryTest \
-))
-
-# vim: set noet sw=4 ts=4:
diff --git a/unoxml/Module_unoxml.mk b/unoxml/Module_unoxml.mk
index 1a302c17a91a..54d8a5e710ae 100644
--- a/unoxml/Module_unoxml.mk
+++ b/unoxml/Module_unoxml.mk
@@ -36,7 +36,6 @@ $(eval $(call gb_Module_add_slowcheck_targets,unoxml,\
 
 $(eval $(call gb_Module_add_subsequentcheck_targets,unoxml,\
     JunitTest_unoxml_complex \
-    JunitTest_unordf_complex \
 ))
 
 # vim: set noet sw=4 ts=4:
diff --git a/unoxml/qa/complex/unoxml/RDFRepositoryTest.java 
b/unoxml/qa/complex/unoxml/RDFRepositoryTest.java
deleted file mode 100644
index d6b4ec2c06ec..000000000000
--- a/unoxml/qa/complex/unoxml/RDFRepositoryTest.java
+++ /dev/null
@@ -1,497 +0,0 @@
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- *   Licensed to the Apache Software Foundation (ASF) under one or more
- *   contributor license agreements. See the NOTICE file distributed
- *   with this work for additional information regarding copyright
- *   ownership. The ASF licenses this file to you under the Apache
- *   License, Version 2.0 (the "License"); you may not use this file
- *   except in compliance with the License. You may obtain a copy of
- *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-package complex.unoxml;
-
-import helper.StreamSimulator;
-
-import com.sun.star.uno.UnoRuntime;
-import com.sun.star.uno.XComponentContext;
-import com.sun.star.lang.XMultiServiceFactory;
-import com.sun.star.lang.XServiceInfo;
-import com.sun.star.lang.IllegalArgumentException;
-import com.sun.star.beans.XPropertySet;
-import com.sun.star.beans.Pair;
-import com.sun.star.beans.StringPair;
-import com.sun.star.container.XEnumeration;
-import com.sun.star.container.ElementExistException;
-import com.sun.star.container.NoSuchElementException;
-import com.sun.star.io.XInputStream;
-import com.sun.star.io.XOutputStream;
-import com.sun.star.text.XTextRange;
-import com.sun.star.text.XText;
-import com.sun.star.rdf.*;
-import lib.TestParameters;
-
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.openoffice.test.OfficeConnection;
-import static org.junit.Assert.*;
-
-/**
- * Test case for service com.sun.star.rdf.Repository
- * Currently, this service is implemented in
- * unoxml/source/rdf/librdf_repository.cxx
- *
- */
-public class RDFRepositoryTest
-{
-    XComponentContext xContext;
-    String tempDir;
-
-    XDocumentRepository xRep;
-    XURI foo;
-    XURI bar;
-    XURI baz;
-    XURI uint;
-    XURI rdfslabel;
-    XURI base;
-    XBlankNode blank;
-    XLiteral lit;
-    XLiteral litlang;
-    XLiteral littype;
-    String rdfs = "http://www.w3.org/2000/01/rdf-schema#";;
-
-    /**
-     * The test parameters
-     */
-    private TestParameters param = null;
-
-    @Before public void before()
-    {
-        try {
-            XMultiServiceFactory xMSF = getMSF();
-            param = new TestParameters();
-            param.put("ServiceFactory", xMSF);
-
-            assertNotNull("could not create MultiServiceFactory.", xMSF);
-            XPropertySet xPropertySet = 
UnoRuntime.queryInterface(XPropertySet.class, xMSF);
-            Object defaultCtx = 
xPropertySet.getPropertyValue("DefaultContext");
-            xContext = UnoRuntime.queryInterface(XComponentContext.class, 
defaultCtx);
-            assertNotNull("could not get component context.", xContext);
-
-            tempDir = util.utils.getOfficeTemp/*Dir*/(xMSF);
-            System.out.println("tempdir: " + tempDir);
-
-            foo = URI.create(xContext, "uri:foo");
-            assertNotNull("foo", foo);
-            bar = URI.create(xContext, "uri:bar");
-            assertNotNull("bar", bar);
-            baz = URI.create(xContext, "uri:baz");
-            assertNotNull("baz", baz);
-            uint = URI.create(xContext, "uri:int");
-            assertNotNull("uint", uint);
-            blank = BlankNode.create(xContext, "_:uno");
-            assertNotNull("blank", blank);
-            lit = Literal.create(xContext, "I am the literal");
-            assertNotNull("lit", lit);
-            litlang = Literal.createWithLanguage(xContext,
-                "I am the literal", "en");
-            assertNotNull("litlang", litlang);
-            littype = Literal.createWithType(xContext, "42", uint);
-            assertNotNull("littype", littype);
-
-            rdfslabel = URI.create(xContext, rdfs + "label");
-            assertNotNull("rdfslabel", rdfslabel);
-            base = URI.create(xContext, "base-uri:"); //FIXME
-            assertNotNull("base", base);
-        } catch (Exception e) {
-            report(e);
-        }
-        //FIXME: ?
-//            xRep = Repository.create(xContext);
-        System.out.println("Creating service Repository...");
-        xRep = UnoRuntime.queryInterface(XDocumentRepository.class, 
Repository.create(xContext));
-        assertNotNull("null", xRep);
-        System.out.println("...done");
-    }
-
-    @After public void after()
-    {
-        xRep = null;
-    }
-
-    @Test public void check()
-    {
-        try {
-            System.out.println("Checking that new repository is really 
empty...");
-            assertTrue("empty: graphs", 0 == xRep.getGraphNames().length);
-
-            XEnumeration stmts;
-            stmts = xRep.getStatements(null, null, null);
-            assertTrue("empty: stmts", !stmts.hasMoreElements());
-
-            System.out.println("...done");
-
-            System.out.println("Checking graph creation...");
-
-            XNamedGraph xFooGraph = xRep.createGraph(foo);
-            assertNotNull("foo graph", xFooGraph);
-
-            try {
-                xRep.createGraph(foo);
-                fail("creating duplicate graph was allowed");
-            } catch (ElementExistException e) {
-                // ignore
-            }
-
-            try {
-                xRep.createGraph(null);
-                fail("invalid graph name was allowed");
-            } catch (IllegalArgumentException e) {
-                // ignore
-            }
-
-            XURI[] names = xRep.getGraphNames();
-            assertTrue("no foo graph in getGraphNames",
-                1 == names.length && eq(names[0], foo));
-            assertNotNull("no foo graph", xRep.getGraph(foo));
-
-            stmts = xFooGraph.getStatements(null, null, null);
-            assertTrue("stmts in foo graph", !stmts.hasMoreElements());
-
-            XOutputStream xFooOut =
-                new StreamSimulator(tempDir + "empty.rdf", false, param);
-            xRep.exportGraph(FileFormat.RDF_XML, xFooOut, foo, base);
-            xFooOut.closeOutput();
-
-            XInputStream xFooIn =
-                new StreamSimulator(tempDir + "empty.rdf", true, param);
-            xRep.importGraph(FileFormat.RDF_XML, xFooIn, bar, base);
-            assertNotNull("no bar graph", xRep.getGraph(bar));
-
-            System.out.println("...done");
-
-            System.out.println("Checking graph manipulation...");
-
-            XEnumeration xFooEnum;
-
-            Statement xFoo_FooBarBaz = new Statement(foo, bar, baz, foo);
-            xFooGraph.addStatement(foo, bar, baz);
-            xFooEnum = xFooGraph.getStatements(null, null, null);
-            assertTrue("addStatement(foo,bar,baz)",
-                eq(xFooEnum, new Statement[] { xFoo_FooBarBaz }));
-
-            Statement xFoo_FooBarBlank = new Statement(foo, bar, blank, foo);
-            xFooGraph.addStatement(foo, bar, blank);
-            xFooEnum = xFooGraph.getStatements(null, null, null);
-            assertTrue("addStatement(foo,bar,blank)",
-                eq(xFooEnum,
-                    new Statement[] { xFoo_FooBarBaz, xFoo_FooBarBlank }));
-            xFooEnum = xRep.getStatements(null, null, null);
-            assertTrue("addStatement(foo,bar,blank) (global)",
-                eq(xFooEnum,
-                    new Statement[] { xFoo_FooBarBaz, xFoo_FooBarBlank }));
-
-            Statement xFoo_BazBarLit = new Statement(baz, bar, lit, foo);
-            xFooGraph.addStatement(baz, bar, lit);
-            xFooEnum = xFooGraph.getStatements(null, null, null);
-            assertTrue("addStatement(baz,bar,lit)",
-                eq(xFooEnum, new Statement[] {
-                    xFoo_FooBarBaz, xFoo_FooBarBlank, xFoo_BazBarLit }));
-            xFooEnum = xFooGraph.getStatements(baz, bar, null);
-            assertTrue("addStatement(baz,bar,lit) (baz,bar)",
-                eq(xFooEnum, new Statement[] { xFoo_BazBarLit }));
-
-            Statement xFoo_BazBarLitlang =
-                new Statement(baz, bar, litlang, foo);
-            xFooGraph.addStatement(baz, bar, litlang);
-            xFooEnum = xFooGraph.getStatements(null, null, null);
-            assertTrue("addStatement(baz,bar,litlang)",
-                eq(xFooEnum, new Statement[] {
-                    xFoo_FooBarBaz, xFoo_FooBarBlank, xFoo_BazBarLit,
-                    xFoo_BazBarLitlang }));
-            xFooEnum = xFooGraph.getStatements(null, null, baz);
-            assertTrue("addStatement(baz,bar,litlang) (baz)",
-                eq(xFooEnum, new Statement[] { xFoo_FooBarBaz }));
-
-            Statement xFoo_BazBarLittype =
-                new Statement(baz, bar, littype, foo);
-            xFooGraph.addStatement(baz, bar, littype);
-            xFooEnum = xFooGraph.getStatements(null, null, null);
-            assertTrue("addStatement(baz,bar,littype)",
-                eq(xFooEnum, new Statement[] { xFoo_FooBarBaz, 
xFoo_FooBarBlank,
-                    xFoo_BazBarLit, xFoo_BazBarLitlang, xFoo_BazBarLittype }));
-
-            xFooGraph.removeStatements(baz, bar, litlang);
-            xFooEnum = xFooGraph.getStatements(null, null, null);
-            assertTrue("removeStatement(baz,bar,litlang)",
-                eq(xFooEnum, new Statement[] { xFoo_FooBarBaz, 
xFoo_FooBarBlank,
-                    xFoo_BazBarLit, xFoo_BazBarLittype }));
-
-            xFooGraph.removeStatements(foo, bar, null);
-            xFooEnum = xFooGraph.getStatements(null, null, null);
-            assertTrue("removeStatement(foo,bar,null)",
-                eq(xFooEnum, new Statement[] {
-                    xFoo_BazBarLit, xFoo_BazBarLittype }));
-
-            xFooGraph.addStatement(foo, bar, baz);
-            xFooEnum = xFooGraph.getStatements(null, null, null);
-            assertTrue("addStatement(foo,bar,baz) (re-add)",
-                eq(xFooEnum, new Statement[] { xFoo_FooBarBaz,
-                    xFoo_BazBarLit, xFoo_BazBarLittype }));
-
-            xFooGraph.addStatement(foo, bar, baz);
-            xFooEnum = xFooGraph.getStatements(null, null, null);
-            assertTrue("addStatement(foo,bar,baz) (duplicate)",
-                eq(xFooEnum, new Statement[] { xFoo_FooBarBaz,
-                    xFoo_BazBarLit, xFoo_BazBarLittype }));
-
-            xFooGraph.addStatement(xFooGraph, bar, baz);
-            xFooEnum = xFooGraph.getStatements(null, null, null);
-            assertTrue("addStatement(foo,bar,baz) (triplicate, as graph)",
-                eq(xFooEnum, new Statement[] { xFoo_FooBarBaz,
-                     xFoo_BazBarLit, xFoo_BazBarLittype }));
-
-            System.out.println("...done");
-
-            System.out.println("Checking graph import/export...");
-
-            xFooOut = new StreamSimulator(tempDir + "foo.rdf", false, param);
-            xRep.exportGraph(FileFormat.RDF_XML, xFooOut, foo, base);
-            xFooOut.closeOutput();
-
-            xFooIn = new StreamSimulator(tempDir + "foo.rdf", true, param);
-            try {
-                xRep.importGraph(FileFormat.RDF_XML, xFooIn, bar, base);
-                fail("importing existing graph did not fail");
-            } catch (ElementExistException e) {
-                // ignore
-            }
-
-            xFooIn = new StreamSimulator(tempDir + "foo.rdf", true, param);
-            xRep.importGraph(FileFormat.RDF_XML, xFooIn, baz, base);
-            XNamedGraph xBazGraph =  xRep.getGraph(baz);
-            assertNotNull("no baz graph", xBazGraph);
-
-            Statement xBaz_FooBarBaz = new Statement(foo, bar, baz, baz);
-            Statement xBaz_BazBarLit = new Statement(baz, bar, lit, baz);
-            Statement xBaz_BazBarLittype =
-                new Statement(baz, bar, littype, baz);
-            XEnumeration xBazEnum = xBazGraph.getStatements(null, null, null);
-            assertTrue("importing exported graph",
-                eq(xBazEnum, new Statement[] {
-                     xBaz_FooBarBaz, xBaz_BazBarLit, xBaz_BazBarLittype }));
-
-            System.out.println("...done");
-
-            System.out.println("Checking graph deletion...");
-
-            xFooGraph.clear();
-            xFooEnum = xFooGraph.getStatements(null, null, null);
-            assertTrue("clear", eq(xFooEnum, new Statement[] { }));
-
-            xRep.destroyGraph(baz);
-            assertNull("baz graph zombie", xRep.getGraph(baz));
-
-            try {
-                xBazGraph.clear();
-                fail("deleted graph not invalid (clear)");
-            } catch (NoSuchElementException e) {
-                // ignore
-            }
-
-            try {
-                xBazGraph.addStatement(foo, foo, foo);
-                fail("deleted graph not invalid (add)");
-            } catch (NoSuchElementException e) {
-                // ignore
-            }
-
-            try {
-                xBazGraph.removeStatements(null, null, null);
-                fail("deleted graph not invalid (remove)");
-            } catch (NoSuchElementException e) {
-                // ignore
-            }
-
-            try {
-                xBazGraph.getStatements(null, null, null);
-                fail("deleted graph not invalid (get)");
-            } catch (NoSuchElementException e) {
-                // ignore
-            }
-
-            System.out.println("...done");
-
-        } catch (Exception e) {
-            report(e);
-        }
-    }
-
-// utilities -------------------------------------------------------------
-
-    public void report(Exception e) {
-        System.out.println("Exception occurred:");
-        e.printStackTrace();
-        fail();
-    }
-
-    public static String toS(XNode n) {
-        if (null == n)
-        {
-            return "< null >";
-        }
-        return n.getStringValue();
-    }
-
-    static boolean isBlank(XNode i_node)
-    {
-        XBlankNode blank = UnoRuntime.queryInterface(XBlankNode.class, i_node);
-        return blank != null;
-    }
-
-    static Statement[] toSeq(XEnumeration i_Enum) throws Exception
-    {
-        java.util.Collection<Statement> c = new 
java.util.ArrayList<Statement>();
-        while (i_Enum.hasMoreElements()) {
-            Statement s = (Statement) i_Enum.nextElement();
-            c.add(s);
-        }
-        return c.toArray(new Statement[c.size()]);
-    }
-
-    private static class StmtComp implements java.util.Comparator<Statement>
-    {
-        public int compare(Statement left, Statement right)
-        {
-            int eq;
-            if ((eq = cmp(left.Graph,     right.Graph    )) != 0)
-            {
-                return eq;
-            }
-            if ((eq = cmp(left.Subject,   right.Subject  )) != 0)
-            {
-                return eq;
-            }
-            if ((eq = cmp(left.Predicate, right.Predicate)) != 0)
-            {
-                return eq;
-            }
-            if ((eq = cmp(left.Object,    right.Object   )) != 0)
-            {
-                return eq;
-            }
-            return 0;
-        }
-
-        private int cmp(XNode i_Left, XNode i_Right)
-        {
-            if (isBlank(i_Left)) {
-                return isBlank(i_Right) ? 0 : 1;
-            } else {
-                if (isBlank(i_Right)) {
-                    return -1;
-                } else {
-                    return toS(i_Left).compareTo(toS(i_Right));
-                }
-            }
-        }
-    }
-
-    static boolean eq(Statement i_Left, Statement i_Right)
-    {
-        XURI lG = i_Left.Graph;
-        XURI rG = i_Right.Graph;
-        if (!eq(lG, rG)) {
-            System.out.println("Graphs differ: " + toS(lG) + " != " + toS(rG));
-            return false;
-        }
-        if (!eq(i_Left.Subject, i_Right.Subject)) {
-            System.out.println("Subjects differ: " +
-                i_Left.Subject.getStringValue() + " != " +
-                i_Right.Subject.getStringValue());
-            return false;
-        }
-        if (!eq(i_Left.Predicate, i_Right.Predicate)) {
-            System.out.println("Predicates differ: " +
-                i_Left.Predicate.getStringValue() + " != " +
-                i_Right.Predicate.getStringValue());
-            return false;
-        }
-        if (!eq(i_Left.Object, i_Right.Object)) {
-            System.out.println("Objects differ: " +
-                i_Left.Object.getStringValue() + " != " +
-                i_Right.Object.getStringValue());
-            return false;
-        }
-        return true;
-    }
-
-    static boolean eq(Statement[] i_Result, Statement[] i_Expected)
-    {
-        if (i_Result.length != i_Expected.length) {
-            System.out.println("eq: different lengths: " + i_Result.length + " 
" +
-                i_Expected.length);
-            return false;
-        }
-        Statement[] expected = i_Expected.clone(); // make a copy
-        java.util.Arrays.sort(i_Result, new StmtComp());
-        java.util.Arrays.sort(expected, new StmtComp());
-        for (int i = 0; i < expected.length; ++i) {
-            if (!eq(i_Result[i], expected[i]))
-            {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    static boolean eq(XEnumeration i_Enum, Statement[] i_Expected)
-        throws Exception
-    {
-        Statement[] current = toSeq(i_Enum);
-        return eq(current, i_Expected);
-    }
-
-    static boolean eq(XNode i_Left, XNode i_Right)
-    {
-        if (i_Left == null) {
-            return (i_Right == null);
-        } else {
-            return (i_Right != null) &&
-                (i_Left.getStringValue().equals(i_Right.getStringValue())
-                // FIXME: hack: blank nodes considered equal
-                || (isBlank(i_Left) && isBlank(i_Right)));
-        }
-    }
-
-    private XMultiServiceFactory getMSF()
-    {
-        return UnoRuntime.queryInterface(XMultiServiceFactory.class, 
connection.getComponentContext().getServiceManager());
-    }
-
-    // setup and close connections
-    @BeforeClass public static void setUpConnection() throws Exception {
-        System.out.println("setUpConnection()");
-        connection.setUp();
-    }
-
-    @AfterClass public static void tearDownConnection()
-        throws InterruptedException, com.sun.star.uno.Exception
-    {
-        System.out.println("tearDownConnection()");
-        connection.tearDown();
-    }
-
-    private static final OfficeConnection connection = new OfficeConnection();
-}
-
diff --git a/unoxml/qa/unit/rdftest.cxx b/unoxml/qa/unit/rdftest.cxx
index bad8fc7ad160..41e5a2d5198d 100644
--- a/unoxml/qa/unit/rdftest.cxx
+++ b/unoxml/qa/unit/rdftest.cxx
@@ -11,10 +11,12 @@
 
 #include <comphelper/processfactory.hxx>
 
+#include <com/sun/star/container/ElementExistException.hpp>
 #include <com/sun/star/rdf/Statement.hpp>
 #include <com/sun/star/rdf/XDocumentMetadataAccess.hpp>
 #include <com/sun/star/rdf/XDocumentRepository.hpp>
 #include <com/sun/star/rdf/XRepository.hpp>
+#include <com/sun/star/rdf/BlankNode.hpp>
 #include <com/sun/star/rdf/FileFormat.hpp>
 #include <com/sun/star/rdf/Literal.hpp>
 #include <com/sun/star/rdf/Repository.hpp>
@@ -329,6 +331,294 @@ CPPUNIT_TEST_FIXTURE(RDFStreamTest, testSPARQL)
     sQuery = "ASK { ?pkg rdf:type pkg:Package . }";
     CPPUNIT_ASSERT(xDocRepo->queryAsk(sNss + sQuery));
 }
+
+CPPUNIT_TEST_FIXTURE(RDFStreamTest, testRDF)
+{
+    const uno::Reference<uno::XComponentContext> 
xContext(comphelper::getProcessComponentContext(),
+                                                          
css::uno::UNO_SET_THROW);
+    uno::Reference<rdf::XRepository> xRepo = rdf::Repository::create(xContext);
+    uno::Reference<rdf::XDocumentRepository> xDocRepo(xRepo, uno::UNO_QUERY);
+    CPPUNIT_ASSERT(xDocRepo);
+    uno::Reference<css::rdf::XURI> xFoo = rdf::URI::create(xContext, 
"uri:foo");
+    uno::Reference<css::rdf::XURI> xBase = rdf::URI::create(xContext, 
"base-uri:");
+    uno::Reference<css::rdf::XURI> xBar = rdf::URI::create(xContext, 
"uri:bar");
+    uno::Reference<css::rdf::XURI> xBaz = rdf::URI::create(xContext, 
"uri:baz");
+    uno::Reference<css::rdf::XLiteral> xLit = rdf::Literal::create(xContext, 
"I am the literal");
+    uno::Reference<css::rdf::XURI> xInt = rdf::URI::create(xContext, 
"uri:int");
+    uno::Reference<css::rdf::XLiteral> xLitType
+        = rdf::Literal::createWithType(xContext, "42", xInt);
+    uno::Reference<css::rdf::XBlankNode> xBlank = 
rdf::BlankNode::create(xContext, "_:uno");
+
+    // 1. empty: graphs
+    CPPUNIT_ASSERT_EQUAL(sal_uInt32(0), xDocRepo->getGraphNames().size());
+
+    uno::Reference<container::XEnumeration> xEnum
+        = xDocRepo->getStatements(nullptr, nullptr, nullptr);
+
+    // 2. empty: stmts
+    CPPUNIT_ASSERT(!xEnum->hasMoreElements());
+
+    uno::Reference<rdf::XNamedGraph> xGraph = xDocRepo->createGraph(xFoo);
+
+    // 3. foo graph
+    CPPUNIT_ASSERT(xGraph);
+
+    // 4. creating duplicate graph is not allowed
+    try
+    {
+        xDocRepo->createGraph(xFoo);
+        CPPUNIT_FAIL("expected ElementExistException");
+    }
+    catch (com::sun::star::container::ElementExistException&)
+    {
+    }
+
+    // 5. invalid graph name is not allowed
+    try
+    {
+        xDocRepo->createGraph(nullptr);
+        CPPUNIT_FAIL("expected IllegalArgumentException");
+    }
+    catch (css::lang::IllegalArgumentException&)
+    {
+    }
+
+    // 6. foo graph in getGraphNames
+    css::uno::Sequence<css::uno::Reference<css::rdf::XURI>> xURI = 
xDocRepo->getGraphNames();
+    CPPUNIT_ASSERT_EQUAL(sal_uInt32(1), xURI.size());
+    CPPUNIT_ASSERT_EQUAL(xFoo->getStringValue(), xURI[0]->getStringValue());
+
+    // 7. foo graph
+    uno::Reference<rdf::XNamedGraph> xFooGraph = xDocRepo->getGraph(xFoo);
+    CPPUNIT_ASSERT(xFooGraph);
+
+    xEnum = xDocRepo->getStatements(nullptr, nullptr, nullptr);
+
+    // 8. empty: stmts
+    CPPUNIT_ASSERT(!xEnum->hasMoreElements());
+
+    const uno::Reference<com::sun::star::ucb::XSimpleFileAccess> xFileAccess(
+        xContext->getServiceManager()->createInstanceWithContext(
+            u"com.sun.star.ucb.SimpleFileAccess"_ustr, xContext),
+        uno::UNO_QUERY_THROW);
+    uno::Reference<io::XOutputStream> xOutputStream(
+        xFileAccess->openFileWrite(maTempFile.GetURL()));
+    xDocRepo->exportGraph(rdf::FileFormat::RDF_XML, xOutputStream, xFoo, 
xBase);
+    xOutputStream->closeOutput();
+
+    uno::Reference<io::XInputStream> 
xInputStream(xFileAccess->openFileRead(maTempFile.GetURL()),
+                                                  uno::UNO_SET_THROW);
+    xDocRepo->importGraph(rdf::FileFormat::RDF_XML, xInputStream, xBar, xBase);
+
+    // 7. bar graph
+    CPPUNIT_ASSERT(xDocRepo->getGraph(xBar));
+
+    xFooGraph->addStatement(xFoo, xBar, xBaz);
+
+    xEnum = xFooGraph->getStatements(nullptr, nullptr, nullptr);
+
+    // 8. addStatement(foo,bar,baz)
+    rdf::Statement aFoo_FooBarBaz(xFoo, xBar, xBaz, xFoo);
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFoo_FooBarBaz, 
xEnum->nextElement().get<rdf::Statement>());
+
+    CPPUNIT_ASSERT(!xEnum->hasMoreElements());
+
+    xFooGraph->addStatement(xFoo, xBar, xBlank);
+
+    xEnum = xFooGraph->getStatements(nullptr, nullptr, nullptr);
+
+    // 9. addStatement(foo,bar,blank)
+    rdf::Statement aFoo_FooBarBlank(xFoo, xBar, xBlank, xFoo);
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFoo_FooBarBlank, 
xEnum->nextElement().get<rdf::Statement>());
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFoo_FooBarBaz, 
xEnum->nextElement().get<rdf::Statement>());
+
+    CPPUNIT_ASSERT(!xEnum->hasMoreElements());
+
+    xFooGraph->addStatement(xBaz, xBar, xLit);
+
+    xEnum = xFooGraph->getStatements(nullptr, nullptr, nullptr);
+
+    // 10. addStatement(baz,bar,lit)
+    rdf::Statement aFoo_BazBarLit(xBaz, xBar, xLit, xFoo);
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFoo_BazBarLit, 
xEnum->nextElement().get<rdf::Statement>());
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFoo_FooBarBlank, 
xEnum->nextElement().get<rdf::Statement>());
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFoo_FooBarBaz, 
xEnum->nextElement().get<rdf::Statement>());
+
+    CPPUNIT_ASSERT(!xEnum->hasMoreElements());
+
+    xEnum = xFooGraph->getStatements(xBaz, xBar, nullptr);
+
+    // 11. addStatement(baz,bar,lit) (baz,bar)
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFoo_BazBarLit, 
xEnum->nextElement().get<rdf::Statement>());
+    CPPUNIT_ASSERT(!xEnum->hasMoreElements());
+
+    uno::Reference<css::rdf::XLiteral> xLitLang
+        = rdf::Literal::createWithLanguage(xContext, "I am the literal", "en");
+    xFooGraph->addStatement(xBaz, xBar, xLitLang);
+
+    xEnum = xFooGraph->getStatements(nullptr, nullptr, nullptr);
+
+    // 12. addStatement(baz,bar,litlang)
+    rdf::Statement aFoo_BazBarLitlang(xBaz, xBar, xLitLang, xFoo);
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFoo_BazBarLitlang, 
xEnum->nextElement().get<rdf::Statement>());
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFoo_BazBarLit, 
xEnum->nextElement().get<rdf::Statement>());
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFoo_FooBarBlank, 
xEnum->nextElement().get<rdf::Statement>());
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFoo_FooBarBaz, 
xEnum->nextElement().get<rdf::Statement>());
+
+    CPPUNIT_ASSERT(!xEnum->hasMoreElements());
+
+    xEnum = xFooGraph->getStatements(nullptr, nullptr, xBaz);
+
+    // 13. addStatement(baz,bar,litlang) (baz)
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFoo_FooBarBaz, 
xEnum->nextElement().get<rdf::Statement>());
+    CPPUNIT_ASSERT(!xEnum->hasMoreElements());
+
+    xFooGraph->addStatement(xBaz, xBar, xLitType);
+
+    xEnum = xFooGraph->getStatements(nullptr, nullptr, nullptr);
+
+    // 14. addStatement(baz,bar,littype)
+    rdf::Statement aFoo_BazBarLitType(xBaz, xBar, xLitType, xFoo);
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFoo_BazBarLitType, 
xEnum->nextElement().get<rdf::Statement>());
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFoo_BazBarLitlang, 
xEnum->nextElement().get<rdf::Statement>());
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFoo_BazBarLit, 
xEnum->nextElement().get<rdf::Statement>());
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFoo_FooBarBlank, 
xEnum->nextElement().get<rdf::Statement>());
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFoo_FooBarBaz, 
xEnum->nextElement().get<rdf::Statement>());
+
+    CPPUNIT_ASSERT(!xEnum->hasMoreElements());
+
+    xFooGraph->removeStatements(xBaz, xBar, xLitLang);
+
+    xEnum = xFooGraph->getStatements(nullptr, nullptr, nullptr);
+
+    // 15. removeStatement(baz,bar,litlang)
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFoo_BazBarLitType, 
xEnum->nextElement().get<rdf::Statement>());
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFoo_BazBarLit, 
xEnum->nextElement().get<rdf::Statement>());
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFoo_FooBarBlank, 
xEnum->nextElement().get<rdf::Statement>());
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFoo_FooBarBaz, 
xEnum->nextElement().get<rdf::Statement>());
+
+    CPPUNIT_ASSERT(!xEnum->hasMoreElements());
+
+    xFooGraph->removeStatements(xFoo, xBar, nullptr);
+
+    xEnum = xFooGraph->getStatements(nullptr, nullptr, nullptr);
+
+    // 16. removeStatement(foo,bar,null)
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFoo_BazBarLitType, 
xEnum->nextElement().get<rdf::Statement>());
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFoo_BazBarLit, 
xEnum->nextElement().get<rdf::Statement>());
+
+    CPPUNIT_ASSERT(!xEnum->hasMoreElements());
+
+    xFooGraph->addStatement(xFoo, xBar, xBaz);
+
+    xEnum = xFooGraph->getStatements(nullptr, nullptr, nullptr);
+
+    // 17. addStatement(foo,bar,baz) (re-add)
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFoo_FooBarBaz, 
xEnum->nextElement().get<rdf::Statement>());
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFoo_BazBarLitType, 
xEnum->nextElement().get<rdf::Statement>());
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFoo_BazBarLit, 
xEnum->nextElement().get<rdf::Statement>());
+
+    CPPUNIT_ASSERT(!xEnum->hasMoreElements());
+
+    xFooGraph->addStatement(xFoo, xBar, xBaz);
+
+    xEnum = xFooGraph->getStatements(nullptr, nullptr, nullptr);
+
+    // 18. addStatement(foo,bar,baz) (duplicate)
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFoo_FooBarBaz, 
xEnum->nextElement().get<rdf::Statement>());
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFoo_BazBarLitType, 
xEnum->nextElement().get<rdf::Statement>());
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFoo_BazBarLit, 
xEnum->nextElement().get<rdf::Statement>());
+
+    CPPUNIT_ASSERT(!xEnum->hasMoreElements());
+
+    xFooGraph->addStatement(xFooGraph, xBar, xBaz);
+
+    xEnum = xFooGraph->getStatements(nullptr, nullptr, nullptr);
+
+    // 19. addStatement(foo,bar,baz) (triplicate, as graph)
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFoo_FooBarBaz, 
xEnum->nextElement().get<rdf::Statement>());
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFoo_BazBarLitType, 
xEnum->nextElement().get<rdf::Statement>());
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFoo_BazBarLit, 
xEnum->nextElement().get<rdf::Statement>());
+
+    CPPUNIT_ASSERT(!xEnum->hasMoreElements());
+
+    xOutputStream.set(xFileAccess->openFileWrite(maTempFile.GetURL()));
+    xDocRepo->exportGraph(rdf::FileFormat::RDF_XML, xOutputStream, xFoo, 
xBase);
+    xOutputStream->closeOutput();
+
+    xInputStream.set(xFileAccess->openFileRead(maTempFile.GetURL()), 
uno::UNO_SET_THROW);
+    try
+    {
+        xDocRepo->importGraph(rdf::FileFormat::RDF_XML, xInputStream, xBar, 
xBase);
+        CPPUNIT_FAIL("importing existing graph did not fail");
+    }
+    catch (com::sun::star::container::ElementExistException&)
+    {
+    }
+
+    xInputStream.set(xFileAccess->openFileRead(maTempFile.GetURL()), 
uno::UNO_SET_THROW);
+    xDocRepo->importGraph(rdf::FileFormat::RDF_XML, xInputStream, xBaz, xBase);
+    uno::Reference<rdf::XNamedGraph> xBazGraph = xDocRepo->getGraph(xBaz);
+    CPPUNIT_ASSERT(xBazGraph);
+
+    rdf::Statement aBaz_FooBarBaz(xFoo, xBar, xBaz, xBaz);
+    rdf::Statement aBaz_FooBarLit(xBaz, xBar, xLit, xBaz);
+    rdf::Statement aBaz_FooBarLitType(xBaz, xBar, xLitType, xBaz);
+
+    xEnum = xBazGraph->getStatements(nullptr, nullptr, nullptr);
+
+    // 20. importing exported graph
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aBaz_FooBarBaz, 
xEnum->nextElement().get<rdf::Statement>());
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aBaz_FooBarLitType, 
xEnum->nextElement().get<rdf::Statement>());
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aBaz_FooBarLit, 
xEnum->nextElement().get<rdf::Statement>());
+
+    CPPUNIT_ASSERT(!xEnum->hasMoreElements());
+
+    // 21. Checking graph deletion
+    xFooGraph->clear();
+    xEnum = xFooGraph->getStatements(nullptr, nullptr, nullptr);
+    CPPUNIT_ASSERT(!xEnum->hasMoreElements());
+
+    // 22. baz graph zombie
+    xDocRepo->destroyGraph(xBaz);
+    CPPUNIT_ASSERT(!xDocRepo->getGraph(xBaz));
+
+    try
+    {
+        xBazGraph->clear();
+        CPPUNIT_FAIL("deleted graph not invalid (clear)");
+    }
+    catch (com::sun::star::container::NoSuchElementException&)
+    {
+    }
+
+    try
+    {
+        xBazGraph->addStatement(xFoo, xFoo, xFoo);
+        CPPUNIT_FAIL("deleted graph not invalid (add)");
+    }
+    catch (com::sun::star::container::NoSuchElementException&)
+    {
+    }
+
+    try
+    {
+        xBazGraph->removeStatements(nullptr, nullptr, nullptr);
+        CPPUNIT_FAIL("deleted graph not invalid (remove)");
+    }
+    catch (com::sun::star::container::NoSuchElementException&)
+    {
+    }
+
+    try
+    {
+        xBazGraph->getStatements(nullptr, nullptr, nullptr);
+        CPPUNIT_FAIL("deleted graph not invalid (remove)");
+    }
+    catch (com::sun::star::container::NoSuchElementException&)
+    {
+    }
+}
 }
 
 CPPUNIT_PLUGIN_IMPLEMENT();
commit b8d5b98b06be493de6f57cf39f2e75393120392d
Author:     Xisco Fauli <[email protected]>
AuthorDate: Tue Sep 17 12:33:50 2024 +0200
Commit:     Xisco Fauli <[email protected]>
CommitDate: Wed Sep 18 08:50:56 2024 +0200

    unoxml: introduce CPPUNIT_ASSERT_STATEMENT_EQUAL
    
    Change-Id: I4e28939452e164bf368df5f222d535b29d7951bd
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173557
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <[email protected]>

diff --git a/unoxml/qa/unit/rdftest.cxx b/unoxml/qa/unit/rdftest.cxx
index b20b914f28d5..bad8fc7ad160 100644
--- a/unoxml/qa/unit/rdftest.cxx
+++ b/unoxml/qa/unit/rdftest.cxx
@@ -35,6 +35,25 @@ public:
     }
 };
 
+inline void assertStatementEqual(const rdf::Statement& rExpected, const 
rdf::Statement& rActual,
+                                 const CppUnit::SourceLine& rSourceLine)
+{
+    CPPUNIT_NS::assertEquals(rExpected.Object->getStringValue(), 
rActual.Object->getStringValue(),
+                             rSourceLine, "different Object");
+    CPPUNIT_NS::assertEquals(rExpected.Predicate->getStringValue(),
+                             rActual.Predicate->getStringValue(), rSourceLine,
+                             "different Predicate");
+    CPPUNIT_NS::assertEquals(rExpected.Subject->getStringValue(), 
rActual.Subject->getStringValue(),
+                             rSourceLine, "different Subject");
+
+    if (rExpected.Graph)
+        CPPUNIT_NS::assertEquals(rExpected.Graph->getStringValue(), 
rActual.Graph->getStringValue(),
+                                 rSourceLine, "different Graph");
+}
+
+#define CPPUNIT_ASSERT_STATEMENT_EQUAL(aExpected, aActual)                     
                    \
+    assertStatementEqual(aExpected, aActual, CPPUNIT_SOURCELINE())
+
 CPPUNIT_TEST_FIXTURE(RDFStreamTest, testCVE_2012_0037)
 {
     const uno::Reference<uno::XComponentContext> 
xContext(comphelper::getProcessComponentContext(),
@@ -61,10 +80,8 @@ CPPUNIT_TEST_FIXTURE(RDFStreamTest, testCVE_2012_0037)
     CPPUNIT_ASSERT(xGraph);
     uno::Reference<container::XEnumeration> xEnum = 
xGraph->getStatements(xFoo, xBar, nullptr);
 
-    rdf::Statement aStatement = xEnum->nextElement().get<rdf::Statement>();
-    CPPUNIT_ASSERT_EQUAL(OUString("uri:foo"), 
aStatement.Subject->getStringValue());
-    CPPUNIT_ASSERT_EQUAL(OUString("uri:bar"), 
aStatement.Predicate->getStringValue());
-    CPPUNIT_ASSERT_EQUAL(OUString("EVIL"), 
aStatement.Object->getStringValue());
+    rdf::Statement aFooBarEvil(xFoo, xBar, rdf::Literal::create(xContext, 
"EVIL"), xManifest);
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFooBarEvil, 
xEnum->nextElement().get<rdf::Statement>());
 }
 
 CPPUNIT_TEST_FIXTURE(RDFStreamTest, testRDFa)
@@ -76,28 +93,32 @@ CPPUNIT_TEST_FIXTURE(RDFStreamTest, testRDFa)
     uno::Reference<container::XEnumeration> xParaEnum = 
xParaEnumAccess->createEnumeration();
     uno::Reference<text::XTextRange> xTextRange(xParaEnum->nextElement(), 
uno::UNO_QUERY);
 
-    xTextRange->setString(u"behold, for I am the content."_ustr);
+    OUString aText(u"behold, for I am the content."_ustr);
+    const uno::Reference<uno::XComponentContext> 
xContext(comphelper::getProcessComponentContext(),
+                                                          
css::uno::UNO_SET_THROW);
+    uno::Reference<css::rdf::XLiteral> xLitText = 
rdf::Literal::create(xContext, aText);
+    xTextRange->setString(aText);
+
+    uno::Reference<rdf::XMetadatable> xMeta(xTextRange, uno::UNO_QUERY);
 
-    uno::Reference<rdf::XDocumentMetadataAccess> 
xDocumentMetadataAccess(mxComponent,
-                                                                         
uno::UNO_QUERY);
-    uno::Reference<rdf::XRepository> xRepo = 
xDocumentMetadataAccess->getRDFRepository();
+    uno::Reference<rdf::XRepository> xRepo = rdf::Repository::create(xContext);
     uno::Reference<rdf::XDocumentRepository> xDocRepo(xRepo, uno::UNO_QUERY);
     CPPUNIT_ASSERT(xDocRepo);
 
-    uno::Reference<rdf::XMetadatable> xMeta(xTextRange, uno::UNO_QUERY);
-
     // 1. RDFa: get: not empty (initial)
     ::beans::Pair<uno::Sequence<rdf::Statement>, sal_Bool> xResult
         = xDocRepo->getStatementRDFa(xMeta);
     CPPUNIT_ASSERT_EQUAL(sal_uInt32(0), xResult.First.size());
     CPPUNIT_ASSERT(!xResult.Second);
 
-    uno::Reference<uno::XComponentContext> xContext = getComponentContext();
+    css::uno::Sequence<uno::Reference<rdf::XURI>> xURI{};
+
     uno::Reference<css::rdf::XURI> xFoo = rdf::URI::create(xContext, 
"uri:foo");
     uno::Reference<css::rdf::XURI> xBar = rdf::URI::create(xContext, 
"uri:bar");
     uno::Reference<css::rdf::XURI> xBaz = rdf::URI::create(xContext, 
"uri:baz");
     uno::Reference<css::rdf::XURI> xInt = rdf::URI::create(xContext, 
"uri:int");
-    css::uno::Sequence<uno::Reference<rdf::XURI>> xURI{};
+    uno::Reference<css::rdf::XLiteral> xLitType
+        = rdf::Literal::createWithType(xContext, "42", xInt);
 
     // 2. RDFa: set: no predicate
     try
@@ -127,12 +148,8 @@ CPPUNIT_TEST_FIXTURE(RDFStreamTest, testRDFa)
     xResult = xDocRepo->getStatementRDFa(xMeta);
     CPPUNIT_ASSERT_EQUAL(sal_uInt32(1), xResult.First.size());
     CPPUNIT_ASSERT(!xResult.Second);
-
-    rdf::Statement aStatement = xResult.First[0];
-    CPPUNIT_ASSERT_EQUAL(OUString("uri:foo"), 
aStatement.Subject->getStringValue());
-    CPPUNIT_ASSERT_EQUAL(OUString("uri:bar"), 
aStatement.Predicate->getStringValue());
-    CPPUNIT_ASSERT_EQUAL(OUString("behold, for I am the content."),
-                         aStatement.Object->getStringValue());
+    rdf::Statement aFooBarTRLit(xFoo, xBar, xLitText, nullptr);
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFooBarTRLit, xResult.First[0]);
 
     xDocRepo->setStatementRDFa(xFoo, xURI2, xMeta, u"42"_ustr, xInt);
 
@@ -141,13 +158,8 @@ CPPUNIT_TEST_FIXTURE(RDFStreamTest, testRDFa)
     CPPUNIT_ASSERT_EQUAL(sal_uInt32(1), xResult.First.size());
     CPPUNIT_ASSERT(xResult.Second);
 
-    aStatement = xResult.First[0];
-    CPPUNIT_ASSERT_EQUAL(OUString("uri:foo"), 
aStatement.Subject->getStringValue());
-    CPPUNIT_ASSERT_EQUAL(OUString("uri:bar"), 
aStatement.Predicate->getStringValue());
-
-    uno::Reference<css::rdf::XLiteral> xLitType
-        = rdf::Literal::createWithType(xContext, "42", xInt);
-    CPPUNIT_ASSERT_EQUAL(xLitType->getStringValue(), 
aStatement.Object->getStringValue());
+    rdf::Statement aFooBarLittype(xFoo, xBar, xLitType, nullptr);
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFooBarLittype, xResult.First[0]);
 
     xDocRepo->removeStatementRDFa(xMeta);
 
@@ -165,23 +177,13 @@ CPPUNIT_TEST_FIXTURE(RDFStreamTest, testRDFa)
     CPPUNIT_ASSERT_EQUAL(sal_uInt32(3), xResult.First.size());
     CPPUNIT_ASSERT(!xResult.Second);
 
-    aStatement = xResult.First[0];
-    CPPUNIT_ASSERT_EQUAL(OUString("uri:foo"), 
aStatement.Subject->getStringValue());
-    CPPUNIT_ASSERT_EQUAL(OUString("uri:baz"), 
aStatement.Predicate->getStringValue());
-    CPPUNIT_ASSERT_EQUAL(OUString("behold, for I am the content."),
-                         aStatement.Object->getStringValue());
+    rdf::Statement aFooBazTRLit(xFoo, xBaz, xLitText, nullptr);
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFooBazTRLit, xResult.First[0]);
 
-    aStatement = xResult.First[1];
-    CPPUNIT_ASSERT_EQUAL(OUString("uri:foo"), 
aStatement.Subject->getStringValue());
-    CPPUNIT_ASSERT_EQUAL(OUString("uri:bar"), 
aStatement.Predicate->getStringValue());
-    CPPUNIT_ASSERT_EQUAL(OUString("behold, for I am the content."),
-                         aStatement.Object->getStringValue());
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFooBarTRLit, xResult.First[1]);
 
-    aStatement = xResult.First[2];
-    CPPUNIT_ASSERT_EQUAL(OUString("uri:foo"), 
aStatement.Subject->getStringValue());
-    CPPUNIT_ASSERT_EQUAL(OUString("uri:foo"), 
aStatement.Predicate->getStringValue());
-    CPPUNIT_ASSERT_EQUAL(OUString("behold, for I am the content."),
-                         aStatement.Object->getStringValue());
+    rdf::Statement aFooFooTRLit(xFoo, xFoo, xLitText, nullptr);
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aFooFooTRLit, xResult.First[2]);
 
     xDocRepo->removeStatementRDFa(xMeta);
 
@@ -200,8 +202,7 @@ CPPUNIT_TEST_FIXTURE(RDFStreamTest, testSPARQL)
             u"com.sun.star.ucb.SimpleFileAccess"_ustr, xContext),
         uno::UNO_QUERY_THROW);
     const uno::Reference<io::XInputStream> xInputStream(
-        
xFileAccess->openFileRead(m_directories.getURLFromSrc(u"/unoxml/qa/unit/data/example.rdf")),
-        uno::UNO_SET_THROW);
+        xFileAccess->openFileRead(createFileURL(u"example.rdf")), 
uno::UNO_SET_THROW);
     uno::Reference<rdf::XRepository> xRepo = rdf::Repository::create(xContext);
     uno::Reference<rdf::XDocumentRepository> xDocRepo(xRepo, uno::UNO_QUERY);
     CPPUNIT_ASSERT(xDocRepo);
@@ -316,12 +317,11 @@ CPPUNIT_TEST_FIXTURE(RDFStreamTest, testSPARQL)
              "?pkg rdf:type pkg:Package . } ";
     uno::Reference<container::XEnumeration> aResultEnum = 
xDocRepo->queryConstruct(sNss + sQuery);
 
-    rdf::Statement aStatement = 
aResultEnum->nextElement().get<rdf::Statement>();
-
-    
CPPUNIT_ASSERT_EQUAL(OUString("urn:uuid:224ab023-77b8-4396-a75a-8cecd85b81e3"),
-                         aStatement.Subject->getStringValue());
-    CPPUNIT_ASSERT_EQUAL(OUString("uri:foo"), 
aStatement.Predicate->getStringValue());
-    CPPUNIT_ASSERT_EQUAL(OUString("I am the literal"), 
aStatement.Object->getStringValue());
+    uno::Reference<css::rdf::XURI> xUuid
+        = rdf::URI::create(xContext, 
"urn:uuid:224ab023-77b8-4396-a75a-8cecd85b81e3");
+    uno::Reference<css::rdf::XLiteral> xLit = rdf::Literal::create(xContext, 
"I am the literal");
+    rdf::Statement aPkgFooLit(xUuid, xFoo, xLit, nullptr);
+    CPPUNIT_ASSERT_STATEMENT_EQUAL(aPkgFooLit, 
aResultEnum->nextElement().get<rdf::Statement>());
 
     CPPUNIT_ASSERT(!aResultEnum->hasMoreElements());
 

Reply via email to