package jdrivesync.cli; import jdrivesync.App; import org.junit.BeforeClass; import org.junit.Test; import java.io.IOException; import java.util.Arrays; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; public class FileNamePatternsTest { @BeforeClass public static void beforeClass() { App.initLogging(); } @Test public void testFileExtension() throws IOException { FileNamePatterns fileNamePatterns = FileNamePatterns.create(Arrays.asList("*.mp3", "*.avi", "*.mov")); assertThat(fileNamePatterns.matches("test.mp3", false), is(true)); assertThat(fileNamePatterns.matches("test.mp4", false), is(false)); assertThat(fileNamePatterns.matches("test.avi", false), is(true)); assertThat(fileNamePatterns.matches("test.mov", false), is(true)); assertThat(fileNamePatterns.matches("mov.txt", false), is(false)); } @Test public void testCommentedLines() throws IOException { FileNamePatterns fileNamePatterns = FileNamePatterns.create(Arrays.asList("*.mp3", " #A comment", "\\#.txt")); assertThat(fileNamePatterns.matches("#.txt", false), is(true)); assertThat(fileNamePatterns.matches("#.mp3", false), is(true)); } @Test public void testBlankLine() throws IOException { FileNamePatterns fileNamePatterns = FileNamePatterns.create(Arrays.asList("*.mp3", " ", "*.txt")); assertThat(fileNamePatterns.matches("#.txt", false), is(true)); } @Test public void testPatternEndsWithSlash() throws IOException { FileNamePatterns fileNamePatterns = FileNamePatterns.create(Arrays.asList("folder/")); assertThat(fileNamePatterns.matches("folder", true), is(true)); assertThat(fileNamePatterns.matches("folder", false), is(false)); } @Test public void testPathPatternWithAsterisk() throws IOException { FileNamePatterns fileNamePatterns = FileNamePatterns.create(Arrays.asList("doc/*.html")); assertThat(fileNamePatterns.matches("doc/git.html", false), is(true)); assertThat(fileNamePatterns.matches("doc/svn.html", false), is(true)); assertThat(fileNamePatterns.matches("doc/folder/t1.html", false), is(false)); assertThat(fileNamePatterns.matches("doc/folder/folder/t1.html", false), is(false)); assertThat(fileNamePatterns.matches("t1.html", false), is(false)); } @Test public void testPathPatternWithLeadingDoubleAsterisk() throws IOException { FileNamePatterns fileNamePatterns = FileNamePatterns.create(Arrays.asList("**/foo")); assertThat(fileNamePatterns.matches("doc/foo", false), is(true)); assertThat(fileNamePatterns.matches("doc/html/foo", false), is(true)); assertThat(fileNamePatterns.matches("foo", false), is(true)); } @Test public void testPathPatternWithTrailingDoubleAsterisk() throws IOException { FileNamePatterns fileNamePatterns = FileNamePatterns.create(Arrays.asList("foo/**")); assertThat(fileNamePatterns.matches("foo/abc", false), is(true)); assertThat(fileNamePatterns.matches("foo/abc", true), is(true)); assertThat(fileNamePatterns.matches("foo/a.html", false), is(true)); assertThat(fileNamePatterns.matches("foo/folder/abc.html", false), is(true)); assertThat(fileNamePatterns.matches("fooo", false), is(false)); assertThat(fileNamePatterns.matches("fo", false), is(false)); assertThat(fileNamePatterns.matches("abc", false), is(false)); } @Test public void testPathPatternWithIncludingDoubleAsterisk() throws IOException { FileNamePatterns fileNamePatterns = FileNamePatterns.create(Arrays.asList("foo/**/folder")); assertThat(fileNamePatterns.matches("foo/abc/folder", false), is(true)); assertThat(fileNamePatterns.matches("foo/folder", false), is(true)); assertThat(fileNamePatterns.matches("foo/x/y/folder", false), is(true)); assertThat(fileNamePatterns.matches("foo/x/y/folde", false), is(false)); assertThat(fileNamePatterns.matches("fo/folder", false), is(false)); } @Test public void testPathPatternWithFileExtension() throws IOException { FileNamePatterns fileNamePatterns = FileNamePatterns.create(Arrays.asList("**/*.html")); assertThat(fileNamePatterns.matches("test.html", false), is(true)); assertThat(fileNamePatterns.matches("foo/test.html", false), is(true)); assertThat(fileNamePatterns.matches("foo/folder/xy.html", false), is(true)); assertThat(fileNamePatterns.matches("test.mp3", false), is(false)); assertThat(fileNamePatterns.matches("foo/test.mp3", false), is(false)); } @Test public void testCompletePath() { FileNamePatterns fileNamePatterns = FileNamePatterns.create(Arrays.asList("doc/git.html")); assertThat(fileNamePatterns.matches("git.html", false), is(false)); assertThat(fileNamePatterns.matches("doc/git.html", false), is(true)); assertThat(fileNamePatterns.matches("doc/svn.html", false), is(false)); } @Test public void testCatchAllPath() { FileNamePatterns fileNamePatterns = FileNamePatterns.create(Arrays.asList("**/*")); assertThat(fileNamePatterns.matches("git.html", false), is(true)); assertThat(fileNamePatterns.matches("doc/git.html", false), is(true)); assertThat(fileNamePatterns.matches("doc/svn.html", false), is(true)); assertThat(fileNamePatterns.matches("doc/foo/xyz.txt", false), is(true)); assertThat(fileNamePatterns.matches(".ssh", false), is(true)); } }