/**
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package net.sourceforge.pmd.util;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.NoSuchElementException;
import org.junit.Before;
import org.junit.Test;
public class CompoundListTest {
private List<String> l1;
private List<String> l2;
private Iterator<String> iterator;
@Before
public void setUp() {
l1 = new ArrayList<>();
l1.add("1");
l1.add("2");
l2 = new ArrayList<>();
l2.add("3");
l2.add("4");
iterator = new CompoundIterator<>(l1.iterator(), l2.iterator());
}
@Test
public void testHappyPath() {
assertTrue(iterator.hasNext());
assertEquals("1", iterator.next());
assertTrue(iterator.hasNext());
assertEquals("2", iterator.next());
assertTrue(iterator.hasNext());
assertEquals("3", iterator.next());
assertTrue(iterator.hasNext());
assertEquals("4", iterator.next());
assertFalse(iterator.hasNext());
assertEquals(2, l1.size());
assertEquals(2, l2.size());
}
@Test
public void testHappyPathRemove() {
assertTrue(iterator.hasNext());
assertEquals("1", iterator.next());
iterator.remove();
assertTrue(iterator.hasNext());
assertEquals("2", iterator.next());
assertTrue(iterator.hasNext());
assertEquals("3", iterator.next());
iterator.remove();
assertTrue(iterator.hasNext());
assertEquals("4", iterator.next());
assertFalse(iterator.hasNext());
assertEquals(1, l1.size());
assertEquals("2", l1.get(0));
assertEquals(1, l2.size());
assertEquals("4", l2.get(0));
}
@Test
public void testEmpty() {
Iterator<?> iterator = new CompoundIterator();
assertFalse(iterator.hasNext());
}
@Test(expected = NoSuchElementException.class)
public void testEmptyBadNext() {
Iterator<?> iterator = new CompoundIterator();
iterator.next();
}
@Test(expected = IllegalStateException.class)
public void testEmptyBadRemove() {
Iterator<?> iterator = new CompoundIterator();
iterator.remove();
}
public static junit.framework.Test suite() {
return new junit.framework.JUnit4TestAdapter(CompoundListTest.class);
}
}