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 2017/11/23 20:28:34 UTC
[2/4] jena git commit: Iter.step
Iter.step
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/e8613aa0
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/e8613aa0
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/e8613aa0
Branch: refs/heads/master
Commit: e8613aa0d24a607ef9eb59c200e7072f41cf79c5
Parents: c0332b2
Author: Andy Seaborne <an...@apache.org>
Authored: Mon Nov 20 21:50:08 2017 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Mon Nov 20 21:50:08 2017 +0000
----------------------------------------------------------------------
.../org/apache/jena/atlas/iterator/Iter.java | 16 ++++++++
.../apache/jena/atlas/iterator/TestIter.java | 43 ++++++++++++++++++++
2 files changed, 59 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/e8613aa0/jena-base/src/main/java/org/apache/jena/atlas/iterator/Iter.java
----------------------------------------------------------------------
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Iter.java b/jena-base/src/main/java/org/apache/jena/atlas/iterator/Iter.java
index c72fbac..2dbc734 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/iterator/Iter.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/iterator/Iter.java
@@ -351,6 +351,22 @@ public class Iter<T> implements Iterator<T> {
return filter(iter, Objects::nonNull) ;
}
+ /** Step forward up to {@code steps} places.
+ * <br/>Return number of steps taken.
+ *
+ * @apiNote
+ * The iterator is moved at most {@code steps} places with no overshoot.
+ * The iterator can be used afterwards.
+ */
+ public static int step(Iterator<?> iter, int steps) {
+ for ( int i = 0 ; i < steps; i++) {
+ if ( ! iter.hasNext() )
+ return i;
+ iter.next();
+ }
+ return steps;
+ }
+
/** Take the first N elements of an iterator - stop early if too few */
public static <T> List<T> take(Iterator<T> iter, int N) {
iter = new IteratorN<>(iter, N) ;
http://git-wip-us.apache.org/repos/asf/jena/blob/e8613aa0/jena-base/src/test/java/org/apache/jena/atlas/iterator/TestIter.java
----------------------------------------------------------------------
diff --git a/jena-base/src/test/java/org/apache/jena/atlas/iterator/TestIter.java b/jena-base/src/test/java/org/apache/jena/atlas/iterator/TestIter.java
index 76929e4..3e614cb 100644
--- a/jena-base/src/test/java/org/apache/jena/atlas/iterator/TestIter.java
+++ b/jena-base/src/test/java/org/apache/jena/atlas/iterator/TestIter.java
@@ -24,6 +24,7 @@ import static org.junit.Assert.assertTrue ;
import java.util.* ;
import java.util.function.Predicate;
+import java.util.stream.IntStream;
import org.junit.Test ;
@@ -321,6 +322,48 @@ public class TestIter
assertEquals(-1, Iter.lastIndex(data, filter)) ;
}
+
+ private static Iterator<?> iterator(int n) {
+ return IntStream.range(1, n+1).iterator();
+ }
+
+ @Test public void iteratorStep_1() {
+ Iterator<?> iter = iterator(0);
+ int x = Iter.step(iter, 0);
+ assertEquals(0,x);
+ }
+
+ @Test public void iteratorStep_2() {
+ Iterator<?> iter = iterator(0);
+ int x = Iter.step(iter, 1);
+ assertEquals(0,x);
+ }
+
+ @Test public void iteratorStep_3() {
+ Iterator<?> iter = iterator(5);
+ int x = Iter.step(iter, 1);
+ assertEquals(1,x);
+ }
+
+ @Test public void iteratorStep_4() {
+ Iterator<?> iter = iterator(5);
+ int x = Iter.step(iter, 4);
+ assertEquals(4,x);
+ }
+
+ @Test public void iteratorStep_5() {
+ Iterator<?> iter = iterator(5);
+ int x = Iter.step(iter, 5);
+ assertEquals(5,x);
+ }
+
+ @Test public void iteratorStep_6() {
+ Iterator<?> iter = iterator(5);
+ int x = Iter.step(iter, 6);
+ assertEquals(5,x);
+ }
+
+
@Test
public void take_01()
{