01: package jimm.datavision.test;
02:
03: import jimm.datavision.*;
04: import jimm.datavision.layout.CharSepLE;
05: import jimm.datavision.source.charsep.CharSepSource;
06: import java.io.*;
07: import junit.framework.TestCase;
08: import junit.framework.TestSuite;
09: import junit.framework.Test;
10: import org.xml.sax.SAXException;
11:
12: /**
13: * Tests formula evals when formulas are hidden or appear multiple
14: * times.
15: * <p>
16: * These tests are tightly coupled with the contents of the
17: * <code>group_formulas_*</code> files.
18: *
19: * @author Jim Menard, <a href="mailto:jimm@io.com">jimm@io.com</a>
20: */
21: public class GroupFormulaTest extends TestCase {
22:
23: protected static final File OUT_FILE = new File(System
24: .getProperty("java.io.tmpdir"),
25: "datavision_grp_form_test_out.txt");
26: protected static final File GROUP_EVAL_REPORT = new File(AllTests
27: .testDataFile("group_formulas.xml"));
28: protected static final String GROUP_EVAL_DATA_FILE = AllTests
29: .testDataFile("group_formulas_data.csv");
30: protected static final String GROUP_EVAL_EXPECTED_FILE = AllTests
31: .testDataFile("group_formulas_expected.csv");
32:
33: protected Report report;
34: protected CharSepSource dataSource;
35:
36: public static Test suite() {
37: return new TestSuite(GroupFormulaTest.class);
38: }
39:
40: public GroupFormulaTest(String name) {
41: super (name);
42: }
43:
44: public void setUp() throws Exception {
45: report = new Report();
46:
47: OUT_FILE.deleteOnExit();
48: PrintWriter out = new PrintWriter(new FileWriter(OUT_FILE));
49: report.setLayoutEngine(new CharSepLE(out, ','));
50:
51: report.read(GROUP_EVAL_REPORT); // Must come after setting password
52:
53: dataSource = (CharSepSource) report.getDataSource();
54: dataSource.setSepChar(',');
55: dataSource.setInput(GROUP_EVAL_DATA_FILE);
56: }
57:
58: public void tearDown() {
59: if (OUT_FILE.exists())
60: OUT_FILE.delete();
61: }
62:
63: public void testGroupHeaderFormula() throws IOException,
64: FileNotFoundException, SAXException {
65: // Run report in this thread, not a separate one. Running the
66: // report closes the output stream.
67: report.runReport();
68:
69: // Open the output and the expected output and compare them.
70: BufferedReader out = new BufferedReader(
71: new FileReader(OUT_FILE));
72: BufferedReader expected = new BufferedReader(new FileReader(
73: GROUP_EVAL_EXPECTED_FILE));
74:
75: String outLine;
76: while ((outLine = out.readLine()) != null) {
77: String expectedLine = expected.readLine();
78: if (expectedLine == null)
79: fail("Too much data in output");
80: assertEquals(expectedLine, outLine);
81: }
82:
83: // Make sure we are at the end of the expected file
84: assertNull(expected.readLine());
85:
86: expected.close();
87: out.close();
88: }
89:
90: public static void main(String[] args) {
91: junit.textui.TestRunner.run(suite());
92: System.exit(0);
93: }
94:
95: }
|