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  }