package com.twasyl.slideshowfx.utils.io; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import java.io.File; import java.io.IOException; import java.net.URISyntaxException; import java.nio.file.Files; import java.nio.file.NoSuchFileException; import static org.junit.Assert.*; /** * Tests the class {@link ListFilesFileVisitor} * * @author Thierry Wasylczenko * @version 1.1 * @since SlideshowFX 1.0 */ public class ListFilesFileVisitorTest { private static File baseLocation; private ListFilesFileVisitor visitor; @BeforeClass public static void setUp() throws URISyntaxException { // Hack to get the resources folder final File file = new File(ListFilesFileVisitorTest.class.getResource("/com/twasyl/slideshowfx/utils/io/file.txt").toURI()); baseLocation = file.getParentFile(); // Create an empty directory as an empty dir can not be added to the VCS. new File(baseLocation, "emptyDir").mkdir(); new File(baseLocation, "dir/dir2").mkdirs(); } @Before public void beforeTest() { this.visitor = new ListFilesFileVisitor(); } @Test public void testWalkOnExistingFile() throws IOException { final File file = new File(baseLocation, "file.txt"); Files.walkFileTree(file.toPath(), visitor); assertFalse(visitor.getPaths().isEmpty()); assertEquals(file.toPath(), visitor.getPaths().get(0)); } @Test(expected = NoSuchFileException.class) public void testWalkOnInvalidFile() throws IOException { final File file = new File(baseLocation, "this_file_dont_exist.txt"); Files.walkFileTree(file.toPath(), visitor); } @Test public void testOnEmptyDir() throws IOException { final File emptyDir = new File(baseLocation, "emptyDir"); Files.walkFileTree(emptyDir.toPath(), visitor); assertFalse(visitor.getPaths().isEmpty()); assertEquals(emptyDir.toPath(), visitor.getPaths().get(0)); } @Test public void testOnFileTree() throws IOException { final File emptyDir = baseLocation; Files.walkFileTree(emptyDir.toPath(), visitor); assertEquals(5, visitor.getPaths().size()); assertTrue(visitor.getPaths().contains(new File(baseLocation, "dir/dir2").toPath())); assertTrue(visitor.getPaths().contains(new File(baseLocation, "dir/dir3/file2.txt").toPath())); assertTrue(visitor.getPaths().contains(new File(baseLocation, "dir/file1.txt").toPath())); assertTrue(visitor.getPaths().contains(new File(baseLocation, "emptyDir").toPath())); assertTrue(visitor.getPaths().contains(new File(baseLocation, "file.txt").toPath())); } }