1 package org.codehaus.dataforge.engine.transformers;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 import java.math.BigDecimal;
20 import java.sql.ResultSet;
21
22 import junit.framework.TestCase;
23
24 import org.codehaus.dataforge.engine.DataForge;
25 import org.codehaus.dataforge.engine.QuickDB;
26 import org.codehaus.dataforge.engine.configuration.XMLConfiguration;
27 import org.codehaus.dataforge.engine.context.DataForgeContext;
28
29 /***
30 * @author Ben Walding
31 * @version $Id: FormatTransformerTest.java,v 1.4 2004/03/11 00:20:30 bwalding Exp $
32 */
33 public class FormatTransformerTest extends TestCase {
34 QuickDB qdb;
35 /***
36 * Constructor for FormatTransformerTest.
37 * @param arg0
38 */
39 public FormatTransformerTest(String arg0) {
40 super(arg0);
41 }
42
43 public void setUp() throws Exception {
44 qdb = new QuickDB();
45 qdb.configureQuickDB();
46 qdb.setUp();
47 }
48
49 public void tearDown() throws Exception {
50 qdb.tearDown();
51 }
52
53 public void testSimple() throws Exception {
54 DataForge df = XMLConfiguration.quickConfig(getClass(), "FormatTransformerTest.df");
55 Transformer t = df.resolveTransformer("format1");
56 ResultSet rs = t.open();
57 verifyPerson(rs);
58 }
59
60 public void testSimple2() throws Exception {
61 DataForge df = XMLConfiguration.quickConfig(getClass(), "FormatTransformerTest.df");
62 Transformer t = df.resolveTransformer("format2");
63 ResultSet rs = t.open();
64 verifyPerson2(rs);
65 }
66
67 public void testSimple3() throws Exception {
68 DataForge df = XMLConfiguration.quickConfig(getClass(), "FormatTransformerTest.df");
69 Transformer t = df.resolveTransformer("format3");
70 ResultSet rs = t.open();
71 verifyPerson3(rs);
72 }
73
74 /***
75 * This one tests that properties are being correctly passed through the chain
76 * @throws Exception
77 */
78 public void testSimple4() throws Exception {
79 DataForge df = XMLConfiguration.quickConfig(getClass(), "FormatTransformerTest.df");
80 Transformer t = df.resolveTransformer("format4");
81 DataForgeContext ctx = (DataForgeContext) t.getConfiguredContext().clone();
82 ctx.setProperty("rfPerson", new Integer(3));
83 ResultSet rs = t.open(ctx);
84 verifyPerson4(rs);
85 }
86
87 public static void verifyPerson(ResultSet rs) throws Exception {
88
89 TransformerResultSetMetaData rsmd = (TransformerResultSetMetaData) rs.getMetaData();
90
91 assertEquals("rsmd.getColumnCount()", 4, rsmd.getColumnCount());
92 assertEquals("rsmd.getColumnName(1)", "ID", rsmd.getColumnName(1));
93 assertEquals("rsmd.getColumnName(2)", "First Name", rsmd.getColumnName(2));
94 assertEquals("rsmd.getColumnName(3)", "Last Name", rsmd.getColumnName(3));
95 assertEquals("rsmd.getColumnName(3)", "Full Name", rsmd.getColumnName(4));
96
97 assertTrue(rs.next());
98 assertEquals("r[1][1]", new Integer(1), rs.getObject(1));
99 assertEquals("r[1][2]", "Bob", rs.getObject(2));
100 assertEquals("r[1][3]", "DAWKINS", rs.getObject(3));
101 assertEquals("r[1][4]", "Bob Dawkins", rs.getObject(4));
102
103 assertTrue(rs.next());
104 assertEquals("r[2][1]", new Integer(2), rs.getObject(1));
105 assertEquals("r[2][2]", "Gerald", rs.getObject(2));
106 assertEquals("r[2][3]", "ASTINHEIMER", rs.getObject(3));
107 assertEquals("r[2][3]", "Gerald Astinheimer", rs.getObject(4));
108
109 assertTrue(rs.next());
110 assertEquals("r[3][1]", new Integer(3), rs.getObject(1));
111 assertEquals("r[3][2]", "Robby", rs.getObject(2));
112 assertEquals("r[3][3]", "SCHNUTZ", rs.getObject(3));
113 assertEquals("r[3][4]", "Robby Schnutz", rs.getObject(4));
114
115 assertTrue(rs.next());
116 assertEquals("r[4][1]", new Integer(4), rs.getObject(1));
117 assertEquals("r[4][2]", "Leopold", rs.getObject(2));
118 assertEquals("r[4][3]", "HUMPHREYS", rs.getObject(3));
119 assertEquals("r[4][4]", "Leopold Humphreys", rs.getObject(4));
120
121 assertFalse("Check only 4 rows", rs.next());
122 }
123
124 public static void verifyPerson2(ResultSet rs) throws Exception {
125
126 TransformerResultSetMetaData rsmd = (TransformerResultSetMetaData) rs.getMetaData();
127
128 assertEquals("rsmd.getColumnCount()", 4, rsmd.getColumnCount());
129 assertEquals("rsmd.getColumnName(1)", "RFPERSON", rsmd.getColumnName(1));
130 assertEquals("rsmd.getColumnName(2)", "TXFIRSTNAME", rsmd.getColumnName(2));
131 assertEquals("rsmd.getColumnName(3)", "TXLASTNAME", rsmd.getColumnName(3));
132 assertEquals("rsmd.getColumnName(3)", "Full Name", rsmd.getColumnName(4));
133
134 assertTrue(rs.next());
135 assertEquals("r[1][1]", new Integer(1), rs.getObject(1));
136 assertEquals("r[1][2]", "Bob", rs.getObject(2));
137 assertEquals("r[1][3]", "Dawkins", rs.getObject(3));
138 assertEquals("r[1][4]", "Bob Dawkins", rs.getObject(4));
139
140 assertTrue(rs.next());
141 assertEquals("r[2][1]", new Integer(2), rs.getObject(1));
142 assertEquals("r[2][2]", "Gerald", rs.getObject(2));
143 assertEquals("r[2][3]", "Astinheimer", rs.getObject(3));
144 assertEquals("r[2][3]", "Gerald Astinheimer", rs.getObject(4));
145
146 assertTrue(rs.next());
147 assertEquals("r[3][1]", new Integer(3), rs.getObject(1));
148 assertEquals("r[3][2]", "Robby", rs.getObject(2));
149 assertEquals("r[3][3]", "Schnutz", rs.getObject(3));
150 assertEquals("r[3][4]", "Robby Schnutz", rs.getObject(4));
151
152 assertTrue(rs.next());
153 assertEquals("r[4][1]", new Integer(4), rs.getObject(1));
154 assertEquals("r[4][2]", "Leopold", rs.getObject(2));
155 assertEquals("r[4][3]", "Humphreys", rs.getObject(3));
156 assertEquals("r[4][4]", "Leopold Humphreys", rs.getObject(4));
157
158 assertFalse("Check only 4 rows", rs.next());
159 }
160
161 public static void verifyPerson3(ResultSet rs) throws Exception {
162
163 TransformerResultSetMetaData rsmd = (TransformerResultSetMetaData) rs.getMetaData();
164
165 assertEquals("rsmd.getColumnCount()", 4, rsmd.getColumnCount());
166 assertEquals("rsmd.getColumnName(1)", "rfPerson_alias", rsmd.getColumnName(1));
167 assertEquals("rsmd.getColumnName(2)", "TXFIRSTNAME", rsmd.getColumnName(2));
168 assertEquals("rsmd.getColumnName(3)", "TXLASTNAME", rsmd.getColumnName(3));
169 assertEquals("rsmd.getColumnName(3)", "PCPROFITSHARE", rsmd.getColumnName(4));
170
171 assertTrue(rs.next());
172 assertEquals("r[1][1]", new Integer(1), rs.getObject(1));
173 assertEquals("r[1][2]", "Bob", rs.getObject(2));
174 assertEquals("r[1][3]", "Dawkins", rs.getObject(3));
175 assertEquals("r[1][4]", new BigDecimal("33.3"), rs.getObject(4));
176
177 assertTrue(rs.next());
178 assertEquals("r[2][1]", new Integer(2), rs.getObject(1));
179 assertEquals("r[2][2]", "Gerald", rs.getObject(2));
180 assertEquals("r[2][3]", "Astinheimer", rs.getObject(3));
181 assertEquals("r[2][4]", new BigDecimal("20.5"), rs.getObject(4));
182
183 assertTrue(rs.next());
184 assertEquals("r[3][1]", new Integer(3), rs.getObject(1));
185 assertEquals("r[3][2]", "Robby", rs.getObject(2));
186 assertEquals("r[3][3]", "Schnutz", rs.getObject(3));
187 assertEquals("r[3][4]", new BigDecimal("15.0"), rs.getObject(4));
188
189 assertTrue(rs.next());
190 assertEquals("r[4][1]", new Integer(4), rs.getObject(1));
191 assertEquals("r[4][2]", "Leopold", rs.getObject(2));
192 assertEquals("r[4][3]", "Humphreys", rs.getObject(3));
193 assertEquals("r[4][4]", new BigDecimal("40.0"), rs.getObject(4));
194
195 assertFalse("Check only 4 rows", rs.next());
196 }
197
198 public static void verifyPerson4(ResultSet rs) throws Exception {
199
200 TransformerResultSetMetaData rsmd = (TransformerResultSetMetaData) rs.getMetaData();
201
202 assertEquals("rsmd.getColumnCount()", 4, rsmd.getColumnCount());
203 assertEquals("rsmd.getColumnName(1)", "RFPERSON", rsmd.getColumnName(1));
204 assertEquals("rsmd.getColumnName(2)", "TXFIRSTNAME", rsmd.getColumnName(2));
205 assertEquals("rsmd.getColumnName(3)", "TXLASTNAME", rsmd.getColumnName(3));
206 assertEquals("rsmd.getColumnName(3)", "Full Name", rsmd.getColumnName(4));
207
208 assertTrue("stepping to row 1", rs.next());
209 assertEquals("r[1][1]", new Integer(3), rs.getObject(1));
210 assertEquals("r[1][2]", "Robby", rs.getObject(2));
211 assertEquals("r[1][3]", "Schnutz", rs.getObject(3));
212 assertEquals("r[1][4]", "Robby Schnutz", rs.getObject(4));
213
214 assertFalse("Check only 1 row", rs.next());
215 }
216 }