KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > scriptella > driver > csv > CsvQueryTest


1 /*
2  * Copyright 2006-2007 The Scriptella Project Team.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package scriptella.driver.csv;
17
18 import au.com.bytecode.opencsv.CSVReader;
19 import scriptella.AbstractTestCase;
20 import scriptella.spi.AbstractConnection;
21 import scriptella.spi.MockParametersCallbacks;
22 import scriptella.spi.ParametersCallback;
23 import scriptella.spi.QueryCallback;
24
25 import java.io.IOException JavaDoc;
26 import java.io.StringReader JavaDoc;
27
28 /**
29  * Tests for {@link CsvQuery}.
30  *
31  * @author Fyodor Kupolov
32  * @version 1.0
33  */

34 public class CsvQueryTest extends AbstractTestCase {
35     private int rows;
36     public void test() throws IOException JavaDoc {
37         //Test query with columns number exceeding the input data columns number
38
String JavaDoc data = "1,2,3\n11,2,3,4\n1";
39         String JavaDoc query = ".*1.*,2,3,4";
40         CsvQuery q = new CsvQuery(new CSVReader(new StringReader JavaDoc(data)), false, false);
41         rows=0;
42         AbstractConnection.StatementCounter cnt = new AbstractConnection.StatementCounter();
43         //only 11,2,3,4 matches the pattern
44
q.execute(new CSVReader(new StringReader JavaDoc(query)), MockParametersCallbacks.UNSUPPORTED, new QueryCallback() {
45             public void processRow(final ParametersCallback parameters) {
46                 rows++;
47                 assertEquals("11", parameters.getParameter("1"));
48                 assertEquals("2", parameters.getParameter("2"));
49                 assertEquals("3", parameters.getParameter("3"));
50                 assertEquals("4", parameters.getParameter("4"));
51             }
52         }, cnt);
53         assertEquals(1, rows);
54         assertEquals(1, cnt.statements);
55     }
56
57     /**
58      * Tests if query correctly works with parameters.
59      * @throws IOException
60      */

61     public void testParametersLookup() throws IOException JavaDoc {
62         String JavaDoc data = "a,b,c\n11,22,33";
63         String JavaDoc query = "11,22,33";
64         CsvQuery q = new CsvQuery(new CSVReader(new StringReader JavaDoc(data)), true, true);
65         rows=0;
66         AbstractConnection.StatementCounter cnt = new AbstractConnection.StatementCounter();
67         q.execute(new CSVReader(new StringReader JavaDoc(query)), MockParametersCallbacks.SIMPLE, new QueryCallback() {
68             public void processRow(final ParametersCallback parameters) {
69                 rows++;
70                 //now lookup columns by name and index
71
assertEquals("11", parameters.getParameter("1"));
72                 assertEquals("11", parameters.getParameter("a"));
73                 assertEquals("22", parameters.getParameter("2"));
74                 assertEquals("22", parameters.getParameter("b"));
75                 assertEquals("33", parameters.getParameter("3"));
76                 assertEquals("33", parameters.getParameter("c"));
77                 assertEquals("*4*", parameters.getParameter("4")); //Unknown column
78
assertEquals("*four*", parameters.getParameter("four")); //Unknown column
79
}
80         }, cnt);
81         assertEquals(1, rows);
82         assertEquals(1, cnt.statements);
83     }
84
85     /**
86      * Tests if invalid queries are recognized.
87      */

88     public void testInvalidQuery() throws IOException JavaDoc {
89         String JavaDoc data = "a,b,c";
90         String JavaDoc query = "\\"; //bad query
91
CsvQuery q = new CsvQuery(new CSVReader(new StringReader JavaDoc(data)), true, true);
92         try {
93             q.execute(new CSVReader(new StringReader JavaDoc(query)), MockParametersCallbacks.UNSUPPORTED, null, null);
94             fail("Bad query syntax should be recognized");
95         } catch (CsvProviderException e) {
96             //OK
97
}
98
99
100     }
101
102 }
103
Popular Tags