1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.io.filefilter;
19
20 import static org.junit.jupiter.api.Assertions.assertEquals;
21 import static org.junit.jupiter.api.Assertions.assertFalse;
22 import static org.junit.jupiter.api.Assertions.assertThrows;
23 import static org.junit.jupiter.api.Assertions.assertTrue;
24
25 import java.io.File;
26 import java.io.IOException;
27 import java.nio.file.FileVisitResult;
28 import java.nio.file.Path;
29 import java.util.Arrays;
30 import java.util.List;
31
32 import org.apache.commons.io.IOCase;
33 import org.junit.jupiter.api.Test;
34
35 public class WildcardFileFilterTest extends AbstractFilterTest {
36
37 @Test
38 public void testWildcard() throws IOException {
39 IOFileFilter filter = new WildcardFileFilter("*.txt");
40 assertFiltering(filter, new File("log.txt"), true);
41 assertFiltering(filter, new File("log.TXT"), false);
42
43 assertFiltering(filter, new File("log.txt").toPath(), true);
44 assertFiltering(filter, new File("log.TXT").toPath(), false);
45
46 filter = new WildcardFileFilter("*.txt", IOCase.SENSITIVE);
47 assertFiltering(filter, new File("log.txt"), true);
48 assertFiltering(filter, new File("log.TXT"), false);
49
50 filter = WildcardFileFilter.builder().setWildcards("*.txt").setIoCase(IOCase.SENSITIVE).get();
51 assertFiltering(filter, new File("log.txt"), true);
52 assertFiltering(filter, new File("log.TXT"), false);
53
54 assertFiltering(filter, new File("log.txt").toPath(), true);
55 assertFiltering(filter, new File("log.TXT").toPath(), false);
56
57 filter = WildcardFileFilter.builder().setWildcards("*.txt").setIoCase(IOCase.INSENSITIVE).get();
58 assertFiltering(filter, new File("log.txt"), true);
59 assertFiltering(filter, new File("log.TXT"), true);
60
61 assertFiltering(filter, new File("log.txt").toPath(), true);
62 assertFiltering(filter, new File("log.TXT").toPath(), true);
63
64 filter = WildcardFileFilter.builder().setWildcards("*.txt").setIoCase(IOCase.SYSTEM).get();
65 assertFiltering(filter, new File("log.txt"), true);
66 assertFiltering(filter, new File("log.TXT"), WINDOWS);
67
68 assertFiltering(filter, new File("log.txt").toPath(), true);
69 assertFiltering(filter, new File("log.TXT").toPath(), WINDOWS);
70
71 filter = WildcardFileFilter.builder().setWildcards("*.txt").setIoCase(null).get();
72 assertFiltering(filter, new File("log.txt"), true);
73 assertFiltering(filter, new File("log.TXT"), false);
74
75 assertFiltering(filter, new File("log.txt").toPath(), true);
76 assertFiltering(filter, new File("log.TXT").toPath(), false);
77
78 filter = new WildcardFileFilter("*.java", "*.class");
79 assertFiltering(filter, new File("Test.java"), true);
80 assertFiltering(filter, new File("Test.class"), true);
81 assertFiltering(filter, new File("Test.jsp"), false);
82
83 assertFiltering(filter, new File("Test.java").toPath(), true);
84 assertFiltering(filter, new File("Test.class").toPath(), true);
85 assertFiltering(filter, new File("Test.jsp").toPath(), false);
86
87 filter = WildcardFileFilter.builder().setWildcards("*.java", "*.class").get();
88 assertFiltering(filter, new File("Test.java"), true);
89 assertFiltering(filter, new File("Test.class"), true);
90 assertFiltering(filter, new File("Test.jsp"), false);
91
92 assertFiltering(filter, new File("Test.java").toPath(), true);
93 assertFiltering(filter, new File("Test.class").toPath(), true);
94 assertFiltering(filter, new File("Test.jsp").toPath(), false);
95
96 filter = WildcardFileFilter.builder().setWildcards("*.java", "*.class").setIoCase(IOCase.SENSITIVE).get();
97 assertFiltering(filter, new File("Test.java"), true);
98 assertFiltering(filter, new File("Test.JAVA"), false);
99
100 assertFiltering(filter, new File("Test.java").toPath(), true);
101 assertFiltering(filter, new File("Test.JAVA").toPath(), false);
102
103 filter = WildcardFileFilter.builder().setWildcards("*.java", "*.class").setIoCase(IOCase.INSENSITIVE).get();
104 assertFiltering(filter, new File("Test.java"), true);
105 assertFiltering(filter, new File("Test.JAVA"), true);
106
107 assertFiltering(filter, new File("Test.java").toPath(), true);
108 assertFiltering(filter, new File("Test.JAVA").toPath(), true);
109
110 filter = WildcardFileFilter.builder().setWildcards("*.java", "*.class").setIoCase(IOCase.SYSTEM).get();
111 assertFiltering(filter, new File("Test.java"), true);
112 assertFiltering(filter, new File("Test.JAVA"), WINDOWS);
113
114 assertFiltering(filter, new File("Test.java").toPath(), true);
115 assertFiltering(filter, new File("Test.JAVA").toPath(), WINDOWS);
116
117 filter = WildcardFileFilter.builder().setWildcards("*.java", "*.class").setIoCase(null).get();
118 assertFiltering(filter, new File("Test.java"), true);
119 assertFiltering(filter, new File("Test.JAVA"), false);
120
121 assertFiltering(filter, new File("Test.java").toPath(), true);
122 assertFiltering(filter, new File("Test.JAVA").toPath(), false);
123
124 final List<String> patternList = Arrays.asList("*.txt", "*.xml", "*.gif");
125 final IOFileFilter listFilter = WildcardFileFilter.builder().setWildcards(patternList).get();
126 assertFiltering(listFilter, new File("Test.txt"), true);
127 assertFiltering(listFilter, new File("Test.xml"), true);
128 assertFiltering(listFilter, new File("Test.gif"), true);
129 assertFiltering(listFilter, new File("Test.bmp"), false);
130
131 assertFiltering(listFilter, new File("Test.txt").toPath(), true);
132 assertFiltering(listFilter, new File("Test.xml").toPath(), true);
133 assertFiltering(listFilter, new File("Test.gif").toPath(), true);
134 assertFiltering(listFilter, new File("Test.bmp").toPath(), false);
135
136 final File txtFile = new File("test.txt");
137 final Path txtPath = txtFile.toPath();
138 final File bmpFile = new File("test.bmp");
139 final Path bmpPath = bmpFile.toPath();
140 final File dirFile = new File("src/java");
141 final Path dirPath = dirFile.toPath();
142
143 assertTrue(listFilter.accept(txtFile));
144 assertFalse(listFilter.accept(bmpFile));
145 assertFalse(listFilter.accept(dirFile));
146
147 assertTrue(listFilter.matches(txtPath));
148 assertFalse(listFilter.matches(bmpPath));
149 assertFalse(listFilter.matches(dirPath));
150
151 assertEquals(FileVisitResult.CONTINUE, listFilter.accept(txtPath, null));
152 assertEquals(FileVisitResult.TERMINATE, listFilter.accept(bmpPath, null));
153 assertEquals(FileVisitResult.TERMINATE, listFilter.accept(dirPath, null));
154
155 assertTrue(listFilter.accept(txtFile.getParentFile(), txtFile.getName()));
156 assertFalse(listFilter.accept(bmpFile.getParentFile(), bmpFile.getName()));
157 assertFalse(listFilter.accept(dirFile.getParentFile(), dirFile.getName()));
158
159 assertEquals(FileVisitResult.CONTINUE, listFilter.accept(txtPath, null));
160 assertEquals(FileVisitResult.TERMINATE, listFilter.accept(bmpPath, null));
161 assertEquals(FileVisitResult.TERMINATE, listFilter.accept(dirPath, null));
162
163 assertThrows(NullPointerException.class, () -> new WildcardFileFilter((String) null));
164 assertThrows(NullPointerException.class, () -> new WildcardFileFilter((String[]) null));
165 assertThrows(NullPointerException.class, () -> new WildcardFileFilter((List<String>) null));
166 }
167 }