package org.test4j.junit.filter.iterator; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.io.File; import java.util.Iterator; import java.util.NoSuchElementException; import org.junit.Test; import org.test4j.hamcrest.matcher.string.StringMode; import org.test4j.junit.filter.iterator.DirFileIterator; import org.test4j.module.ICore; public class DirFileIteratorTest implements ICore { protected Iterator<String> createFileIterator(String path) { return new DirFileIterator(new File("./target/test-classes/forfilter/tests/" + path)); } private void assertNextFilename(Iterator<String> i, String expectedName) { want.bool(i.hasNext()).isEqualTo(true); String filename = i.next(); want.string(filename).isEqualTo(expectedName, StringMode.SameAsSlash); } @Test(expected = NoSuchElementException.class) public void emptyRoot() { Iterator<String> i = createFileIterator("p/emptysubdir"); want.bool(i.hasNext()).isEqualTo(false); i.next(); } @Test(expected = NoSuchElementException.class) public void rootWithEmptySubDirectory() { Iterator<String> i = createFileIterator("p"); want.bool(i.hasNext()).isEqualTo(false); i.next(); } @Test(expected = NoSuchElementException.class) public void threeFilesInRoot() { Iterator<String> i = createFileIterator("p1"); assertNextFilename(i, "P1NoTest$InnerTest.class"); assertNextFilename(i, "P1NoTest.class"); assertNextFilename(i, "P1Test.class"); assertFalse(i.hasNext()); i.next(); } @Test public void recursiveRoot() { Iterator<String> i = createFileIterator(""); assertTrue(i.hasNext()); assertNextFilename(i, "ju38/JU38AbstractTest.class"); assertNextFilename(i, "ju38/JU38ConcreteTest.class"); assertNextFilename(i, "ju38/JU38TestWithoutBase.class"); assertNextFilename(i, "p1/P1NoTest$InnerTest.class"); assertNextFilename(i, "p1/P1NoTest.class"); assertNextFilename(i, "p1/P1Test.class"); assertNextFilename(i, "p2/AbstractP2Test.class"); assertNextFilename(i, "p2/ConcreteP2Test.class"); assertFalse(i.hasNext()); } }