summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--base/src/main/java/bjc/utils/funcutils/IteratorUtils.java33
-rw-r--r--base/src/main/java/bjc/utils/funcutils/TestUtils.java18
-rw-r--r--base/src/test/java/bjc/utils/data/CircularIteratorTest.java8
3 files changed, 50 insertions, 9 deletions
diff --git a/base/src/main/java/bjc/utils/funcutils/IteratorUtils.java b/base/src/main/java/bjc/utils/funcutils/IteratorUtils.java
new file mode 100644
index 0000000..55e5985
--- /dev/null
+++ b/base/src/main/java/bjc/utils/funcutils/IteratorUtils.java
@@ -0,0 +1,33 @@
+package bjc.utils.funcutils;
+
+import java.util.Iterator;
+
+/**
+ * Utility methods for dealing with iterators.
+ *
+ * @author bjculkin
+ *
+ */
+public class IteratorUtils {
+ /**
+ * Convert an iterator to an iterable.
+ *
+ * @param itr
+ * The iterator to convert.
+ * @return An iterable that gives back that iterator.
+ */
+ public static <E> Iterable<E> I(Iterator<E> itr) {
+ return () -> itr;
+ }
+
+ /**
+ * Convert an iterable to an iterator.
+ *
+ * @param itr
+ * The iterable to convert.
+ * @return The iterator from that iterable
+ */
+ public static <E> Iterator<E> I(Iterable<E> itr) {
+ return itr.iterator();
+ }
+}
diff --git a/base/src/main/java/bjc/utils/funcutils/TestUtils.java b/base/src/main/java/bjc/utils/funcutils/TestUtils.java
index 124389e..586d366 100644
--- a/base/src/main/java/bjc/utils/funcutils/TestUtils.java
+++ b/base/src/main/java/bjc/utils/funcutils/TestUtils.java
@@ -38,20 +38,28 @@ public class TestUtils {
* The values to expect from the iterator.
*/
@SafeVarargs
- public static <T> void assertIteratorEquals(Iterator<T> src, boolean hasMore, T... vals) {
+ public static <T> void assertIteratorEquals(boolean hasMore, Iterator<T> src, T... vals) {
+ /*
+ * @NOTE
+ *
+ * Even though it's awkward, the boolean has to come first.
+ * Otherwise, there are cases where the compiler will get
+ * confused as to what the right value for T is, and be unable
+ * to pick an overload.
+ */
assertIteratorEquals(src, vals);
-
+
assertEquals(hasMore, src.hasNext());
}
-
+
@SafeVarargs
public static <T> void assertListEquals(List<T> src, T... exps) {
assertEquals(exps.length, src.size());
-
+
int i = 0;
for (T act : src) {
T exp = exps[i++];
-
+
assertEquals(exp, act);
}
}
diff --git a/base/src/test/java/bjc/utils/data/CircularIteratorTest.java b/base/src/test/java/bjc/utils/data/CircularIteratorTest.java
index a809887..5e20a17 100644
--- a/base/src/test/java/bjc/utils/data/CircularIteratorTest.java
+++ b/base/src/test/java/bjc/utils/data/CircularIteratorTest.java
@@ -25,10 +25,10 @@ public class CircularIteratorTest {
CircularIterator<String> itr = new CircularIterator<>(lst);
// Check we get initial values correctly, and have more remaining
- assertIteratorEquals(itr, true, "a", "b", "c");
+ assertIteratorEquals(true, itr, "a", "b", "c");
// Check we repeat correctly, and can still repeat
- assertIteratorEquals(itr, true, "a", "b", "c");
+ assertIteratorEquals(true, itr, "a", "b", "c");
}
/**
@@ -41,9 +41,9 @@ public class CircularIteratorTest {
CircularIterator<String> itr = new CircularIterator<>(lst, false);
// Check we get initial values correctly, and have more remaining
- assertIteratorEquals(itr, true, "a", "b", "c");
+ assertIteratorEquals(true, itr, "a", "b", "c");
// Check we repeat correctly, and can still repeat
- assertIteratorEquals(itr, true, "c", "c", "c");
+ assertIteratorEquals(true, itr, "c", "c", "c");
}
}