You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2016/09/12 15:29:56 UTC

[2/2] jena git commit: Unordered list equality.

Unordered list equality.

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/59e5e06c
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/59e5e06c
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/59e5e06c

Branch: refs/heads/master
Commit: 59e5e06c85c98c9c65a9c1addbc4252626e9d061
Parents: 7a39f8f
Author: Andy Seaborne <an...@apache.org>
Authored: Sun Sep 11 17:22:27 2016 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Sun Sep 11 17:22:27 2016 +0100

----------------------------------------------------------------------
 .../org/apache/jena/sparql/path/TestPath.java   | 37 +++++---------------
 .../apache/jena/atlas/lib/CollectionUtils.java  |  2 +-
 .../org/apache/jena/atlas/lib/ListUtils.java    | 16 +++++++++
 .../org/apache/jena/atlas/junit/BaseTest.java   |  9 ++---
 4 files changed, 28 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/59e5e06c/jena-arq/src/test/java/org/apache/jena/sparql/path/TestPath.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/path/TestPath.java b/jena-arq/src/test/java/org/apache/jena/sparql/path/TestPath.java
index 30cb8d5..6ac15f6 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/path/TestPath.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/path/TestPath.java
@@ -18,7 +18,8 @@
 
 package org.apache.jena.sparql.path;
 
-import java.util.ArrayList ;
+import static org.apache.jena.atlas.lib.ListUtils.equalsUnordered ;
+
 import java.util.Arrays ;
 import java.util.Iterator ;
 import java.util.List ;
@@ -40,9 +41,6 @@ import org.apache.jena.sparql.engine.QueryIterator ;
 import org.apache.jena.sparql.engine.binding.Binding ;
 import org.apache.jena.sparql.engine.binding.BindingFactory ;
 import org.apache.jena.sparql.graph.GraphFactory ;
-import org.apache.jena.sparql.path.Path ;
-import org.apache.jena.sparql.path.PathLib ;
-import org.apache.jena.sparql.path.PathParser ;
 import org.apache.jena.sparql.path.eval.PathEval ;
 import org.apache.jena.sparql.sse.Item ;
 import org.apache.jena.sparql.sse.SSE ;
@@ -321,37 +319,20 @@ public class TestPath extends BaseTest
     
 
     // ----
-    private static void test(Graph graph, Node start, String string, Node... expectedNodes)
-    {
-       test(graph, start, string, expectedNodes, true) ;
+    private static void test(Graph graph, Node start, String string, Node... expectedNodes) {
+        test(graph, start, string, expectedNodes, true) ;
     }
-    
-    private static void testReverse(Graph graph, Node start, String string, Node... expectedNodes)
-    {
-       test(graph, start, string, expectedNodes, false) ;
+
+    private static void testReverse(Graph graph, Node start, String string, Node... expectedNodes) {
+        test(graph, start, string, expectedNodes, false) ;
     }
 
-    private static void test(Graph graph, Node start, String string, Node[] expectedNodes, boolean directionForward)
-    {
+    private static void test(Graph graph, Node start, String string, Node[] expectedNodes, boolean directionForward) {
         Path p = PathParser.parse(string, pmap) ;
         Iterator<Node> resultsIter = 
             directionForward ? PathEval.eval(graph, start, p, ARQ.getContext()) : PathEval.evalReverse(graph, start, p, ARQ.getContext()) ; 
         List<Node> results = Iter.toList(resultsIter) ;
         List<Node> expected = Arrays.asList(expectedNodes) ;
-        // Unordered by counting equality.
-        Assert.assertTrue("expected:"+expected+", got:"+results, sameUnorder(expected, results)) ;
-    }
-    
-    static boolean sameUnorder(List<Node> expected, List<Node> results)
-    {
-        // Copy - this is modified.
-        List<Node> x = new ArrayList<>(results) ;
-        for ( Node n : expected )
-        {
-            if ( ! x.contains(n) )
-                return false ;
-            x.remove(n) ;
-        }
-        return x.isEmpty() ;
+        Assert.assertTrue("expected:"+expected+", got:"+results, equalsUnordered(expected, results)) ;
     }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/59e5e06c/jena-base/src/main/java/org/apache/jena/atlas/lib/CollectionUtils.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/CollectionUtils.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/CollectionUtils.java
index 6b91daa..0392be9 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/CollectionUtils.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/CollectionUtils.java
@@ -27,7 +27,7 @@ public class CollectionUtils
 		return c1.stream().noneMatch(c2::contains);
     }
     
-    /** Test for same elements, regarless of carinality */ 
+    /** Test for same elements, regarless of cardinality */ 
     public static <T> boolean sameElts(Collection<T> left, Collection<T> right) {
         return right.containsAll(left) && left.containsAll(right) ;
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/59e5e06c/jena-base/src/main/java/org/apache/jena/atlas/lib/ListUtils.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/ListUtils.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/ListUtils.java
index 200b836..272fb28 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/ListUtils.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/ListUtils.java
@@ -79,6 +79,22 @@ public class ListUtils
 		out.print(list.stream().map(String::valueOf).collect(joining(sep)));
     }
     
+    /**
+     * Compare two lists, same elements, order of the lists may be different, elements
+     * must have the same cardinality.
+     */
+    public static <T> boolean equalsUnordered(List<T> list1, List<T> list2) {
+        if ( list1.size() != list2.size() )
+            return false ;
+        // containsAll bothe ways round isn't enough.
+        List<T> list2a = new ArrayList<>(list2) ;
+        for ( T elt : list1 )
+            list2a.remove(elt) ;
+        if ( list2a.size() != 0 )
+            return false ;
+        return true ;
+    }
+    
     /** Return a list of lists of all the elements of collection in every order
      *  Easy to run out of heap memory.
      *  

http://git-wip-us.apache.org/repos/asf/jena/blob/59e5e06c/jena-base/src/test/java/org/apache/jena/atlas/junit/BaseTest.java
----------------------------------------------------------------------
diff --git a/jena-base/src/test/java/org/apache/jena/atlas/junit/BaseTest.java b/jena-base/src/test/java/org/apache/jena/atlas/junit/BaseTest.java
index 5976047..51becfb 100644
--- a/jena-base/src/test/java/org/apache/jena/atlas/junit/BaseTest.java
+++ b/jena-base/src/test/java/org/apache/jena/atlas/junit/BaseTest.java
@@ -18,10 +18,10 @@
 
 package org.apache.jena.atlas.junit ;
 
-import java.util.ArrayList ;
 import java.util.List ;
 import java.util.Locale ;
 
+import org.apache.jena.atlas.lib.ListUtils ;
 import org.junit.Assert ;
 
 public class BaseTest extends Assert {
@@ -42,12 +42,7 @@ public class BaseTest extends Assert {
     }
     
     public static <T> void assertEqualsUnordered(String msg, List<T> list1, List<T> list2) {
-        if ( list1.size() != list2.size() )
-            fail(msg(msg, list1, list2)) ;
-        List<T> list2a = new ArrayList<>(list2) ;
-        for ( T elt : list1 )
-            list2a.remove(elt) ;
-        if ( list2a.size() != 0 )
+        if ( ! ListUtils.equalsUnordered(list1, list2) )
             fail(msg(msg, list1, list2)) ;
     }