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)) ;
}