forked from docker-java/docker-java
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGoLangFileMatchTest.java
More file actions
124 lines (111 loc) · 6.22 KB
/
Copy pathGoLangFileMatchTest.java
File metadata and controls
124 lines (111 loc) · 6.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
/**
* Copyright (C) 2014 SignalFuse, Inc.
*/
package com.github.dockerjava.core;
import java.io.IOException;
import com.github.dockerjava.core.exception.GoLangFileMatchException;
import junit.framework.Assert;
import org.apache.commons.io.FilenameUtils;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class GoLangFileMatchTest {
@Test(dataProvider = "getTestData")
public void testMatch(MatchTestCase testCase) throws IOException {
String pattern = testCase.pattern;
String s = testCase.s;
if (GoLangFileMatch.IS_WINDOWS) {
if (pattern.indexOf('\\') >= 0) {
// no escape allowed on windows.
return;
}
pattern = FilenameUtils.normalize(pattern);
s = FilenameUtils.normalize(s);
}
try {
Boolean matched = GoLangFileMatch.match(pattern, s);
if (testCase.expectException) {
Assert.fail("Expected GoFileMatchException");
}
Assert.assertEquals(testCase.matches, matched);
} catch (GoLangFileMatchException e) {
if (!testCase.expectException) {
throw e;
}
}
}
@DataProvider
public Object[][] getTestData() {
return new Object[][] {new Object[] {new MatchTestCase("abc", "abc", true, false)},
new Object[] {new MatchTestCase("*", "abc", true, false)},
new Object[] {new MatchTestCase("*c", "abc", true, false)},
new Object[] {new MatchTestCase("a*", "a", true, false)},
new Object[] {new MatchTestCase("a*", "abc", true, false)},
new Object[] {new MatchTestCase("a*", "ab/c", false, false)},
new Object[] {new MatchTestCase("a*/b", "abc/b", true, false)},
new Object[] {new MatchTestCase("a*/b", "a/c/b", false, false)},
new Object[] {new MatchTestCase("a*b*c*d*e*/f", "axbxcxdxe/f", true, false)},
new Object[] {new MatchTestCase("a*b*c*d*e*/f", "axbxcxdxexxx/f", true, false)},
new Object[] {new MatchTestCase("a*b*c*d*e*/f", "axbxcxdxe/xxx/f", false, false)},
new Object[] {new MatchTestCase("a*b*c*d*e*/f", "axbxcxdxexxx/fff", false, false)},
new Object[] {new MatchTestCase("a*b?c*x", "abxbbxdbxebxczzx", true, false)},
new Object[] {new MatchTestCase("a*b?c*x", "abxbbxdbxebxczzy", false, false)},
new Object[] {new MatchTestCase("ab[c]", "abc", true, false)},
new Object[] {new MatchTestCase("ab[b-d]", "abc", true, false)},
new Object[] {new MatchTestCase("ab[e-g]", "abc", false, false)},
new Object[] {new MatchTestCase("ab[^c]", "abc", false, false)},
new Object[] {new MatchTestCase("ab[^b-d]", "abc", false, false)},
new Object[] {new MatchTestCase("ab[^e-g]", "abc", true, false)},
new Object[] {new MatchTestCase("a\\*b", "a*b", true, false)},
new Object[] {new MatchTestCase("a\\*b", "ab", false, false)},
new Object[] {new MatchTestCase("a?b", "a☺b", true, false)},
new Object[] {new MatchTestCase("a[^a]b", "a☺b", true, false)},
new Object[] {new MatchTestCase("a???b", "a☺b", false, false)},
new Object[] {new MatchTestCase("a[^a][^a][^a]b", "a☺b", false, false)},
new Object[] {new MatchTestCase("[a-ζ]*", "α", true, false)},
new Object[] {new MatchTestCase("*[a-ζ]", "A", false, false)},
new Object[] {new MatchTestCase("a?b", "a/b", false, false)},
new Object[] {new MatchTestCase("a*b", "a/b", false, false)},
new Object[] {new MatchTestCase("[\\]a]", "]", true, false)},
new Object[] {new MatchTestCase("[\\-]", "-", true, false)},
new Object[] {new MatchTestCase("[x\\-]", "x", true, false)},
new Object[] {new MatchTestCase("[x\\-]", "-", true, false)},
new Object[] {new MatchTestCase("[x\\-]", "z", false, false)},
new Object[] {new MatchTestCase("[\\-x]", "x", true, false)},
new Object[] {new MatchTestCase("[\\-x]", "-", true, false)},
new Object[] {new MatchTestCase("[\\-x]", "a", false, false)},
new Object[] {new MatchTestCase("[]a]", "]", false, true)},
new Object[] {new MatchTestCase("[-]", "-", false, true)},
new Object[] {new MatchTestCase("[x-]", "x", false, true)},
new Object[] {new MatchTestCase("[x-]", "-", false, true)},
new Object[] {new MatchTestCase("[x-]", "z", false, true)},
new Object[] {new MatchTestCase("[-x]", "x", false, true)},
new Object[] {new MatchTestCase("[-x]", "-", false, true)},
new Object[] {new MatchTestCase("[-x]", "a", false, true)},
new Object[] {new MatchTestCase("\\", "a", false, true)},
new Object[] {new MatchTestCase("[a-b-c]", "a", false, true)},
new Object[] {new MatchTestCase("[", "a", false, true)},
new Object[] {new MatchTestCase("[^", "a", false, true)},
new Object[] {new MatchTestCase("[^bc", "a", false, true)},
new Object[] {new MatchTestCase("a[", "a", false, false)},
new Object[] {new MatchTestCase("a[", "ab", false, true)},
new Object[] {new MatchTestCase("*x", "xxx", true, false)}};
}
private final class MatchTestCase {
private final String pattern;
private final String s;
private final Boolean matches;
private final Boolean expectException;
public MatchTestCase(String pattern, String s, Boolean matches, Boolean expectException) {
super();
this.pattern = pattern;
this.s = s;
this.matches = matches;
this.expectException = expectException;
}
@Override
public String toString() {
return "MatchTestCase [pattern=" + pattern + ", s=" + s + ", matches=" + matches + ", expectException="
+ expectException + "]";
}
}
}