package org.simpleflatmapper.util.test; import org.junit.Test; import org.simpleflatmapper.util.CloseableIterator; import java.io.Closeable; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import static org.junit.Assert.*; public class CloseableIteratorTest { @Test public void test() throws IOException { MyCloseable closeable = new MyCloseable(); List<String> expected = Arrays.asList("str1", "str2"); CloseableIterator<String> closeableIterator = new CloseableIterator<String>(expected.iterator(), closeable); try { List<String> list = new ArrayList<String>(); while(closeableIterator.hasNext()) { list.add(closeableIterator.next()); try { closeableIterator.remove(); fail(); } catch (UnsupportedOperationException e){ } } assertEquals(expected, list); } finally { closeableIterator.close(); } assertEquals(1, closeable.closed); } private class MyCloseable implements Closeable { private int closed; @Override public void close() throws IOException { closed++; } } }