// This product is provided under the terms of EPL (Eclipse Public License) // version 1.0. // // The full license text can be read from: http://www.eclipse.org/org/documents/epl-v10.php package org.dtangler.core.filefinder; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.io.File; import java.io.FileFilter; import java.net.URISyntaxException; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.Map; import java.util.Set; import org.junit.Test; public class RecursiveFileFinderTest { private String getTestDataPath() { try { return new File(getClass().getResource("testdata").toURI()) .getAbsolutePath(); } catch (URISyntaxException e) { throw new RuntimeException(e); } } @Test public void testGetFilesWithPaths() { RecursiveFileFinder fileFinder = new RecursiveFileFinder(); fileFinder.setFilter(new FullPathWildCardFileFilter(Arrays .asList(".class"), Collections.EMPTY_LIST)); String path1 = getPath("testdata"); fileFinder.findFiles(path1); Map<File, String> actual = fileFinder.getFilesWithPaths(); Collection<String> values = actual.values(); Set<String> paths = new HashSet(values); assertEquals(1, paths.size()); assertTrue(paths.iterator().next().endsWith("testdata")); } private String getPath(String from) { String path = getClass().getResource(from).getFile(); if (path.contains("%20")) path = path.replaceAll("%20", " "); return path; } @Test public void testFindFilesWithoutFilter() { RecursiveFileFinder fileFinder = new RecursiveFileFinder(); fileFinder.findFiles(getTestDataPath()); assertEquals(6, fileFinder.getFiles().size()); assertTrue(fileFinder.getFiles().contains( new File(getTestDataPath() + "/Foo.class"))); assertTrue(fileFinder.getFiles().contains( new File(getTestDataPath() + "/Text.txt"))); } @Test public void testFindClassFilesWithFilter() throws URISyntaxException { RecursiveFileFinder fileFinder = new RecursiveFileFinder(); fileFinder.setFilter(new FileFilter() { public boolean accept(File pathname) { return pathname.getName().endsWith(".class"); } }); fileFinder.findFiles(getTestDataPath()); assertEquals(4, fileFinder.getFiles().size()); assertTrue(fileFinder.getFiles().contains( new File(getTestDataPath() + "/Foo.class"))); assertFalse(fileFinder.getFiles().contains( new File(getTestDataPath() + "/Text.txt"))); } }