blob: 31f79c1cf88dbd8dabcf83cd097c67875c0e4076 [file] [log] [blame]
/*
* Copyright 2000-2009 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.util.io;
import com.intellij.openapi.util.io.FileUtil;
import junit.framework.TestCase;
import java.util.regex.Pattern;
/**
* @author Eugene Zhuravlev
* Date: May 2, 2007
*/
public class AntpatternsTest extends TestCase {
public void testPatternConversion() {
final Pattern testPattern = convertToPattern("**/test/?*.java");
assertTrue(testPattern.matcher("C:/test/AAA.java").matches());
assertTrue(testPattern.matcher("p1/p2/p3/test/B.java").matches());
assertTrue(testPattern.matcher("test/AAA.java").matches());
assertFalse(testPattern.matcher("test/.java").matches());
assertFalse(testPattern.matcher("tes/AAA.java").matches());
assertFalse(testPattern.matcher("test/subpackage/AAA.java").matches());
final Pattern sourcesPattern = convertToPattern("**/sources\\");
assertTrue(sourcesPattern.matcher("C:/sources/HHH.java").matches());
assertTrue(sourcesPattern.matcher("sources/HHH.class").matches());
assertTrue(sourcesPattern.matcher("p1/p2/p3/sources/subpackage/TTT.java").matches());
assertTrue(sourcesPattern.matcher("p1/p2/p3/p4/p5/sources/subpackage/TTT.java").matches());
assertFalse(sourcesPattern.matcher("p1/source/subpackage/TTT.java").matches());
final Pattern asteriskPattern = convertToPattern("CVS/**/foo.bar");
assertFalse(asteriskPattern.matcher("CVS/entries/aaafoo.bar").matches());
final Pattern asteriskPattern1 = convertToPattern("CVS/**/ttt/");
assertFalse(asteriskPattern1.matcher("CVS/Attt/foo.bar").matches());
final Pattern cvsPattern = convertToPattern("**/CVS/*");
assertTrue(cvsPattern.matcher("CVS/Repository").matches());
assertTrue(cvsPattern.matcher("org/apache/CVS/Entries").matches());
assertTrue(cvsPattern.matcher("org/apache/jakarta/tools/ant/CVS/Entries").matches());
assertFalse(cvsPattern.matcher("org/apache/jakarta/tools/ant/CVS/Entries/aaa").matches());
assertFalse(cvsPattern.matcher("org/apache/CVS/foo/bar/Entries").matches());
final Pattern jakartaPattern = convertToPattern("org/apache/jakarta/**");
assertTrue(jakartaPattern.matcher("org/apache/jakarta/tools/ant/docs/index.html").matches());
assertTrue(jakartaPattern.matcher("org/apache/jakarta/test.xml").matches());
assertTrue(jakartaPattern.matcher("org/apache/jakarta").matches());
assertFalse(jakartaPattern.matcher("org/apache/jakartaaaa").matches());
assertFalse(jakartaPattern.matcher("org/apache/xyz.java").matches());
final Pattern apacheCvsPattern = convertToPattern("org/apache/**/CVS/*");
assertTrue(apacheCvsPattern.matcher("org/apache/CVS/Entries").matches());
assertTrue(apacheCvsPattern.matcher("org/apache/jakarta/tools/ant/CVS/Entries").matches());
assertFalse(apacheCvsPattern.matcher("org/apache/CVS/foo/bar/Entries").matches());
final Pattern pattern = convertToPattern("/aaa.txt");
assertFalse(pattern.matcher("/aaa.txt").matches());
assertTrue(pattern.matcher("aaa.txt").matches());
final Pattern samplePattern = convertToPattern("dir/subdi*/sample.txt");
assertTrue(samplePattern.matcher("dir/subdir/sample.txt").matches());
final Pattern samplePattern2 = convertToPattern("dir/subdi*/");
assertTrue(samplePattern2.matcher("dir/subdir/sample.txt").matches());
assertTrue(samplePattern2.matcher("dir/subdir/foo.txt").matches());
assertTrue(samplePattern2.matcher("dir/subdir/aaa/foo.txt").matches());
}
public void testDoubleAsterisk() {
final Pattern pattern = convertToPattern("dir/s**");
assertTrue(pattern.matcher("dir/subdir").matches());
assertFalse(pattern.matcher("dir/subdir/sample.txt").matches());
}
public void testDoubleAsteriskInside() {
final Pattern pattern = convertToPattern("dir/s**/ttt");
assertTrue(pattern.matcher("dir/subdir/ttt").matches());
assertFalse(pattern.matcher("dir/subdir/aaa/ttt").matches());
assertFalse(pattern.matcher("dir/subdir").matches());
}
public void testDoubleAsteriskOnly() {
final Pattern pattern = convertToPattern("**");
assertTrue(pattern.matcher("dir/subdir/ttt").matches());
assertTrue(pattern.matcher("dir/subdir/aaa/ttt").matches());
assertTrue(pattern.matcher("dir/subdir").matches());
}
public void testDoubleAsteriskOnly2() {
final Pattern pattern = convertToPattern("/**");
assertTrue(pattern.matcher("dir/subdir/ttt").matches());
assertTrue(pattern.matcher("dir/subdir/aaa/ttt").matches());
assertTrue(pattern.matcher("dir/subdir").matches());
}
public void testAsterisks() {
final Pattern pattern = convertToPattern("dir/*?*");
assertTrue(pattern.matcher("dir/subdir").matches());
assertFalse(pattern.matcher("dir/subdir/ttt").matches());
assertFalse(pattern.matcher("dir/subdir/aaa/ttt.txt").matches());
}
public void testTrailingAsterisks() {
final Pattern pattern = convertToPattern("dir/subdir/**");
assertTrue(pattern.matcher("dir/subdir/ttt").matches());
assertTrue(pattern.matcher("dir/subdir/aaa/ttt.txt").matches());
assertTrue(pattern.matcher("dir/subdir").matches());
}
public void testTrailingAsterisks2() {
final Pattern pattern = convertToPattern("dir/subdir/");
assertTrue(pattern.matcher("dir/subdir/ttt").matches());
assertTrue(pattern.matcher("dir/subdir/aaa/ttt.txt").matches());
assertTrue(pattern.matcher("dir/subdir").matches());
}
private Pattern convertToPattern(final String antPattern) {
return Pattern.compile(FileUtil.convertAntToRegexp(antPattern));
}
}