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 package net.objectlab.qalab.parser;
40
41 import junit.framework.Test;
42 import junit.framework.TestSuite;
43
44 import net.objectlab.qalab.exporter.ConsoleExporter;
45 import net.objectlab.qalab.exporter.QALabXMLExporter;
46 import net.objectlab.qalab.util.SilentLogger;
47
48 import org.xml.sax.InputSource;
49
50 import java.io.File;
51 import java.io.IOException;
52
53 import java.util.Properties;
54
55 public class PMDCPDStatMergeTest extends BaseMerge {
56 /**
57 * Create the test case
58 *
59 * @param testName name of the test case
60 */
61 public PMDCPDStatMergeTest(String testName) {
62 super(testName);
63 }
64
65 /**
66 * @return the suite of tests being tested
67 */
68 public static Test suite() {
69 return new TestSuite(PMDCPDStatMergeTest.class);
70 }
71
72 /**
73 * test simple merge from empty
74 */
75 public void testMergeWithConsole() {
76 try {
77 StatMerger merger = (StatMerger) Class.forName(
78 "net.objectlab.qalab.parser.PMDCPDStatMerge").newInstance();
79
80 merger.setQuiet(false);
81 merger.setSrcDir("src/main/java");
82 merger.setTaskLogger(new SilentLogger());
83 merger.mergeStats(new InputSource(
84 PMDCPDStatMergeTest.class.getResourceAsStream(
85 "good-cpd.xml")), new ConsoleExporter());
86 }
87 catch (IllegalAccessException e) {
88 fail(e.toString());
89 }
90 catch (ClassNotFoundException e) {
91 fail(e.toString());
92 }
93 catch (InstantiationException e) {
94 fail(e.toString());
95 }
96 }
97
98 /**
99 * test simple merge from empty
100 */
101 public void testMerge() {
102 try {
103 Properties properties = new Properties();
104
105 properties.setProperty("qalab.merge.output.resourcename",
106 "empty-stats.xml");
107 properties.setProperty("qalab.merge.output.classname",
108 "net.objectlab.qalab.parser.PMDCPDStatMergeTest");
109
110 QALabXMLExporter exporter = new QALabXMLExporter();
111
112 exporter.setQuiet(true);
113 exporter.setTaskLogger(new SilentLogger());
114
115 StatMerger merger = (StatMerger) Class.forName(
116 "net.objectlab.qalab.parser.PMDCPDStatMerge").newInstance();
117
118 merger.setQuiet(false);
119 merger.setSrcDir("src/main/java");
120 merger.setTaskLogger(new SilentLogger());
121
122 properties.setProperty("qalab.merge.output.timestamp",
123 merger.getMergerTimeStamp());
124 properties.setProperty("qalab.merge.type",
125 merger.getType());
126 exporter.configure(properties);
127
128 merger.mergeStats(new InputSource(
129 PMDCPDStatMergeTest.class.getResourceAsStream(
130 "good-cpd.xml")), exporter);
131
132 checkSummary(exporter.getDocument(), 1, 135, 4);
133 checkFileCount(exporter.getDocument(), 0, 0);
134 }
135 catch (IllegalAccessException e) {
136 fail(e.toString());
137 }
138 catch (ClassNotFoundException e) {
139 fail(e.toString());
140 }
141 catch (InstantiationException e) {
142 fail(e.toString());
143 }
144 }
145
146 /**
147 * test simple merge from empty
148 */
149 public void testMergeNonExistingQALab() {
150 try {
151 final String fileName = "new-stats-pmdcpd.xml";
152 File file = new File(fileName);
153
154 if (file.exists()) {
155 assertTrue("Delete File: " + file.getAbsolutePath(),
156 file.delete());
157 }
158
159 Properties properties = new Properties();
160
161 properties.setProperty("qalab.merge.output.file", fileName);
162
163 QALabXMLExporter exporter = new QALabXMLExporter();
164
165 exporter.setQuiet(true);
166 exporter.setTaskLogger(new SilentLogger());
167
168 StatMerger merger = (StatMerger) Class.forName(
169 "net.objectlab.qalab.parser.PMDCPDStatMerge").newInstance();
170
171 merger.setQuiet(false);
172 merger.setSrcDir("src/main/java");
173 merger.setTaskLogger(new SilentLogger());
174
175 properties.setProperty("qalab.merge.output.timestamp",
176 merger.getMergerTimeStamp());
177 properties.setProperty("qalab.merge.type",
178 merger.getType());
179 exporter.configure(properties);
180
181 merger.mergeStats(new InputSource(
182 PMDCPDStatMergeTest.class.getResourceAsStream(
183 "good-cpd.xml")), exporter);
184
185 System.out.println(streamToString(exporter.getDocument()));
186 checkDTDPresent(exporter.getDocument());
187 checkSummary(exporter.getDocument(), 1, 135, 4);
188 checkFileCount(exporter.getDocument(), 0, 0);
189
190 exporter.save();
191
192 if (file.exists()) {
193 assertTrue("Delete File at the end: " + file.getAbsolutePath(),
194 file.delete());
195 }
196 }
197 catch (IllegalAccessException e) {
198 fail(e.toString());
199 }
200 catch (ClassNotFoundException e) {
201 fail(e.toString());
202 }
203 catch (InstantiationException e) {
204 fail(e.toString());
205 }
206 catch (IOException e) {
207 fail(e.toString());
208 }
209 }
210
211 /**
212 * test simple merge with empty CPD and empty qalab.
213 */
214 public void testMergeEmptySimianAndQALab() {
215 try {
216 Properties properties = new Properties();
217
218 properties.setProperty("qalab.merge.output.resourcename",
219 "empty-stats.xml");
220 properties.setProperty("qalab.merge.output.classname",
221 "net.objectlab.qalab.parser.PMDCPDStatMergeTest");
222
223 QALabXMLExporter exporter = new QALabXMLExporter();
224
225 exporter.setQuiet(true);
226 exporter.setTaskLogger(new SilentLogger());
227
228 StatMerger merger = (StatMerger) Class.forName(
229 "net.objectlab.qalab.parser.PMDCPDStatMerge").newInstance();
230
231 merger.setQuiet(false);
232 merger.setSrcDir("src/main/java");
233 merger.setTaskLogger(new SilentLogger());
234
235 properties.setProperty("qalab.merge.output.timestamp",
236 merger.getMergerTimeStamp());
237 properties.setProperty("qalab.merge.type",
238 merger.getType());
239 exporter.configure(properties);
240
241 merger.mergeStats(new InputSource(
242 PMDCPDStatMergeTest.class.getResourceAsStream(
243 "cpd-noviolations.xml")), exporter);
244
245 checkDTDPresent(exporter.getDocument());
246 checkSummary(exporter.getDocument(), 0, 0, 0);
247 checkFileCount(exporter.getDocument(), 0, 0);
248 }
249 catch (IllegalAccessException e) {
250 fail(e.toString());
251 }
252 catch (ClassNotFoundException e) {
253 fail(e.toString());
254 }
255 catch (InstantiationException e) {
256 fail(e.toString());
257 }
258 }
259
260 /**
261 * test simple merge with empty CPD and NON-empty qalab.
262 */
263 public void testMergeEmptySimianAndNonEmptyQALab() {
264 try {
265 Properties properties = new Properties();
266
267 properties.setProperty("qalab.merge.output.resourcename",
268 "one-set-cpd-stats.xml");
269 properties.setProperty("qalab.merge.output.classname",
270 "net.objectlab.qalab.parser.PMDCPDStatMergeTest");
271
272 QALabXMLExporter exporter = new QALabXMLExporter();
273
274 exporter.setQuiet(true);
275 exporter.setTaskLogger(new SilentLogger());
276
277 StatMerger merger = (StatMerger) Class.forName(
278 "net.objectlab.qalab.parser.PMDCPDStatMerge").newInstance();
279
280 merger.setQuiet(false);
281 merger.setSrcDir("src/main/java");
282 merger.setTaskLogger(new SilentLogger());
283
284 properties.setProperty("qalab.merge.output.timestamp",
285 merger.getMergerTimeStamp());
286 properties.setProperty("qalab.merge.type",
287 merger.getType());
288 exporter.configure(properties);
289
290 merger.mergeStats(new InputSource(
291 PMDCPDStatMergeTest.class.getResourceAsStream(
292 "cpd-noviolations.xml")), exporter);
293
294 checkDTDPresent(exporter.getDocument());
295 checkSummary(exporter.getDocument(), 1, new int[] { 421 },
296 new int[] { 3 }, new String[] { "pmd-cpd" });
297 checkFileCount(exporter.getDocument(), 0, 0);
298 }
299 catch (IllegalAccessException e) {
300 fail(e.toString());
301 }
302 catch (ClassNotFoundException e) {
303 fail(e.toString());
304 }
305 catch (InstantiationException e) {
306 fail(e.toString());
307 }
308 }
309
310 /**
311 * test simple merge with 1 set CPD
312 */
313 public void testMergeOneSetSimian() {
314 try {
315 Properties properties = new Properties();
316
317 properties.setProperty("qalab.merge.output.resourcename",
318 "one-set-cpd-stats.xml");
319 properties.setProperty("qalab.merge.output.classname",
320 "net.objectlab.qalab.parser.PMDCPDStatMergeTest");
321
322 QALabXMLExporter exporter = new QALabXMLExporter();
323
324 exporter.setQuiet(true);
325 exporter.setTaskLogger(new SilentLogger());
326
327 StatMerger merger = (StatMerger) Class.forName(
328 "net.objectlab.qalab.parser.PMDCPDStatMerge").newInstance();
329
330 merger.setQuiet(false);
331 merger.setSrcDir("src/main/java");
332 merger.setTaskLogger(new SilentLogger());
333
334 properties.setProperty("qalab.merge.output.timestamp",
335 merger.getMergerTimeStamp());
336 properties.setProperty("qalab.merge.type",
337 merger.getType());
338 exporter.configure(properties);
339
340 merger.mergeStats(new InputSource(
341 PMDCPDStatMergeTest.class.getResourceAsStream(
342 "good-cpd.xml")), exporter);
343
344 System.out.println(streamToString(exporter.getDocument()));
345
346 checkDTDPresent(exporter.getDocument());
347 checkSummary(exporter.getDocument(), 2, new int[] { 421, 135 },
348 new int[] { 3, 4 }, new String[] { "pmd-cpd", "pmd-cpd" });
349 checkFileCount(exporter.getDocument(), 0, 0);
350 }
351 catch (IllegalAccessException e) {
352 fail(e.toString());
353 }
354 catch (ClassNotFoundException e) {
355 fail(e.toString());
356 }
357 catch (InstantiationException e) {
358 fail(e.toString());
359 }
360 catch (IOException e) {
361 fail(e.toString());
362 }
363 }
364 }
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380