1 package net.sourceforge.pmd.util; 2 3 import static org.junit.Assert.assertEquals; 4 import static org.junit.Assert.assertFalse; 5 import static org.junit.Assert.assertTrue; 6 7 import java.util.ArrayList; 8 import java.util.Iterator; 9 import java.util.List; 10 import java.util.NoSuchElementException; 11 12 import net.sourceforge.pmd.util.CompoundIterator; 13 14 import org.junit.Before; 15 import org.junit.Test; 16 17 public class CompoundListTest { 18 19 private List<String> l1; 20 private List<String> l2; 21 private Iterator<String> iterator; 22 23 @Before 24 public void setUp() { 25 l1 = new ArrayList<String>(); 26 l1.add("1"); 27 l1.add("2"); 28 l2 = new ArrayList<String>(); 29 l2.add("3"); 30 l2.add("4"); 31 32 iterator = new CompoundIterator<String>(l1.iterator(), l2.iterator()); 33 } 34 35 @Test 36 public void testHappyPath() { 37 assertTrue(iterator.hasNext()); 38 assertEquals("1", iterator.next()); 39 assertTrue(iterator.hasNext()); 40 assertEquals("2", iterator.next()); 41 assertTrue(iterator.hasNext()); 42 assertEquals("3", iterator.next()); 43 assertTrue(iterator.hasNext()); 44 assertEquals("4", iterator.next()); 45 assertFalse(iterator.hasNext()); 46 assertEquals(2, l1.size()); 47 assertEquals(2, l2.size()); 48 } 49 50 @Test 51 public void testHappyPathRemove() { 52 assertTrue(iterator.hasNext()); 53 assertEquals("1", iterator.next()); 54 iterator.remove(); 55 assertTrue(iterator.hasNext()); 56 assertEquals("2", iterator.next()); 57 assertTrue(iterator.hasNext()); 58 assertEquals("3", iterator.next()); 59 iterator.remove(); 60 assertTrue(iterator.hasNext()); 61 assertEquals("4", iterator.next()); 62 assertFalse(iterator.hasNext()); 63 assertEquals(1, l1.size()); 64 assertEquals("2", l1.get(0)); 65 assertEquals(1, l2.size()); 66 assertEquals("4", l2.get(0)); 67 } 68 69 @Test 70 public void testEmpty() { 71 Iterator<?> iterator = new CompoundIterator(); 72 assertFalse(iterator.hasNext()); 73 } 74 75 @Test(expected = NoSuchElementException.class) 76 public void testEmptyBadNext() { 77 Iterator<?> iterator = new CompoundIterator(); 78 iterator.next(); 79 } 80 81 @Test(expected = IllegalStateException.class) 82 public void testEmptyBadRemove() { 83 Iterator<?> iterator = new CompoundIterator(); 84 iterator.remove(); 85 } 86 87 public static junit.framework.Test suite() { 88 return new junit.framework.JUnit4TestAdapter(CompoundListTest.class); 89 } 90 }