1 /*
2 CsvJdbc - a JDBC driver for CSV files
3 Copyright (C) 2001 Jonathan Ackerman
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with this library; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 */
19 package test.org.relique.jdbc.csv;
20
21 import java.sql.*;
22 import java.util.Properties;
23 import junit.framework.*;
24
25 /***This class is used to test the CsvJdbc driver.
26 *
27 * @author Jonathan Ackerman
28 * @author JD Evora
29 * @version $Id: TestCsvDriver.html,v 1.1 2003/05/12 16:19:47 sinisa Exp $
30 */
31 public class TestCsvDriver extends TestCase
32 {
33 public static final String SAMPLE_FILES_LOCATION_PROPERTY="sample.files.location";
34 private String filePath;
35
36 public TestCsvDriver(String name)
37 {
38 super(name);
39 }
40
41 protected void setUp()
42 {
43 filePath=System.getProperty(SAMPLE_FILES_LOCATION_PROPERTY);
44 assertNotNull("Sample files location property not set !", filePath);
45
46 // load CSV driver
47 try
48 {
49 Class.forName("org.relique.jdbc.csv.CsvDriver");
50 }
51 catch (ClassNotFoundException e)
52 {
53 fail("Driver is not in the CLASSPATH -> " + e);
54 }
55
56 }
57
58 public void testWithDefaultValues()
59 {
60 try
61 {
62 Connection conn = DriverManager.getConnection("jdbc:relique:csv:" + filePath );
63
64 Statement stmt = conn.createStatement();
65
66 ResultSet results = stmt.executeQuery("SELECT NAME,ID,EXTRA_FIELD FROM sample");
67
68 results.next();
69 assertTrue("Incorrect ID Value",results.getString("ID").equals("Q123"));
70 assertTrue("Incorrect NAME Value",results.getString("NAME").equals("\"S,\""));
71 assertTrue("Incorrect EXTRA_FIELD Value",results.getString("EXTRA_FIELD").equals("F"));
72
73 results.next();
74 assertTrue("Incorrect ID Value",results.getString("ID").equals("A123"));
75 assertTrue("Incorrect NAME Value",results.getString("NAME").equals("Jonathan Ackerman"));
76 assertTrue("Incorrect EXTRA_FIELD Value",results.getString("EXTRA_FIELD").equals("A"));
77
78 results.next();
79 assertTrue("Incorrect ID Value",results.getString("ID").equals("B234"));
80 assertTrue("Incorrect NAME Value",results.getString("NAME").equals("Grady O'Neil"));
81 assertTrue("Incorrect EXTRA_FIELD Value",results.getString("EXTRA_FIELD").equals("B"));
82
83 results.next();
84 assertTrue("Incorrect ID Value",results.getString("ID").equals("C456"));
85 assertTrue("Incorrect NAME Value",results.getString("NAME").equals("Susan, Peter and Dave"));
86 assertTrue("Incorrect EXTRA_FIELD Value",results.getString("EXTRA_FIELD").equals("C"));
87
88 results.next();
89 assertTrue("Incorrect ID Value",results.getString("ID").equals("D789"));
90 assertTrue("Incorrect NAME Value",results.getString("NAME").equals("Amelia \"meals\" Maurice"));
91 assertTrue("Incorrect EXTRA_FIELD Value",results.getString("EXTRA_FIELD").equals("E"));
92
93 results.next();
94 assertTrue("Incorrect ID Value",results.getString("ID").equals("X234"));
95 assertTrue("Incorrect NAME Value",results.getString("NAME").equals("Peter \"peg leg\", Jimmy & Samantha \"Sam\""));
96 assertTrue("Incorrect EXTRA_FIELD Value",results.getString("EXTRA_FIELD").equals("G"));
97
98 results.close();
99 stmt.close();
100 conn.close();
101 }
102 catch(Exception e)
103 {
104 fail("Unexpected Exception: " + e);
105 }
106 }
107
108 public void testWithProperties()
109 {
110 try
111 {
112 Properties props = new Properties();
113 props.put("fileExtension",".txt");
114 props.put("separator",";");
115
116 Connection conn = DriverManager.getConnection("jdbc:relique:csv:" + filePath,props);
117
118 Statement stmt = conn.createStatement();
119
120 ResultSet results = stmt.executeQuery("SELECT NAME,ID,EXTRA_FIELD FROM sample");
121
122 results.next();
123 assertTrue("Incorrect ID Value",results.getString("ID").equals("Q123"));
124 assertTrue("Incorrect NAME Value",results.getString("NAME").equals("\"S;\""));
125 assertTrue("Incorrect EXTRA_FIELD Value",results.getString("EXTRA_FIELD").equals("F"));
126
127 results.next();
128 assertTrue("Incorrect ID Value",results.getString("ID").equals("A123"));
129 assertTrue("Incorrect NAME Value",results.getString("NAME").equals("Jonathan Ackerman"));
130 assertTrue("Incorrect EXTRA_FIELD Value",results.getString("EXTRA_FIELD").equals("A"));
131
132 results.next();
133 assertTrue("Incorrect ID Value",results.getString("ID").equals("B234"));
134 assertTrue("Incorrect NAME Value",results.getString("NAME").equals("Grady O'Neil"));
135 assertTrue("Incorrect EXTRA_FIELD Value",results.getString("EXTRA_FIELD").equals("B"));
136
137 results.next();
138 assertTrue("Incorrect ID Value",results.getString("ID").equals("C456"));
139 assertTrue("Incorrect NAME Value",results.getString("NAME").equals("Susan; Peter and Dave"));
140 assertTrue("Incorrect EXTRA_FIELD Value",results.getString("EXTRA_FIELD").equals("C"));
141
142 results.next();
143 assertTrue("Incorrect ID Value",results.getString("ID").equals("D789"));
144 assertTrue("Incorrect NAME Value",results.getString("NAME").equals("Amelia \"meals\" Maurice"));
145 assertTrue("Incorrect EXTRA_FIELD Value",results.getString("EXTRA_FIELD").equals("E"));
146
147 results.next();
148 assertTrue("Incorrect ID Value",results.getString("ID").equals("X234"));
149 assertTrue("Incorrect NAME Value",results.getString("NAME").equals("Peter \"peg leg\"; Jimmy & Samantha \"Sam\""));
150 assertTrue("Incorrect EXTRA_FIELD Value",results.getString("EXTRA_FIELD").equals("G"));
151
152 results.close();
153 stmt.close();
154 conn.close();
155 }
156 catch(Exception e)
157 {
158 fail("Unexpected Exception: " + e);
159 }
160 }
161
162 public void testMetadata()
163 {
164 try
165 {
166 Connection conn = DriverManager.getConnection("jdbc:relique:csv:" + filePath);
167
168 Statement stmt = conn.createStatement();
169
170 ResultSet results = stmt.executeQuery("SELECT * FROM sample");
171
172 ResultSetMetaData metadata = results.getMetaData();
173
174 assertTrue("Incorrect Table Name",metadata.getTableName(0).equals("sample"));
175
176 assertTrue("Incorrect Column Name 1",metadata.getColumnName(1).equals("ID"));
177 assertTrue("Incorrect Column Name 2",metadata.getColumnName(2).equals("NAME"));
178 assertTrue("Incorrect Column Name 3",metadata.getColumnName(3).equals("EXTRA_FIELD"));
179
180 results.close();
181 stmt.close();
182 conn.close();
183 }
184 catch(Exception e)
185 {
186 fail("Unexpected Exception: " + e);
187 }
188 }
189
190 public void testMetadataWithSupressedHeaders()
191 {
192 try
193 {
194 Properties props = new Properties();
195 props.put("suppressHeaders","true");
196
197 Connection conn = DriverManager.getConnection("jdbc:relique:csv:" + filePath,props);
198
199 Statement stmt = conn.createStatement();
200
201 ResultSet results = stmt.executeQuery("SELECT * FROM sample");
202
203 ResultSetMetaData metadata = results.getMetaData();
204
205 assertTrue("Incorrect Table Name",metadata.getTableName(0).equals("sample"));
206
207 assertTrue("Incorrect Column Name 1",metadata.getColumnName(1).equals("COLUMN1"));
208 assertTrue("Incorrect Column Name 2",metadata.getColumnName(2).equals("COLUMN2"));
209 assertTrue("Incorrect Column Name 3",metadata.getColumnName(3).equals("COLUMN3"));
210
211 results.close();
212 stmt.close();
213 conn.close();
214 }
215 catch(Exception e)
216 {
217 fail("Unexpected Exception: " + e);
218 }
219 }
220
221
222 public void testWithSuppressedHeaders()
223 {
224 try
225 {
226 Properties props = new Properties();
227 props.put("suppressHeaders","true");
228
229 Connection conn = DriverManager.getConnection("jdbc:relique:csv:" + filePath,props );
230
231 Statement stmt = conn.createStatement();
232
233 ResultSet results = stmt.executeQuery("SELECT * FROM sample");
234
235 // header is now treated as normal data line
236 results.next();
237 assertTrue("Incorrect COLUMN1 Value",results.getString("COLUMN1").equals("ID"));
238 assertTrue("Incorrect COLUMN2 Value",results.getString("COLUMN2").equals("NAME"));
239 assertTrue("Incorrect COLUMN3 Value",results.getString("COLUMN3").equals("EXTRA_FIELD"));
240
241 results.next();
242 assertTrue("Incorrect COLUMN1 Value",results.getString("COLUMN1").equals("Q123"));
243 assertTrue("Incorrect COLUMN2 Value",results.getString("COLUMN2").equals("\"S,\""));
244 assertTrue("Incorrect COLUMN3 Value",results.getString("COLUMN3").equals("F"));
245
246 results.next();
247 assertTrue("Incorrect COLUMN1 Value",results.getString("COLUMN1").equals("A123"));
248 assertTrue("Incorrect COLUMN2 Value",results.getString("COLUMN2").equals("Jonathan Ackerman"));
249 assertTrue("Incorrect COLUMN3 Value",results.getString("COLUMN3").equals("A"));
250
251 results.next();
252 assertTrue("Incorrect COLUMN1 Value",results.getString("COLUMN1").equals("B234"));
253 assertTrue("Incorrect COLUMN2 Value",results.getString("COLUMN2").equals("Grady O'Neil"));
254 assertTrue("Incorrect COLUMN3 Value",results.getString("COLUMN3").equals("B"));
255
256 results.next();
257 assertTrue("Incorrect COLUMN1 Value",results.getString("COLUMN1").equals("C456"));
258 assertTrue("Incorrect COLUMN2 Value",results.getString("COLUMN2").equals("Susan, Peter and Dave"));
259 assertTrue("Incorrect COLUMN3 Value",results.getString("COLUMN3").equals("C"));
260
261 results.next();
262 assertTrue("Incorrect COLUMN1 Value",results.getString("COLUMN1").equals("D789"));
263 assertTrue("Incorrect COLUMN2 Value",results.getString("COLUMN2").equals("Amelia \"meals\" Maurice"));
264 assertTrue("Incorrect COLUMN3 Value",results.getString("COLUMN3").equals("E"));
265
266 results.next();
267 assertTrue("Incorrect COLUMN1 Value",results.getString("COLUMN1").equals("X234"));
268 assertTrue("Incorrect COLUMN2 Value",results.getString("COLUMN2").equals("Peter \"peg leg\", Jimmy & Samantha \"Sam\""));
269 assertTrue("Incorrect COLUMN3 Value",results.getString("COLUMN3").equals("G"));
270
271 results.close();
272 stmt.close();
273 conn.close();
274 }
275 catch(Exception e)
276 {
277 fail("Unexpected Exception: " + e);
278 }
279 }
280 }
This page automatically generated by Maven