You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by rv...@apache.org on 2013/04/05 23:15:43 UTC

svn commit: r1465131 - in /jena/trunk/jena-arq/src: main/java/com/hp/hpl/jena/sparql/resultset/ResultSetPeeking.java test/java/com/hp/hpl/jena/sparql/resultset/TestResultSet.java

Author: rvesse
Date: Fri Apr  5 21:15:43 2013
New Revision: 1465131

URL: http://svn.apache.org/r1465131
Log:
Fix a logic bug in ResultSetPeeking, add additional unit test

Modified:
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/ResultSetPeeking.java
    jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/resultset/TestResultSet.java

Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/ResultSetPeeking.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/ResultSetPeeking.java?rev=1465131&r1=1465130&r2=1465131&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/ResultSetPeeking.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/resultset/ResultSetPeeking.java Fri Apr  5 21:15:43 2013
@@ -119,10 +119,10 @@ public class ResultSetPeeking implements
         if (diff == 0) {
             // If no difference we have not peeked
             return false;
-        } else if (diff == 1) {
+        } else if (diff == 1 && this.peeked != null) {
             // If difference is one then we have peeked
             return true;
-        } else if (diff > 1) {
+        } else if (diff >= 1) {
             // If difference between what we think the row number is and that of
             // the underlying result set is > 1 then someone has moved positions
             // in the underying result set independently

Modified: jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/resultset/TestResultSet.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/resultset/TestResultSet.java?rev=1465131&r1=1465130&r2=1465131&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/resultset/TestResultSet.java (original)
+++ jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/resultset/TestResultSet.java Fri Apr  5 21:15:43 2013
@@ -424,6 +424,36 @@ public class TestResultSet extends BaseT
         rs.hasNext();
     }
     
+    @Test 
+    public void test_RS_peeking_9() {
+        // Check that peeking causes the correct row to be returned when we actually access the rows
+        Node first = NodeFactory.createURI("tag:first");
+        Node second = NodeFactory.createURI("tag:second");
+        Var x = Var.alloc("x");
+        
+        ResultSet inner = new ResultSetMem(make("x", first), make("x", second));
+        ResultSetPeekable rs = ResultSetFactory.makePeekable(inner);
+        assertTrue(rs.hasNext());
+        
+        // Peek and check row is as expected
+        Binding peeked = rs.peekBinding();
+        assertNotNull(peeked);
+        assertTrue(first.equals(peeked.get(x)));
+        
+        // Check first row is as expected
+        Binding next = rs.nextBinding();
+        assertNotNull(next);
+        assertTrue(first.equals(next.get(x)));
+        
+        // Repeat for second row
+        peeked = rs.peekBinding();
+        assertNotNull(peeked);
+        assertTrue(second.equals(peeked.get(x)));
+        next = rs.nextBinding();
+        assertNotNull(next);
+        assertTrue(second.equals(next.get(x)));
+    }
+    
     // ---- Isomorphism.
     
     /* This is from the DAWG test suite.