/* * Copyright (c) 2011-2015 The original author or authors * ------------------------------------------------------ * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * and Apache License v2.0 which accompanies this distribution. * * The Eclipse Public License is available at * http://www.eclipse.org/legal/epl-v10.html * * The Apache License v2.0 is available at * http://www.opensource.org/licenses/apache2.0.php * * You may elect to redistribute this code under either of these licenses. */ package io.vertx.core.impl.launcher.commands; import org.junit.Test; import java.io.File; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; /** * @author <a href="http://escoffier.me">Clement Escoffier</a> */ public class FileSelectorTest { @Test public void test() { String separator = File.separator; assertThat(FileSelector.matchPath("**" + separator + "*.js", "foo.js")).isTrue(); assertThat(FileSelector.matchPath("**" + separator + "*.js", "target" + separator + "foo.js")).isTrue(); assertThat(FileSelector.matchPath("**" + separator + "*.js", "src/main" + separator + "js" + separator + "foo.js")).isTrue(); assertThat(FileSelector.matchPath("**" + separator + "*.js", "src" + separator + "main" + separator + "js" + separator + "dir" + separator + "foo.js")).isTrue(); assertThat(FileSelector.matchPath("*" + separator + "*.js", "src" + separator + "main" + separator + "js" + separator + "dir" + separator + "foo.js")).isFalse(); assertThat(FileSelector.matchPath("*" + separator + "*.js", "src" + separator + "js" + separator + "foo.js")).isFalse(); assertThat(FileSelector.matchPath("*" + separator + "*.js", "src" + separator + "foo.js")).isTrue(); assertThat(FileSelector.matchPath("*" + separator + "*.js", "foo.js")).isFalse(); assertThat(FileSelector.matchPath("*.js", "foo.js")).isTrue(); assertThat(FileSelector.matchPath("*.js", "foo" + separator + "foo.js")).isFalse(); assertThat(FileSelector.matchPath("*.?s", "foo.js")).isTrue(); assertThat(FileSelector.matchPath("*.?s", "foo.s")).isFalse(); assertThat(FileSelector.matchPath("*.?s", "foo.ajs")).isFalse(); assertThat(FileSelector.match("not" + separator + "*" + separator + "something.js", "foo" + separator + "bar" + separator + "something.js")).isFalse(); assertThat(FileSelector.match("**" + separator + "not" + separator + "something.js", "foo" + separator + "bar" + separator + "something.js")).isFalse(); } @Test public void testMatchPath_DefaultFileSeparator() { String separator = File.separator; // Pattern and target start with file separator assertTrue(FileSelector.matchPath(separator + "*" + separator + "a.txt", separator + "b" + separator + "a.txt")); // Pattern starts with file separator, target doesn't assertFalse(FileSelector.matchPath(separator + "*" + separator + "a.txt", "b" + separator + "a.txt")); // Pattern doesn't start with file separator, target does assertFalse(FileSelector.matchPath("*" + separator + "a.txt", separator + "b" + separator + "a.txt")); // Pattern and target don't start with file separator assertTrue(FileSelector.matchPath("*" + separator + "a.txt", "b" + separator + "a.txt")); } @Test public void testMatchPath_UnixFileSeparator() { String separator = "/"; // Pattern and target start with file separator assertTrue(FileSelector.matchPath(separator + "*" + separator + "a.txt", separator + "b" + separator + "a.txt", separator, false)); // Pattern starts with file separator, target doesn't assertFalse(FileSelector.matchPath(separator + "*" + separator + "a.txt", "b" + separator + "a.txt", separator, false)); // Pattern doesn't start with file separator, target does assertFalse(FileSelector.matchPath("*" + separator + "a.txt", separator + "b" + separator + "a.txt", separator, false)); // Pattern and target don't start with file separator assertTrue(FileSelector.matchPath("*" + separator + "a.txt", "b" + separator + "a.txt", separator, false)); } @Test public void testMatchPath_WindowsFileSeparator() { String separator = "\\"; // Pattern and target start with file separator assertTrue(FileSelector.matchPath(separator + "*" + separator + "a.txt", separator + "b" + separator + "a.txt", separator, false)); // Pattern starts with file separator, target doesn't assertFalse(FileSelector.matchPath(separator + "*" + separator + "a.txt", "b" + separator + "a.txt", separator, false)); // Pattern doesn't start with file separator, target does assertFalse(FileSelector.matchPath("*" + separator + "a.txt", separator + "b" + separator + "a.txt", separator, false)); // Pattern and target don't start with file separator assertTrue(FileSelector.matchPath("*" + separator + "a.txt", "b" + separator + "a.txt", separator, false)); } }