fix code and test case

This commit is contained in:
huangchengxing
2022-09-01 13:45:26 +08:00
parent 3bddce1a0b
commit ce7a075b1e
11 changed files with 323 additions and 12 deletions

View File

@@ -0,0 +1,50 @@
package cn.hutool.core.collection.iter;
import org.junit.Assert;
import org.junit.Test;
/**
* test for {@link ArrayIter}
*/
public class ArrayIterTest {
@Test
public void testHasNext() {
Integer[] arr = new Integer[]{ 1, 2, 3 };
ArrayIter<Integer> iter = new ArrayIter<>(arr);
Assert.assertTrue(iter.hasNext());
}
@Test
public void testNext() {
Integer[] arr = new Integer[]{ 1, 2, 3 };
ArrayIter<Integer> iter = new ArrayIter<>(arr);
Assert.assertEquals((Integer)1, iter.next());
Assert.assertEquals((Integer)2, iter.next());
Assert.assertEquals((Integer)3, iter.next());
}
@Test
public void testRemove() {
Integer[] arr = new Integer[]{ 1, 2, 3 };
ArrayIter<Integer> iter = new ArrayIter<>(arr);
Assert.assertThrows(UnsupportedOperationException.class, iter::remove);
}
@Test
public void testGetArray() {
Integer[] arr = new Integer[]{ 1, 2, 3 };
ArrayIter<Integer> iter = new ArrayIter<>(arr);
Assert.assertEquals(arr, iter.getArray());
}
@Test
public void testReset() {
Integer[] arr = new Integer[]{ 1, 2, 3 };
ArrayIter<Integer> iter = new ArrayIter<>(arr);
Assert.assertEquals((Integer)1, iter.next());
iter.reset();
Assert.assertEquals((Integer)1, iter.next());
}
}

View File

@@ -0,0 +1,47 @@
package cn.hutool.core.collection.iter;
import org.junit.Assert;
import org.junit.Test;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
/**
* test for {@link CopiedIter}
*/
public class CopiedIterTest {
@Test
public void copyOf() {
List<Integer> list = Arrays.asList(1, 2, 3);
Iterator<Integer> iter = list.iterator();
Assert.assertEquals((Integer)1, iter.next());
Assert.assertEquals((Integer)2, CopiedIter.copyOf(iter).next());
}
@Test
public void hasNext() {
Assert.assertTrue(CopiedIter.copyOf(Arrays.asList(1, 2, 3).iterator()).hasNext());
Assert.assertFalse(CopiedIter.copyOf(Collections.emptyIterator()).hasNext());
}
@Test
public void next() {
List<Integer> list = Arrays.asList(1, 2, 3);
Iterator<Integer> iter = CopiedIter.copyOf(list.iterator());
Assert.assertEquals((Integer)1, iter.next());
Assert.assertEquals((Integer)2, iter.next());
Assert.assertEquals((Integer)3, iter.next());
}
@Test
public void remove() {
List<Integer> list = Arrays.asList(1, 2, 3);
Iterator<Integer> iter = CopiedIter.copyOf(list.iterator());
Assert.assertThrows(UnsupportedOperationException.class, iter::remove);
}
}

View File

@@ -4,7 +4,10 @@ import cn.hutool.core.collection.ListUtil;
import org.junit.Assert;
import org.junit.Test;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.function.Predicate;
public class FilterIterTest {
@@ -20,4 +23,40 @@ public class FilterIterTest {
}
Assert.assertEquals(2, count);
}
@Test
public void hasNext() {
Iterator<Integer> iter = new FilterIter<>(Arrays.asList(1, 2, 3).iterator(), i -> true);
Assert.assertTrue(iter.hasNext());
iter = new FilterIter<>(Collections.emptyIterator(), i -> true);
Assert.assertFalse(iter.hasNext());
}
@Test
public void next() {
// 只保留奇数
Iterator<Integer> iter = new FilterIter<>(Arrays.asList(1, 2, 3).iterator(), i -> (i & 1) == 1);
Assert.assertEquals((Integer)1, iter.next());
Assert.assertEquals((Integer)3, iter.next());
}
@Test
public void remove() {
Iterator<Integer> iter = new FilterIter<>(Collections.emptyIterator(), i -> true);
Assert.assertThrows(IllegalStateException.class, iter::remove);
}
@Test
public void getIterator() {
FilterIter<Integer> iter = new FilterIter<>(Collections.emptyIterator(), i -> true);
Assert.assertSame(Collections.emptyIterator(), iter.getIterator());
}
@Test
public void getFilter() {
Predicate<Integer> predicate = i -> true;
FilterIter<Integer> iter = new FilterIter<>(Collections.emptyIterator(), predicate);
Assert.assertSame(predicate, iter.getFilter());
}
}

View File

@@ -0,0 +1,66 @@
package cn.hutool.core.collection.iter;
import org.junit.Assert;
import org.junit.Test;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
/**
* test for {@link IterChain}
*/
public class IterChainTest {
@Test
public void addChain() {
Iterator<Integer> iter1 = Arrays.asList(1, 2).iterator();
Iterator<Integer> iter2 = Arrays.asList(3, 4).iterator();
IterChain<Integer> iterChain = new IterChain<>();
Assert.assertSame(iterChain, iterChain.addChain(iter1));
Assert.assertSame(iterChain, iterChain.addChain(iter2));
Assert.assertEquals(2, iterChain.allIterators.size());
}
@Test
public void hasNext() {
IterChain<Integer> iterChain = new IterChain<>();
Assert.assertFalse(iterChain.hasNext());
Assert.assertFalse(iterChain.addChain(Collections.emptyIterator()).hasNext());
Assert.assertTrue(iterChain.addChain(Arrays.asList(3, 4).iterator()).hasNext());
}
@Test
public void next() {
Iterator<Integer> iter1 = Arrays.asList(1, 2).iterator();
Iterator<Integer> iter2 = Arrays.asList(3, 4).iterator();
IterChain<Integer> iterChain = new IterChain<>();
Assert.assertSame(iterChain, iterChain.addChain(iter1));
Assert.assertSame(iterChain, iterChain.addChain(iter2));
Assert.assertEquals((Integer)1, iterChain.next());
Assert.assertEquals((Integer)2, iterChain.next());
Assert.assertEquals((Integer)3, iterChain.next());
Assert.assertEquals((Integer)4, iterChain.next());
}
@Test
public void remove() {
IterChain<Integer> iterChain = new IterChain<>();
iterChain.addChain(Arrays.asList(1, 2).iterator());
Assert.assertThrows(IllegalStateException.class, iterChain::remove);
}
@Test
public void iterator() {
Iterator<Integer> iter1 = Arrays.asList(1, 2).iterator();
Iterator<Integer> iter2 = Arrays.asList(3, 4).iterator();
IterChain<Integer> iterChain = new IterChain<>();
Assert.assertSame(iterChain, iterChain.addChain(iter1));
Assert.assertSame(iterChain, iterChain.addChain(iter2));
Iterator<Iterator<Integer>> iterators = iterChain.iterator();
Assert.assertSame(iter1, iterators.next());
Assert.assertSame(iter2, iterators.next());
}
}

View File

@@ -0,0 +1,67 @@
package cn.hutool.core.collection.iter;
import org.junit.Assert;
import org.junit.Test;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.Map;
/**
* test for {@link IterUtil}
*/
public class IterUtilTest {
@Test
public void testGetIter() {
Assert.assertNull(IterUtil.getIter(null));
Assert.assertEquals(Collections.emptyIterator(), IterUtil.getIter(Collections.emptyList()));
}
@Test
public void testIsEmpty() {
Assert.assertTrue(IterUtil.isEmpty(Collections.emptyIterator()));
Assert.assertFalse(IterUtil.isEmpty(Arrays.asList(1, 2).iterator()));
Assert.assertTrue(IterUtil.isEmpty(Collections.emptyList()));
Assert.assertFalse(IterUtil.isEmpty(Arrays.asList(1, 2)));
}
@Test
public void testIsNotEmpty() {
Assert.assertFalse(IterUtil.isNotEmpty(Collections.emptyIterator()));
Assert.assertTrue(IterUtil.isNotEmpty(Arrays.asList(1, 2).iterator()));
Assert.assertFalse(IterUtil.isNotEmpty(Collections.emptyList()));
Assert.assertTrue(IterUtil.isNotEmpty(Arrays.asList(1, 2)));
}
@Test
public void testHasNull() {
Assert.assertFalse(IterUtil.hasNull(Arrays.asList(1, 3, 2).iterator()));
Assert.assertTrue(IterUtil.hasNull(Arrays.asList(1, null, 2).iterator()));
Assert.assertFalse(IterUtil.hasNull(Collections.emptyIterator()));
Assert.assertTrue(IterUtil.hasNull(null));
}
@Test
public void testIsAllNull() {
Assert.assertTrue(IterUtil.isAllNull(Arrays.asList(null, null)));
Assert.assertFalse(IterUtil.isAllNull(Arrays.asList(1, null)));
Assert.assertTrue(IterUtil.isAllNull((Iterable<?>)null));
Assert.assertTrue(IterUtil.isAllNull(Arrays.asList(null, null).iterator()));
Assert.assertFalse(IterUtil.isAllNull(Arrays.asList(1, null).iterator()));
Assert.assertTrue(IterUtil.isAllNull((Iterator<?>)null));
}
@Test
public void testCountMap() {
Object o1 = new Object();
Object o2 = new Object();
Map<Object, Integer> countMap = IterUtil.countMap(Arrays.asList(o1, o2, o1, o1).iterator());
Assert.assertEquals((Integer)3, countMap.get(o1));
Assert.assertEquals((Integer)1, countMap.get(o2));
}
}

View File

@@ -0,0 +1,31 @@
package cn.hutool.core.collection.iter;
import org.junit.Assert;
import org.junit.Test;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
/**
* test for {@link PartitionIter}
*/
public class PartitionIterTest {
@Test
public void hasNext() {
Iterator<Integer> iter = Arrays.asList(1, 2, 3, 4).iterator();
PartitionIter<Integer> partitionIter = new PartitionIter<>(iter, 2);
Assert.assertTrue(partitionIter.hasNext());
Assert.assertFalse(new PartitionIter<>(Collections.emptyIterator(), 1).hasNext());
}
@Test
public void next() {
Iterator<Integer> iter = Arrays.asList(1, 2, 3, 4).iterator();
PartitionIter<Integer> partitionIter = new PartitionIter<>(iter, 2);
Assert.assertEquals(Arrays.asList(1, 2), partitionIter.next());
Assert.assertEquals(Arrays.asList(3, 4), partitionIter.next());
}
}