1 /***
2 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
3 */
4 package test.net.sourceforge.pmd.cpd;
5
6 import junit.framework.TestCase;
7 import net.sourceforge.pmd.cpd.FileReporter;
8 import net.sourceforge.pmd.cpd.ReportException;
9
10 import java.io.BufferedReader;
11 import java.io.File;
12 import java.io.FileReader;
13 import java.io.IOException;
14
15 /***
16 * @author Philippe T'Seyen
17 */
18 public class FileReporterTest extends TestCase {
19 public void testCreation() {
20 try {
21 new FileReporter(null);
22 fail("expected NullPointerException");
23 } catch (NullPointerException npe) {
24 }
25 }
26
27 public void testEmptyReport() throws ReportException {
28 File reportFile = new File("report.tmp");
29 FileReporter fileReporter = new FileReporter(reportFile);
30 fileReporter.report("");
31 assertTrue(reportFile.exists());
32 assertEquals(0, reportFile.length());
33 assertTrue(reportFile.delete());
34 }
35
36 public void testReport() throws ReportException, IOException {
37 String testString = "first line\nsecond line";
38 File reportFile = new File("report.tmp");
39 FileReporter fileReporter = new FileReporter(reportFile);
40
41 fileReporter.report(testString);
42 assertEquals(testString, readFile(reportFile));
43 assertTrue(reportFile.delete());
44 }
45
46 public void testInvalidFile() {
47 File reportFile = new File("/invalid_folder/report.tmp");
48 FileReporter fileReporter = new FileReporter(reportFile);
49 try {
50 fileReporter.report("");
51 fail("expected ReportException");
52 } catch (ReportException re) {
53 }
54 }
55
56 private String readFile(File file) throws IOException {
57 BufferedReader reader = null;
58 try {
59 reader = new BufferedReader(new FileReader(file));
60 StringBuffer buffer = new StringBuffer();
61 String line = reader.readLine();
62 while (line != null) {
63 buffer.append(line);
64 line = reader.readLine();
65 if (line != null) {
66 buffer.append('\n');
67 }
68 }
69 return buffer.toString();
70 } finally {
71 if (reader != null) reader.close();
72 }
73 }
74 }