package cucumber.runtime.io; import org.junit.Test; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.NoSuchElementException; import static java.util.Arrays.asList; import static org.junit.Assert.*; public class FlatteningIteratorTest { @Test public void flattens_iterators() { final FlatteningIterator<Integer> fi = new FlatteningIterator<Integer>(); fi.push(asList(3, 4).iterator()); fi.push(asList(1, 2).iterator()); assertEquals(asList(1, 2, 3, 4), toList(fi)); assertFalse(fi.hasNext()); try { fi.next(); fail(); } catch (NoSuchElementException expected) { } } private <T> List<T> toList(final Iterator<T> fi) { Iterable<T> i = new Iterable<T>() { @Override public Iterator<T> iterator() { return fi; } }; List<T> l = new ArrayList<T>(); for (T o : i) { l.add(o); } return l; } }