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 |
| package com.jeantessier.dependencyfinder.cli; |
34 |
| |
35 |
| import java.io.*; |
36 |
| import java.util.*; |
37 |
| |
38 |
| import org.jmock.*; |
39 |
| import org.jmock.integration.junit3.*; |
40 |
| |
41 |
| import com.jeantessier.classreader.*; |
42 |
| |
43 |
| public class TestClassMatcher extends MockObjectTestCase { |
44 |
| public static final String TEST_CLASS = "test"; |
45 |
| public static final File TEST_FILE = new File(new File("classes"), "test.class"); |
46 |
| public static final File TEST_DIR = new File(new File("tests"), "JarJarDiff"); |
47 |
| |
48 |
1
| public void testReadsGroupNameFromEndClassfileEvent() {
|
49 |
1
| ClassMatcher matcher = new ClassMatcher(Collections.singletonList("//"), Collections.<String>emptyList());
|
50 |
| |
51 |
1
| String groupName1 = "groupName1";
|
52 |
1
| String filename1 = "filename1";
|
53 |
1
| String groupName2 = "groupName2";
|
54 |
1
| String filename2 = "filename2";
|
55 |
| |
56 |
1
| final Classfile mockClassfile = mock(Classfile.class);
|
57 |
| |
58 |
1
| checking(new Expectations() {{
|
59 |
1
| one (mockClassfile).getClassName();
|
60 |
| }}); |
61 |
| |
62 |
1
| matcher.beginSession(new LoadEvent(this, null, null, null));
|
63 |
1
| matcher.beginGroup(new LoadEvent(this, groupName1, 1));
|
64 |
1
| matcher.beginFile(new LoadEvent(this, groupName1, filename1, null));
|
65 |
1
| matcher.beginClassfile(new LoadEvent(this, groupName1, filename1, null));
|
66 |
1
| matcher.endClassfile(new LoadEvent(this, groupName2, filename2, mockClassfile));
|
67 |
1
| matcher.endFile(new LoadEvent(this, groupName1, filename1, null));
|
68 |
1
| matcher.endGroup(new LoadEvent(this, groupName1, null, null));
|
69 |
1
| matcher.endSession(new LoadEvent(this, null, null, null));
|
70 |
| |
71 |
1
| assertEquals("Number of results", 1, matcher.getResults().size());
|
72 |
1
| for (List<String> results : matcher.getResults().values()) {
|
73 |
1
| assertEquals("number results", 1, results.size());
|
74 |
1
| assertEquals("value", groupName2, results.get(0));
|
75 |
| } |
76 |
| } |
77 |
| |
78 |
1
| public void testMatchNone() {
|
79 |
1
| ClassMatcher matcher = new ClassMatcher(Collections.<String>emptyList(), Collections.<String>emptyList());
|
80 |
| |
81 |
1
| ClassfileLoader loader = new TransientClassfileLoader();
|
82 |
1
| loader.addLoadListener(matcher);
|
83 |
1
| loader.load(Collections.singleton(TEST_FILE.getPath()));
|
84 |
| |
85 |
1
| assertEquals("Number of results", 0, matcher.getResults().size());
|
86 |
| } |
87 |
| |
88 |
1
| public void testMatchClassfile() {
|
89 |
1
| ClassMatcher matcher = new ClassMatcher(Collections.singletonList("//"), Collections.<String>emptyList());
|
90 |
| |
91 |
1
| ClassfileLoader loader = new TransientClassfileLoader();
|
92 |
1
| loader.addLoadListener(matcher);
|
93 |
1
| loader.load(Collections.singleton(TEST_FILE.getPath()));
|
94 |
| |
95 |
1
| assertEquals("Number of results", 1, matcher.getResults().size());
|
96 |
1
| assertEquals("key", TEST_CLASS, matcher.getResults().keySet().iterator().next());
|
97 |
1
| for (List<String> results : matcher.getResults().values()) {
|
98 |
1
| assertEquals("number results", 1, results.size());
|
99 |
1
| assertEquals("value", TEST_FILE.getPath(), results.get(0));
|
100 |
| } |
101 |
| } |
102 |
| |
103 |
1
| public void testOneLevelJar() {
|
104 |
1
| File file = new File(TEST_DIR, "onelevel.jar");
|
105 |
1
| assertTrue(file + " missing", file.exists());
|
106 |
| |
107 |
1
| ClassMatcher matcher = new ClassMatcher(Collections.singletonList("//"), Collections.<String>emptyList());
|
108 |
| |
109 |
1
| ClassfileLoader loader = new TransientClassfileLoader();
|
110 |
1
| loader.addLoadListener(matcher);
|
111 |
1
| loader.load(Collections.singleton(file.getPath()));
|
112 |
| |
113 |
1
| assertEquals("Number of results", 14, matcher.getResults().size());
|
114 |
1
| for (List<String> results : matcher.getResults().values()) {
|
115 |
14
| assertEquals("number results", 1, results.size());
|
116 |
14
| assertEquals("value", file.getPath(), results.get(0));
|
117 |
| } |
118 |
| } |
119 |
| |
120 |
1
| public void testTwoLevelJar() {
|
121 |
1
| File file = new File(TEST_DIR, "twolevel.jar");
|
122 |
1
| assertTrue(file + " missing", file.exists());
|
123 |
| |
124 |
1
| ClassMatcher matcher = new ClassMatcher(Collections.singletonList("//"), Collections.<String>emptyList());
|
125 |
| |
126 |
1
| ClassfileLoader loader = new TransientClassfileLoader();
|
127 |
1
| loader.addLoadListener(matcher);
|
128 |
1
| loader.load(Collections.singleton(file.getPath()));
|
129 |
| |
130 |
1
| assertEquals("Number of results", 14, matcher.getResults().size());
|
131 |
1
| for (List<String> results : matcher.getResults().values()) {
|
132 |
14
| assertEquals("number results", 1, results.size());
|
133 |
14
| assertEquals("value", "onelevel.zip", results.get(0));
|
134 |
| } |
135 |
| } |
136 |
| |
137 |
1
| public void testMatchDirectory() {
|
138 |
1
| File dir = new File(TEST_DIR, "new");
|
139 |
1
| assertTrue(dir + " missing", dir.exists());
|
140 |
| |
141 |
1
| ClassMatcher matcher = new ClassMatcher(Collections.singletonList("//"), Collections.<String>emptyList());
|
142 |
| |
143 |
1
| ClassfileLoader loader = new TransientClassfileLoader();
|
144 |
1
| loader.addLoadListener(matcher);
|
145 |
1
| loader.load(Collections.singleton(dir.getPath()));
|
146 |
| |
147 |
1
| assertEquals("Number of results", 14, matcher.getResults().size());
|
148 |
1
| for (List<String> results : matcher.getResults().values()) {
|
149 |
14
| assertEquals("number results", 1, results.size());
|
150 |
14
| assertEquals("value", dir.getPath(), results.get(0));
|
151 |
| } |
152 |
| } |
153 |
| |
154 |
1
| public void testIncludes() {
|
155 |
1
| File dir = new File(TEST_DIR, "new");
|
156 |
1
| assertTrue(dir + " missing", dir.exists());
|
157 |
| |
158 |
1
| ClassMatcher matcher = new ClassMatcher(Collections.singletonList("/modified/i"), Collections.<String>emptyList());
|
159 |
| |
160 |
1
| ClassfileLoader loader = new TransientClassfileLoader();
|
161 |
1
| loader.addLoadListener(matcher);
|
162 |
1
| loader.load(Collections.singleton(dir.getPath()));
|
163 |
| |
164 |
1
| assertEquals("Number of results", 13, matcher.getResults().size());
|
165 |
1
| for (List<String> results : matcher.getResults().values()) {
|
166 |
13
| assertEquals("number results", 1, results.size());
|
167 |
13
| assertEquals("value", dir.getPath(), results.get(0));
|
168 |
| } |
169 |
| } |
170 |
| |
171 |
1
| public void testExcludes() {
|
172 |
1
| File dir = new File(TEST_DIR, "new");
|
173 |
1
| assertTrue(dir + " missing", dir.exists());
|
174 |
| |
175 |
1
| ClassMatcher matcher = new ClassMatcher(Collections.singletonList("//"), Collections.singletonList("/modified/i"));
|
176 |
| |
177 |
1
| ClassfileLoader loader = new TransientClassfileLoader();
|
178 |
1
| loader.addLoadListener(matcher);
|
179 |
1
| loader.load(Collections.singleton(dir.getPath()));
|
180 |
| |
181 |
1
| assertEquals("Number of results", 1, matcher.getResults().size());
|
182 |
1
| for (List<String> results : matcher.getResults().values()) {
|
183 |
1
| assertEquals("number results", 1, results.size());
|
184 |
1
| assertEquals("value", dir.getPath(), results.get(0));
|
185 |
| } |
186 |
| } |
187 |
| |
188 |
1
| public void testMultiples() {
|
189 |
1
| File file1 = new File(TEST_DIR, "onelevel.zip");
|
190 |
1
| File file2 = new File(TEST_DIR, "onelevel.jar");
|
191 |
1
| assertTrue(file1 + " missing", file1.exists());
|
192 |
1
| assertTrue(file2 + " missing", file2.exists());
|
193 |
| |
194 |
1
| Collection<String> filenames = new ArrayList<String>();
|
195 |
1
| filenames.add(file1.getPath());
|
196 |
1
| filenames.add(file2.getPath());
|
197 |
| |
198 |
1
| ClassMatcher matcher = new ClassMatcher(Collections.singletonList("//"), Collections.<String>emptyList());
|
199 |
| |
200 |
1
| ClassfileLoader loader = new TransientClassfileLoader();
|
201 |
1
| loader.addLoadListener(matcher);
|
202 |
1
| loader.load(filenames);
|
203 |
| |
204 |
1
| assertEquals("Number of results", 14, matcher.getResults().size());
|
205 |
1
| for (List<String> results : matcher.getResults().values()) {
|
206 |
14
| assertEquals("number results", 2, results.size());
|
207 |
14
| assertEquals("value", file1.getPath(), results.get(0));
|
208 |
14
| assertEquals("value", file2.getPath(), results.get(1));
|
209 |
| } |
210 |
| } |
211 |
| } |