KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > smallsql > junit > TestResultSet


1 /* =============================================================
2  * SmallSQL : a free Java DBMS library for the Java(tm) platform
3  * =============================================================
4  *
5  * (C) Copyright 2004-2006, by Volker Berlin.
6  *
7  * Project Info: http://www.smallsql.de/
8  *
9  * This library is free software; you can redistribute it and/or modify it
10  * under the terms of the GNU Lesser General Public License as published by
11  * the Free Software Foundation; either version 2.1 of the License, or
12  * (at your option) any later version.
13  *
14  * This library is distributed in the hope that it will be useful, but
15  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
17  * License for more details.
18  *
19  * You should have received a copy of the GNU Lesser General Public
20  * License along with this library; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
22  * USA.
23  *
24  * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
25  * in the United States and other countries.]
26  *
27  * ---------------
28  * TestResultSet.java
29  * ---------------
30  * Author: Volker Berlin
31  *
32  * Created on 01.05.2006
33  */

34 package smallsql.junit;
35
36 import java.sql.*;
37
38
39 /**
40  *
41  * @author Volker Berlin
42  */

43 public class TestResultSet extends BasicTestCase {
44
45     private static boolean init;
46
47     
48     protected void setUp() throws Exception JavaDoc{
49         if(init) return;
50         Connection con = AllTests.getConnection();
51         Statement st = con.createStatement();
52         dropTable( con, "ResultSet");
53         st.execute("Create Table ResultSet (i int identity, c varchar(30))");
54         
55         st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
56         ResultSet rs = st.executeQuery("Select * From ResultSet");
57         
58         rs.moveToInsertRow();
59         rs.insertRow();
60         rs.moveToInsertRow();
61         rs.insertRow();
62         init = true;
63     }
64
65
66     public void testScrollStates() throws Exception JavaDoc{
67         Connection con = AllTests.getConnection();
68         Statement st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
69         ResultSet rs = st.executeQuery("Select * From ResultSet Where 1=0");
70         
71         assertTrue("isBeforeFirst", rs.isBeforeFirst() );
72         assertTrue("isAfterLast", rs.isAfterLast() );
73         assertEquals("getRow", 0, rs.getRow() );
74         
75         rs.moveToInsertRow();
76         rs.insertRow();
77         
78         rs.beforeFirst();
79         assertTrue("isBeforeFirst", rs.isBeforeFirst() );
80         assertFalse("isAfterLast", rs.isAfterLast() );
81         assertEquals("getRow", 0, rs.getRow() );
82         assertTrue("next", rs.next() );
83         assertTrue("isFirst", rs.isFirst() );
84         assertTrue("rowInserted", rs.rowInserted() );
85         assertEquals("getRow", 1, rs.getRow() );
86         assertTrue("isLast", rs.isLast() );
87         assertFalse("next", rs.next() );
88         assertFalse("isBeforeFirst", rs.isBeforeFirst() );
89         assertTrue("isAfterLast", rs.isAfterLast() );
90         assertEquals("getRow", 0, rs.getRow() );
91         
92         assertTrue("first", rs.first() );
93         assertEquals("getRow", 1, rs.getRow() );
94         
95         assertFalse("previous", rs.previous() );
96         assertEquals("getRow", 0, rs.getRow() );
97         assertTrue("isBeforeFirst", rs.isBeforeFirst() );
98         assertFalse("isAfterLast", rs.isAfterLast() );
99         
100         assertTrue("last", rs.last() );
101         assertEquals("getRow", 1, rs.getRow() );
102         assertTrue("isLast", rs.isLast() );
103         
104         rs.afterLast();
105         assertFalse("isBeforeFirst", rs.isBeforeFirst() );
106         assertTrue("isAfterLast", rs.isAfterLast() );
107         assertEquals("getRow", 0, rs.getRow() );
108     }
109     
110
111     public void testScrollStatesGroupBy() throws Exception JavaDoc{
112         Connection con = AllTests.getConnection();
113         Statement st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
114         ResultSet rs = st.executeQuery("Select i,max(c) From ResultSet Group By i HAVING i=1");
115         
116         assertEquals("getConcurrency",ResultSet.CONCUR_READ_ONLY, rs.getConcurrency());
117         assertTrue("isBeforeFirst", rs.isBeforeFirst() );
118         assertFalse("isAfterLast", rs.isAfterLast() );
119         assertEquals("getRow", 0, rs.getRow() );
120         
121         rs.beforeFirst();
122         assertTrue("isBeforeFirst", rs.isBeforeFirst() );
123         assertFalse("isAfterLast", rs.isAfterLast() );
124         assertEquals("getRow", 0, rs.getRow() );
125         assertTrue("next", rs.next() );
126         assertTrue("isFirst", rs.isFirst() );
127         assertFalse("rowInserted", rs.rowInserted() );
128         assertEquals("getRow", 1, rs.getRow() );
129         assertTrue("isLast", rs.isLast() );
130         assertFalse("next", rs.next() );
131         assertFalse("isBeforeFirst", rs.isBeforeFirst() );
132         assertTrue("isAfterLast", rs.isAfterLast() );
133         assertEquals("getRow", 0, rs.getRow() );
134         
135         assertTrue("first", rs.first() );
136         assertEquals("getRow", 1, rs.getRow() );
137         
138         assertFalse("previous", rs.previous() );
139         assertEquals("getRow", 0, rs.getRow() );
140         assertTrue("isBeforeFirst", rs.isBeforeFirst() );
141         assertFalse("isAfterLast", rs.isAfterLast() );
142         
143         assertTrue("last", rs.last() );
144         assertEquals("getRow", 1, rs.getRow() );
145         assertTrue("isLast", rs.isLast() );
146         
147         rs.afterLast();
148         assertFalse("isBeforeFirst", rs.isBeforeFirst() );
149         assertTrue("isAfterLast", rs.isAfterLast() );
150         assertEquals("getRow", 0, rs.getRow() );
151     }
152     
153
154     public void testUpdate() throws Exception JavaDoc{
155         Connection con = AllTests.getConnection();
156         Statement st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
157         ResultSet rs;
158         
159         
160         // first test with a enlarging row size
161
rs = st.executeQuery("Select * From ResultSet");
162         assertTrue("next", rs.next());
163         assertEquals("getRow", 1, rs.getRow() );
164         int id = rs.getInt("i");
165         rs.updateShort("c", (short)123 );
166         assertEquals( (short)123, rs.getShort("c") );
167         assertEquals( id, rs.getInt("i") ); //check a not updated row
168
rs.updateRow();
169         assertEquals( (short)123, rs.getShort("c") );
170         assertFalse( rs.rowUpdated() ); //false because currently it is not implemented and we does not plan it
171
assertFalse( rs.rowInserted() );
172         assertFalse( rs.rowDeleted() );
173         assertEquals("getRow", 1, rs.getRow() );
174         
175         // second test with a reduce row size
176
rs = st.executeQuery("Select * From ResultSet");
177         assertTrue("next", rs.next());
178         rs.updateByte("c", (byte)66 );
179         assertEquals( (byte)66, rs.getByte("c") );
180         rs.updateRow();
181         assertEquals( (short)66, rs.getShort("c") );
182     }
183     
184     
185     /**
186      * test if scrolling reset the update values
187      */

188     public void testUpdateAndScroll() throws Exception JavaDoc{
189         final Object JavaDoc value = "UpdateAndScroll";
190         Connection con = AllTests.getConnection();
191         Statement st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
192         ResultSet rs = st.executeQuery("Select * From ResultSet");
193         
194         //method first
195
assertTrue("start", rs.last());
196         rs.updateObject("c", value, Types.VARCHAR );
197         assertEquals("getObject", value, rs.getObject("c"));
198         assertTrue("first", rs.first());
199         assertNotSame("getObject", value, rs.getObject("c"));
200         
201         //method next
202
assertTrue("start", rs.first());
203         rs.updateObject("c", value, Types.VARCHAR );
204         assertEquals("getObject", value, rs.getObject("c"));
205         assertTrue("next", rs.next());
206         assertNotSame("getObject", value, rs.getObject("c"));
207         
208         //method previous
209
assertTrue("start", rs.last());
210         rs.updateObject("c", value );
211         assertEquals("getObject", value, rs.getObject("c"));
212         assertTrue("previous", rs.previous());
213         assertNotSame("getObject", value, rs.getObject("c"));
214         
215         //method last
216
assertTrue("start", rs.first());
217         rs.updateObject("c", value, Types.VARCHAR );
218         assertEquals("getObject", value, rs.getObject("c"));
219         assertTrue("last", rs.last());
220         assertNotSame("getObject", value, rs.getObject("c"));
221         
222         //method refresh
223
assertTrue("start", rs.first());
224         rs.updateObject("c", value, Types.VARCHAR );
225         assertEquals("getObject", value, rs.getObject("c"));
226         rs.refreshRow();
227         assertNotSame("getObject", value, rs.getObject("c"));
228     }
229     
230     
231     public void testDelete() throws Exception JavaDoc{
232         Connection con = AllTests.getConnection();
233         Statement st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
234         ResultSet rs = st.executeQuery("Select * From ResultSet Where i>1");
235         
236         assertTrue("next", rs.next());
237         assertFalse( rs.rowDeleted() );
238         rs.deleteRow();
239         assertTrue( rs.rowDeleted() );
240     }
241     
242     
243     public void testOther() throws Exception JavaDoc{
244         Connection con = AllTests.getConnection();
245         Statement st = con.createStatement();
246         ResultSet rs = st.executeQuery("Select * From ResultSet");
247         
248         assertEquals(st, rs.getStatement());
249         
250         //currently there are no known warnings
251
rs.clearWarnings();
252         assertNull(rs.getWarnings());
253         
254         rs.setFetchDirection(ResultSet.FETCH_FORWARD);
255         assertEquals( rs.getFetchDirection(), ResultSet.FETCH_FORWARD);
256
257         rs.setFetchDirection(ResultSet.FETCH_REVERSE);
258         assertEquals( rs.getFetchDirection(), ResultSet.FETCH_REVERSE);
259         
260         rs.setFetchSize(123);
261         assertEquals( rs.getFetchSize(), 123);
262     }
263 }
Popular Tags