You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by aj...@apache.org on 2018/01/06 15:17:29 UTC

[05/44] jena git commit: Further test coverage

Further test coverage


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

Branch: refs/heads/master
Commit: 82acf1bcb1ded958deb93dda07b094fdb815193f
Parents: 4ec88f3
Author: ajs6f <aj...@apache.org>
Authored: Fri Dec 29 09:03:02 2017 -0500
Committer: ajs6f <aj...@apache.org>
Committed: Fri Jan 5 09:26:07 2018 -0500

----------------------------------------------------------------------
 .../sparql/util/IntersectionDatasetGraph.java   | 96 +++++++++++++-------
 .../jena/sparql/util/ViewDatasetGraph.java      |  8 +-
 .../util/TestIntersectionDatasetGraph.java      | 24 ++++-
 .../jena/sparql/util/TestUnionDatasetGraph.java |  1 -
 4 files changed, 85 insertions(+), 44 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/82acf1bc/jena-arq/src/main/java/org/apache/jena/sparql/util/IntersectionDatasetGraph.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/util/IntersectionDatasetGraph.java b/jena-arq/src/main/java/org/apache/jena/sparql/util/IntersectionDatasetGraph.java
index d590d50..20a0e3b 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/util/IntersectionDatasetGraph.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/util/IntersectionDatasetGraph.java
@@ -1,47 +1,73 @@
 package org.apache.jena.sparql.util;
 
-import static org.apache.jena.atlas.iterator.Iter.filter;
+import static org.apache.jena.atlas.iterator.Iter.iter;
 
 import java.util.Iterator;
 import java.util.function.Function;
 
-import org.apache.jena.graph.Graph;
-import org.apache.jena.graph.Node;
+import org.apache.jena.graph.*;
 import org.apache.jena.graph.compose.Intersection;
 import org.apache.jena.sparql.core.DatasetGraph;
+import org.apache.jena.util.iterator.ExtendedIterator;
+import org.apache.jena.util.iterator.NullIterator;
 
 public class IntersectionDatasetGraph extends ViewDatasetGraph {
+  
+    public IntersectionDatasetGraph(DatasetGraph left, DatasetGraph right, Context c) {
+        super(left, right, c);
+    }
 
-	public IntersectionDatasetGraph(DatasetGraph left, DatasetGraph right, Context c) {
-		super(left, right, c);
-	}
-
-	Graph intersect(Function<DatasetGraph, Graph> op) {
-	    return join(Intersection::new, op);
-	}
-
-	@Override
-	public Graph getDefaultGraph() {
-		return intersect(DatasetGraph::getDefaultGraph);
-	}
-
-	@Override
-	public Graph getGraph(Node graphNode) {
-		return intersect(dsg -> dsg.getGraph(graphNode));
-	}
-
-	@Override
-	public boolean containsGraph(Node graphNode) {
-		return both(dsg -> dsg.containsGraph(graphNode));
-	}
-
-	@Override
-	public Iterator<Node> listGraphNodes() {
-		return filter(getLeft().listGraphNodes(), getRight()::containsGraph);
-	}
-
-	@Override
-	public boolean contains(Node g, Node s, Node p, Node o) {
-		return both(dsg -> dsg.contains(g, s, p, o));
-	}
+    Graph intersect(Function<DatasetGraph, Graph> op) {
+        return join(IntersectionView::new, op);
+    }
+
+    @Override
+    public Graph getDefaultGraph() {
+        return intersect(DatasetGraph::getDefaultGraph);
+    }
+
+    @Override
+    public Graph getGraph(Node graphNode) {
+        return intersect(dsg -> dsg.getGraph(graphNode));
+    }
+
+    @Override
+    public boolean containsGraph(Node graphNode) {
+        return both(dsg -> dsg.containsGraph(graphNode) && !dsg.getGraph(graphNode).isEmpty());
+    }
+
+    @Override
+    public Iterator<Node> listGraphNodes() {
+        return iter(getLeft().listGraphNodes())
+                .filter(graphName -> !getGraph(graphName).isEmpty())
+                .filter(getRight()::containsGraph)
+                .filter(graphName -> !getRight().getGraph(graphName).isEmpty());
+    }
+
+    @Override
+    public boolean contains(Node g, Node s, Node p, Node o) {
+        return both(dsg -> dsg.contains(g, s, p, o));
+    }
+
+    static class IntersectionView extends Intersection {
+
+        public IntersectionView(Graph L, Graph R) {
+            super(L, R);
+        }
+
+        @Override
+        public void performAdd(Triple t) {
+            IntersectionDatasetGraph.throwNoMutationAllowed();
+        }
+
+        @Override
+        public void performDelete(Triple t) {
+            IntersectionDatasetGraph.throwNoMutationAllowed();
+        }
+
+        @Override
+        protected ExtendedIterator<Triple> _graphBaseFind(Triple s) {
+            return L.isEmpty() || R.isEmpty() ? NullIterator.instance() : super._graphBaseFind(s);
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/82acf1bc/jena-arq/src/main/java/org/apache/jena/sparql/util/ViewDatasetGraph.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/util/ViewDatasetGraph.java b/jena-arq/src/main/java/org/apache/jena/sparql/util/ViewDatasetGraph.java
index c1c6542..6d12292 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/util/ViewDatasetGraph.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/util/ViewDatasetGraph.java
@@ -32,7 +32,7 @@ public abstract class ViewDatasetGraph extends Pair.OfSameType<DatasetGraph> imp
         this.lock = new PairLock(left.getLock(), right.getLock());
     }
 
-    private static void throwNoMutationAllowed() {
+    protected static void throwNoMutationAllowed() {
         throw new UnsupportedOperationException("This view does not allow mutation!");
     }
 
@@ -47,13 +47,9 @@ public abstract class ViewDatasetGraph extends Pair.OfSameType<DatasetGraph> imp
         case WRITE:
             throwNoMutationAllowed();
         case READ:
-            forEach(ViewDatasetGraph::beginRead);
+            forEach(dsg -> dsg.begin(READ));
         }
     }
-    
-    private static void beginRead(DatasetGraph dsg) {
-        dsg.begin(READ);
-    }
 
     @Override
     public void abort() {

http://git-wip-us.apache.org/repos/asf/jena/blob/82acf1bc/jena-arq/src/test/java/org/apache/jena/sparql/util/TestIntersectionDatasetGraph.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/util/TestIntersectionDatasetGraph.java b/jena-arq/src/test/java/org/apache/jena/sparql/util/TestIntersectionDatasetGraph.java
index 59eaf0e..4c04baf 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/util/TestIntersectionDatasetGraph.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/util/TestIntersectionDatasetGraph.java
@@ -1,17 +1,37 @@
 package org.apache.jena.sparql.util;
 
+import static org.apache.jena.sparql.sse.SSE.parseGraph;
+
+import org.apache.jena.graph.*;
 import org.apache.jena.sparql.core.DatasetGraph;
+import org.apache.jena.sparql.core.DatasetGraphFactory;
 import org.junit.Test;
 
 public class TestIntersectionDatasetGraph extends TestViewDatasetGraph<IntersectionDatasetGraph> {
 
     @Override
     public IntersectionDatasetGraph testInstance(DatasetGraph left, DatasetGraph right, Context c) {
-        return new IntersectionDatasetGraph(right, right, c);
+        return new IntersectionDatasetGraph(left, right, c);
     }
 
     @Test
     public void testIntersection() {
-        
+        final Graph g1 = parseGraph("(graph (triple <s1> <p1> <o1> ))");
+        final DatasetGraph dsg1 = DatasetGraphFactory.create(g1);
+        final Node graphName1 = NodeFactory.createBlankNode();
+        dsg1.addGraph(graphName1, g1);
+        final Graph g2 = parseGraph("(graph (triple <s2> <p2> <o2> ))");
+        final DatasetGraph dsg2 = DatasetGraphFactory.create(g2);
+        final Node graphName2 = NodeFactory.createBlankNode();
+        dsg2.addGraph(graphName2, g2);
+        final Node graphName3 = NodeFactory.createBlankNode();
+        dsg1.addGraph(graphName3, g1);
+        dsg2.addGraph(graphName3, g1);
+        DatasetGraph dsg = testInstance(dsg1, dsg2, Context.emptyContext);
+        assertEquals(1, dsg.size());
+        assertTrue(dsg.getDefaultGraph().isEmpty());
+        assertTrue(dsg.getGraph(graphName1).isEmpty());
+        assertTrue(dsg.getGraph(graphName2).isEmpty());
+        assertTrue(g1.isIsomorphicWith(dsg.getGraph(graphName3)));
     }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/82acf1bc/jena-arq/src/test/java/org/apache/jena/sparql/util/TestUnionDatasetGraph.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/util/TestUnionDatasetGraph.java b/jena-arq/src/test/java/org/apache/jena/sparql/util/TestUnionDatasetGraph.java
index a131846..463e1ff 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/util/TestUnionDatasetGraph.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/util/TestUnionDatasetGraph.java
@@ -17,7 +17,6 @@ public class TestUnionDatasetGraph extends TestViewDatasetGraph<UnionDatasetGrap
 
     @Test
     public void testUnion() {
-
         final Graph g1 = parseGraph("(graph (triple <s1> <p1> <o1> ))");
         final DatasetGraph dsg1 = DatasetGraphFactory.create(g1);
         final Node graphName1 = NodeFactory.createBlankNode();