~ubuntu-branches/ubuntu/karmic/commons-io/karmic

« back to all changes in this revision

Viewing changes to src/test/org/apache/commons/io/FilenameUtilsWildcardTestCase.java

  • Committer: Bazaar Package Importer
  • Author(s): Arnaud Vandyck
  • Date: 2007-04-13 08:20:49 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20070413082049-2hd3s5ixtxsgvnvm
Tags: 1.3.1.dfsg.1-1
* New upstream (closes: #418973)
* java-gcj-compat-dev and cdbs transition
* Removed junit at the moment (closes: #397567)
* No javadoc at the moment

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Licensed to the Apache Software Foundation (ASF) under one or more
 
3
 * contributor license agreements.  See the NOTICE file distributed with
 
4
 * this work for additional information regarding copyright ownership.
 
5
 * The ASF licenses this file to You under the Apache License, Version 2.0
 
6
 * (the "License"); you may not use this file except in compliance with
 
7
 * the License.  You may obtain a copy of the License at
 
8
 * 
 
9
 *      http://www.apache.org/licenses/LICENSE-2.0
 
10
 * 
 
11
 * Unless required by applicable law or agreed to in writing, software
 
12
 * distributed under the License is distributed on an "AS IS" BASIS,
 
13
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
14
 * See the License for the specific language governing permissions and
 
15
 * limitations under the License.
 
16
 */
 
17
package org.apache.commons.io;
 
18
 
 
19
import java.io.File;
 
20
 
 
21
import junit.framework.TestCase;
 
22
 
 
23
public class FilenameUtilsWildcardTestCase extends TestCase {
 
24
 
 
25
    private static final boolean WINDOWS = (File.separatorChar == '\\');
 
26
 
 
27
    public FilenameUtilsWildcardTestCase(String name) {
 
28
        super(name);
 
29
    }
 
30
 
 
31
    //-----------------------------------------------------------------------
 
32
    // Testing:
 
33
    //   FilenameUtils.wildcardMatch(String,String)
 
34
 
 
35
    public void testMatch() {
 
36
        assertEquals(false, FilenameUtils.wildcardMatch(null, "Foo"));
 
37
        assertEquals(false, FilenameUtils.wildcardMatch("Foo", null));
 
38
        assertEquals(true, FilenameUtils.wildcardMatch(null, null));
 
39
        assertEquals(true, FilenameUtils.wildcardMatch("Foo", "Foo"));
 
40
        assertEquals(true, FilenameUtils.wildcardMatch("", ""));
 
41
        assertEquals(true, FilenameUtils.wildcardMatch("Foo", "Fo*"));
 
42
        assertEquals(true, FilenameUtils.wildcardMatch("Foo", "Fo?"));
 
43
        assertEquals(true, FilenameUtils.wildcardMatch("Foo Bar and Catflap", "Fo*"));
 
44
        assertEquals(true, FilenameUtils.wildcardMatch("New Bookmarks", "N?w ?o?k??r?s"));
 
45
        assertEquals(false, FilenameUtils.wildcardMatch("Foo", "Bar"));
 
46
        assertEquals(true, FilenameUtils.wildcardMatch("Foo Bar Foo", "F*o Bar*"));
 
47
        assertEquals(true, FilenameUtils.wildcardMatch("Adobe Acrobat Installer", "Ad*er"));
 
48
        assertEquals(true, FilenameUtils.wildcardMatch("Foo", "*Foo"));
 
49
        assertEquals(true, FilenameUtils.wildcardMatch("BarFoo", "*Foo"));
 
50
        assertEquals(true, FilenameUtils.wildcardMatch("Foo", "Foo*"));
 
51
        assertEquals(true, FilenameUtils.wildcardMatch("FooBar", "Foo*"));
 
52
        assertEquals(false, FilenameUtils.wildcardMatch("FOO", "*Foo"));
 
53
        assertEquals(false, FilenameUtils.wildcardMatch("BARFOO", "*Foo"));
 
54
        assertEquals(false, FilenameUtils.wildcardMatch("FOO", "Foo*"));
 
55
        assertEquals(false, FilenameUtils.wildcardMatch("FOOBAR", "Foo*"));
 
56
    }
 
57
 
 
58
    public void testMatchOnSystem() {
 
59
        assertEquals(false, FilenameUtils.wildcardMatchOnSystem(null, "Foo"));
 
60
        assertEquals(false, FilenameUtils.wildcardMatchOnSystem("Foo", null));
 
61
        assertEquals(true, FilenameUtils.wildcardMatchOnSystem(null, null));
 
62
        assertEquals(true, FilenameUtils.wildcardMatchOnSystem("Foo", "Foo"));
 
63
        assertEquals(true, FilenameUtils.wildcardMatchOnSystem("", ""));
 
64
        assertEquals(true, FilenameUtils.wildcardMatchOnSystem("Foo", "Fo*"));
 
65
        assertEquals(true, FilenameUtils.wildcardMatchOnSystem("Foo", "Fo?"));
 
66
        assertEquals(true, FilenameUtils.wildcardMatchOnSystem("Foo Bar and Catflap", "Fo*"));
 
67
        assertEquals(true, FilenameUtils.wildcardMatchOnSystem("New Bookmarks", "N?w ?o?k??r?s"));
 
68
        assertEquals(false, FilenameUtils.wildcardMatchOnSystem("Foo", "Bar"));
 
69
        assertEquals(true, FilenameUtils.wildcardMatchOnSystem("Foo Bar Foo", "F*o Bar*"));
 
70
        assertEquals(true, FilenameUtils.wildcardMatchOnSystem("Adobe Acrobat Installer", "Ad*er"));
 
71
        assertEquals(true, FilenameUtils.wildcardMatchOnSystem("Foo", "*Foo"));
 
72
        assertEquals(true, FilenameUtils.wildcardMatchOnSystem("BarFoo", "*Foo"));
 
73
        assertEquals(true, FilenameUtils.wildcardMatchOnSystem("Foo", "Foo*"));
 
74
        assertEquals(true, FilenameUtils.wildcardMatchOnSystem("FooBar", "Foo*"));
 
75
        assertEquals(WINDOWS, FilenameUtils.wildcardMatchOnSystem("FOO", "*Foo"));
 
76
        assertEquals(WINDOWS, FilenameUtils.wildcardMatchOnSystem("BARFOO", "*Foo"));
 
77
        assertEquals(WINDOWS, FilenameUtils.wildcardMatchOnSystem("FOO", "Foo*"));
 
78
        assertEquals(WINDOWS, FilenameUtils.wildcardMatchOnSystem("FOOBAR", "Foo*"));
 
79
    }
 
80
 
 
81
    public void testMatchCaseSpecified() {
 
82
        assertEquals(false, FilenameUtils.wildcardMatch(null, "Foo", IOCase.SENSITIVE));
 
83
        assertEquals(false, FilenameUtils.wildcardMatch("Foo", null, IOCase.SENSITIVE));
 
84
        assertEquals(true, FilenameUtils.wildcardMatch(null, null, IOCase.SENSITIVE));
 
85
        assertEquals(true, FilenameUtils.wildcardMatch("Foo", "Foo", IOCase.SENSITIVE));
 
86
        assertEquals(true, FilenameUtils.wildcardMatch("", "", IOCase.SENSITIVE));
 
87
        assertEquals(true, FilenameUtils.wildcardMatch("Foo", "Fo*", IOCase.SENSITIVE));
 
88
        assertEquals(true, FilenameUtils.wildcardMatch("Foo", "Fo?", IOCase.SENSITIVE));
 
89
        assertEquals(true, FilenameUtils.wildcardMatch("Foo Bar and Catflap", "Fo*", IOCase.SENSITIVE));
 
90
        assertEquals(true, FilenameUtils.wildcardMatch("New Bookmarks", "N?w ?o?k??r?s", IOCase.SENSITIVE));
 
91
        assertEquals(false, FilenameUtils.wildcardMatch("Foo", "Bar", IOCase.SENSITIVE));
 
92
        assertEquals(true, FilenameUtils.wildcardMatch("Foo Bar Foo", "F*o Bar*", IOCase.SENSITIVE));
 
93
        assertEquals(true, FilenameUtils.wildcardMatch("Adobe Acrobat Installer", "Ad*er", IOCase.SENSITIVE));
 
94
        assertEquals(true, FilenameUtils.wildcardMatch("Foo", "*Foo", IOCase.SENSITIVE));
 
95
        assertEquals(true, FilenameUtils.wildcardMatch("Foo", "Foo*", IOCase.SENSITIVE));
 
96
        assertEquals(true, FilenameUtils.wildcardMatch("Foo", "*Foo", IOCase.SENSITIVE));
 
97
        assertEquals(true, FilenameUtils.wildcardMatch("BarFoo", "*Foo", IOCase.SENSITIVE));
 
98
        assertEquals(true, FilenameUtils.wildcardMatch("Foo", "Foo*", IOCase.SENSITIVE));
 
99
        assertEquals(true, FilenameUtils.wildcardMatch("FooBar", "Foo*", IOCase.SENSITIVE));
 
100
        
 
101
        assertEquals(false, FilenameUtils.wildcardMatch("FOO", "*Foo", IOCase.SENSITIVE));
 
102
        assertEquals(false, FilenameUtils.wildcardMatch("BARFOO", "*Foo", IOCase.SENSITIVE));
 
103
        assertEquals(false, FilenameUtils.wildcardMatch("FOO", "Foo*", IOCase.SENSITIVE));
 
104
        assertEquals(false, FilenameUtils.wildcardMatch("FOOBAR", "Foo*", IOCase.SENSITIVE));
 
105
        assertEquals(true, FilenameUtils.wildcardMatch("FOO", "*Foo", IOCase.INSENSITIVE));
 
106
        assertEquals(true, FilenameUtils.wildcardMatch("BARFOO", "*Foo", IOCase.INSENSITIVE));
 
107
        assertEquals(true, FilenameUtils.wildcardMatch("FOO", "Foo*", IOCase.INSENSITIVE));
 
108
        assertEquals(true, FilenameUtils.wildcardMatch("FOOBAR", "Foo*", IOCase.INSENSITIVE));
 
109
        assertEquals(WINDOWS, FilenameUtils.wildcardMatch("FOO", "*Foo", IOCase.SYSTEM));
 
110
        assertEquals(WINDOWS, FilenameUtils.wildcardMatch("BARFOO", "*Foo", IOCase.SYSTEM));
 
111
        assertEquals(WINDOWS, FilenameUtils.wildcardMatch("FOO", "Foo*", IOCase.SYSTEM));
 
112
        assertEquals(WINDOWS, FilenameUtils.wildcardMatch("FOOBAR", "Foo*", IOCase.SYSTEM));
 
113
    }
 
114
 
 
115
    public void testSplitOnTokens() {
 
116
        assertArrayEquals( new String[] { "Ad", "*", "er" }, FilenameUtils.splitOnTokens("Ad*er") );
 
117
        assertArrayEquals( new String[] { "Ad", "?", "er" }, FilenameUtils.splitOnTokens("Ad?er") );
 
118
        assertArrayEquals( new String[] { "Test", "*", "?", "One" }, FilenameUtils.splitOnTokens("Test*?One") );
 
119
        assertArrayEquals( new String[] { "*" }, FilenameUtils.splitOnTokens("****") );
 
120
        assertArrayEquals( new String[] { "*", "?", "?", "*" }, FilenameUtils.splitOnTokens("*??*") );
 
121
        assertArrayEquals( new String[] { "*", "?", "?", "*" }, FilenameUtils.splitOnTokens("*??*") );
 
122
        assertArrayEquals( new String[] { "h", "?", "?", "*" }, FilenameUtils.splitOnTokens("h??*") );
 
123
        assertArrayEquals( new String[] { "" }, FilenameUtils.splitOnTokens("") );
 
124
    }
 
125
 
 
126
    private void assertArrayEquals(Object[] a1, Object[] a2) {
 
127
        assertEquals(a1.length, a2.length);
 
128
        for(int i=0; i<a1.length; i++) {
 
129
            assertEquals(a1[i], a2[i]);
 
130
        }
 
131
    }
 
132
 
 
133
    private void assertMatch(String text, String wildcard, boolean expected) {
 
134
        assertEquals(text + " " + wildcard, expected, FilenameUtils.wildcardMatch(text, wildcard));
 
135
    }
 
136
 
 
137
    // A separate set of tests, added to this batch
 
138
    public void testMatch2() {
 
139
        assertMatch("log.txt", "log.txt", true);
 
140
        assertMatch("log.txt1", "log.txt", false);
 
141
 
 
142
        assertMatch("log.txt", "log.txt*", true);
 
143
        assertMatch("log.txt", "log.txt*1", false);
 
144
        assertMatch("log.txt", "*log.txt*", true);
 
145
 
 
146
        assertMatch("log.txt", "*.txt", true);
 
147
        assertMatch("txt.log", "*.txt", false);
 
148
        assertMatch("config.ini", "*.ini", true);
 
149
 
 
150
        assertMatch("config.txt.bak", "con*.txt", false);
 
151
 
 
152
        assertMatch("log.txt9", "*.txt?", true);
 
153
        assertMatch("log.txt", "*.txt?", false);
 
154
 
 
155
        assertMatch("progtestcase.java~5~", "*test*.java~*~", true);
 
156
        assertMatch("progtestcase.java;5~", "*test*.java~*~", false);
 
157
        assertMatch("progtestcase.java~5", "*test*.java~*~", false);
 
158
 
 
159
        assertMatch("log.txt", "log.*", true);
 
160
 
 
161
        assertMatch("log.txt", "log?*", true);
 
162
 
 
163
        assertMatch("log.txt12", "log.txt??", true);
 
164
        
 
165
        assertMatch("log.log", "log**log", true);
 
166
        assertMatch("log.log", "log**", true);
 
167
        assertMatch("log.log", "log.**", true);
 
168
        assertMatch("log.log", "**.log", true);
 
169
        assertMatch("log.log", "**log", true);
 
170
 
 
171
        assertMatch("log.log", "log*log", true);
 
172
        assertMatch("log.log", "log*", true);
 
173
        assertMatch("log.log", "log.*", true);
 
174
        assertMatch("log.log", "*.log", true);
 
175
        assertMatch("log.log", "*log", true);
 
176
        
 
177
        assertMatch("log.log", "*log?", false);
 
178
        assertMatch("log.log", "*log?*", true);
 
179
        assertMatch("log.log.abc", "*log?abc", true);
 
180
        assertMatch("log.log.abc.log.abc", "*log?abc", true);
 
181
        assertMatch("log.log.abc.log.abc.d", "*log?abc?d", true);
 
182
    }
 
183
 
 
184
}