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  {
20    public void testCreation() {
21      try {
22        new FileReporter(null);
23        fail("expected NullPointerException");
24      } catch (NullPointerException npe) {
25      }
26    }
27  
28    public void testEmptyReport() throws ReportException {
29      File reportFile = new File("report.tmp");
30      FileReporter fileReporter = new FileReporter(reportFile);
31      fileReporter.report("");
32      assertTrue(reportFile.exists());
33      assertEquals(0, reportFile.length());
34      assertTrue(reportFile.delete());
35    }
36  
37    public void testReport() throws ReportException, IOException {
38      String testString = "first line\nsecond line";
39      File reportFile = new File("report.tmp");
40      FileReporter fileReporter = new FileReporter(reportFile);
41  
42      fileReporter.report(testString);
43      assertEquals(testString, readFile(reportFile));
44      assertTrue(reportFile.delete());
45    }
46  
47    public void testInvalidFile() {
48      File reportFile = new File("/invalid_folder/report.tmp");
49      FileReporter fileReporter = new FileReporter(reportFile);
50      try {
51        fileReporter.report("");
52        fail("expected ReportException");
53      } catch (ReportException re) {
54      }
55    }
56  
57    private String readFile(File file) throws IOException {
58      BufferedReader reader = null;
59      try {
60        reader = new BufferedReader(new FileReader(file));
61        StringBuffer buffer = new StringBuffer();
62        String line = reader.readLine();
63        while (line != null) {
64          buffer.append(line);
65          line = reader.readLine();
66          if (line != null) {
67            buffer.append("\n");
68          }
69        }
70        return buffer.toString();
71      } finally {
72        if (reader != null) reader.close();
73      }
74    }
75  }