| /* |
| * 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)); |
| } |
| } |