[Libreoffice-commits] .: unoxml/qa

Michael Stahl mst at kemper.freedesktop.org
Tue Dec 20 09:34:05 PST 2011


 unoxml/qa/complex/unoxml/RDFRepositoryTest.java |   44 ++++++++++++++++++------
 1 file changed, 33 insertions(+), 11 deletions(-)

New commits:
commit cb1ad8c8df48161917fdb2044ac55d144049d2f4
Author: Michael Stahl <mstahl at redhat.com>
Date:   Tue Dec 20 18:28:58 2011 +0100

    unordf: tweak SPARQL unit test:
    
    rasqal 0.9.27 returns no variables for a SPARQL SELECT query with no
    results; it is unclear whether that is allowed but it is a corner case
    and probably we should not be testing for that.

diff --git a/unoxml/qa/complex/unoxml/RDFRepositoryTest.java b/unoxml/qa/complex/unoxml/RDFRepositoryTest.java
index 7944a0e..d1006c2 100644
--- a/unoxml/qa/complex/unoxml/RDFRepositoryTest.java
+++ b/unoxml/qa/complex/unoxml/RDFRepositoryTest.java
@@ -785,15 +785,30 @@ public class RDFRepositoryTest
         String[] vars = (String[]) i_Result.getBindingNames();
         XEnumeration iter = (XEnumeration) i_Result;
         XNode[][] bindings = toSeqs(iter);
-        if (vars.length != i_Vars.length) {
-            System.out.println("var lengths differ");
-            return false;
-        }
         if (bindings.length != i_Bindings.length) {
             System.out.println("binding lengths differ: " + i_Bindings.length +
                 " vs " + bindings.length );
             return false;
         }
+        if (vars.length != i_Vars.length) {
+            // ignore for empty result: it is unclear to me whether SPARQL
+            // spec requires returning the variables in this case,
+            // and evidently newer rasqal versions don't
+            if (0 != i_Bindings.length || 0 != vars.length)
+            {
+                System.out.println("var lengths differ: expected "
+                        + i_Vars.length + " but got " + vars.length);
+                return false;
+            }
+        } else {
+            for (int i = 0; i < i_Vars.length; ++i) {
+                if (!vars[i].equals(i_Vars[i])) {
+                    System.out.println("variable names differ: " +
+                        vars[i] + " != " + i_Vars[i]);
+                    return false;
+                }
+            }
+        }
         java.util.Arrays.sort(bindings, new BindingComp());
         java.util.Arrays.sort(i_Bindings, new BindingComp());
         for (int i = 0; i < i_Bindings.length; ++i) {
@@ -813,13 +828,6 @@ public class RDFRepositoryTest
                 }
             }
         }
-        for (int i = 0; i < i_Vars.length; ++i) {
-            if (!vars[i].equals(i_Vars[i])) {
-                System.out.println("variable names differ: " +
-                    vars[i] + " != " + i_Vars[i]);
-                return false;
-            }
-        }
         return true;
     }
 
@@ -839,6 +847,20 @@ public class RDFRepositoryTest
         return namespaces;
     }
 
+    // useful when debugging
+    static void dumpRepo(XDocumentRepository xRep) throws Exception
+    {
+        XEnumeration xEnum = xRep.getStatements(null, null, null);
+        while (xEnum.hasMoreElements())
+        {
+            Statement s = (Statement) xEnum.nextElement();
+            System.out.println("STATEMENT IN: " + toS(s.Graph)
+                    + "\n S: " + toS(s.Subject)
+                    + "\n P: " + toS(s.Predicate)
+                    + "\n O: " + toS(s.Object));
+        }
+    }
+
     class TestRange implements XTextRange, XMetadatable, XServiceInfo
     {
         String m_Stream;


More information about the Libreoffice-commits mailing list