|
|
@@ -0,0 +1,106 @@
|
|
|
+/*
|
|
|
+ * @author Ranides Atterwim <ranides@gmail.com>
|
|
|
+ * @copyright Ranides Atterwim
|
|
|
+ * @license WTFPL
|
|
|
+ * @url http://ranides.net/projects/assira
|
|
|
+ */
|
|
|
+package net.ranides.assira.collection.iterators;
|
|
|
+
|
|
|
+import java.util.Arrays;
|
|
|
+import java.util.Iterator;
|
|
|
+import java.util.List;
|
|
|
+import java.util.ListIterator;
|
|
|
+import net.ranides.assira.collection.suite.IteratorTester;
|
|
|
+import org.junit.Test;
|
|
|
+import static org.junit.Assert.*;
|
|
|
+
|
|
|
+/**
|
|
|
+ *
|
|
|
+ * @author msieron
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+public class IteratorUtilsTest {
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testFirst() {
|
|
|
+ assertEquals((Integer)1, IteratorUtils.first(Arrays.asList(1,2,3,4).iterator()));
|
|
|
+ assertEquals((Integer)1, IteratorUtils.first(Arrays.asList(1,2).iterator()));
|
|
|
+ assertEquals((Integer)1, IteratorUtils.first(Arrays.asList(1).iterator()));
|
|
|
+
|
|
|
+ assertNull(IteratorUtils.first(Arrays.asList().iterator()));
|
|
|
+ assertNull(IteratorUtils.first(null));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testLast() {
|
|
|
+ assertEquals((Integer)4, IteratorUtils.last(Arrays.asList(1,2,3,4).iterator()));
|
|
|
+ assertEquals((Integer)4, IteratorUtils.last(Arrays.asList(3,4).iterator()));
|
|
|
+ assertEquals((Integer)4, IteratorUtils.last(Arrays.asList(4).iterator()));
|
|
|
+
|
|
|
+ assertNull(IteratorUtils.last(Arrays.asList().iterator()));
|
|
|
+ assertNull(IteratorUtils.last(null));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testFirst_Filter() {
|
|
|
+ assertEquals((Integer)7, IteratorUtils.first(Arrays.asList(1,2,7,0,8,0,3).iterator(), (a)->a>5));
|
|
|
+
|
|
|
+ assertNull(IteratorUtils.first(Arrays.asList(1,2,3).iterator(), (a)->a>5));
|
|
|
+ assertNull(IteratorUtils.first(Arrays.<Integer>asList().iterator(), (a)->a>5));
|
|
|
+ assertNull(IteratorUtils.first(null, (Integer a)->a>5));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testLast_Filter() {
|
|
|
+ assertEquals((Integer)8, IteratorUtils.last(Arrays.asList(1,2,7,0,8,0,3).iterator(), (a)->a>5));
|
|
|
+ assertEquals((Integer)8, IteratorUtils.last(Arrays.asList(1,2,7,0,8).iterator(), (a)->a>5));
|
|
|
+ assertEquals((Integer)8, IteratorUtils.last(Arrays.asList(1,8).iterator(), (a)->a>5));
|
|
|
+ assertEquals((Integer)8, IteratorUtils.last(Arrays.asList(8,1).iterator(), (a)->a>5));
|
|
|
+
|
|
|
+ assertNull(IteratorUtils.last(Arrays.asList(1,2,3).iterator(), (a)->a>5));
|
|
|
+ assertNull(IteratorUtils.last(Arrays.<Integer>asList().iterator(), (a)->a>5));
|
|
|
+ assertNull(IteratorUtils.last(null, (Integer a)->a>5));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testSize() {
|
|
|
+ assertEquals(4, IteratorUtils.size(Arrays.asList(1,2,7,8).iterator()));
|
|
|
+ assertEquals(2, IteratorUtils.size(Arrays.asList(1,2).iterator()));
|
|
|
+ assertEquals(1, IteratorUtils.size(Arrays.asList(1).iterator()));
|
|
|
+ assertEquals(0, IteratorUtils.size(Arrays.asList().iterator()));
|
|
|
+ assertEquals(0, IteratorUtils.size(null));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testFilterIterator() {
|
|
|
+ List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8,9);
|
|
|
+
|
|
|
+ IteratorTester.basicIterator(IteratorUtils.filter(list.iterator(), (v)->v%2==0), 0, new Integer[]{2,4,6,8});
|
|
|
+ IteratorTester.basicIterator(IteratorUtils.filter(list.iterator(), (v)->v%2==1), 0, new Integer[]{1,3,5,7,9});
|
|
|
+ IteratorTester.basicIterator(IteratorUtils.filter(list.iterator(), (v)->v>5), 0, new Integer[]{6,7,8,9});
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testFilterListIterator() {
|
|
|
+ List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8,9);
|
|
|
+
|
|
|
+ IteratorTester.listIterator(IteratorUtils.filter(list.listIterator(), (v)->v%2==0), 0, new Integer[]{2,4,6,8});
|
|
|
+ IteratorTester.listIterator(IteratorUtils.filter(list.listIterator(), (v)->v%2==1), 0, new Integer[]{1,3,5,7,9});
|
|
|
+ IteratorTester.listIterator(IteratorUtils.filter(list.listIterator(), (v)->v>5), 0, new Integer[]{6,7,8,9});
|
|
|
+
|
|
|
+
|
|
|
+ IteratorTester.listIterator(IteratorUtils.filter(forward(list.listIterator(),2), (v)->v%2==0), 0, new Integer[]{4,6,8});
|
|
|
+ IteratorTester.listIterator(IteratorUtils.filter(forward(list.listIterator(),2), (v)->v%2==1), 0, new Integer[]{3,5,7,9});
|
|
|
+ IteratorTester.listIterator(IteratorUtils.filter(forward(list.listIterator(),6), (v)->v>5), 0, new Integer[]{7,8,9});
|
|
|
+ }
|
|
|
+
|
|
|
+ private <T> ListIterator<T> forward(ListIterator<T> iterator, int count) {
|
|
|
+ for(int i=0; i<count; i++) {
|
|
|
+ iterator.next();
|
|
|
+ }
|
|
|
+ return iterator;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|