KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > smallsql > junit > TestOther


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  * TestOthers.java
29  * ---------------
30  * Author: Volker Berlin
31  *
32  * Created on 31.07.2004
33  */

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

41 public class TestOther extends BasicTestCase {
42
43     public void testInsertSelect() throws Exception JavaDoc{
44         Connection con = AllTests.getConnection();
45         try{
46             con.createStatement().execute("Create Table InsertSelect (i counter, v varchar(20))");
47             assertEqualsRsValue( new Integer JavaDoc(0), "Select count(*) from InsertSelect");
48
49             con.createStatement().execute("Insert Into InsertSelect(v) Values('qwert')");
50             assertEqualsRsValue( new Integer JavaDoc(1), "Select count(*) from InsertSelect");
51
52             con.createStatement().execute("Insert Into InsertSelect(v) Select v From InsertSelect");
53             assertEqualsRsValue( new Integer JavaDoc(2), "Select count(*) from InsertSelect");
54
55             con.createStatement().execute("Insert Into InsertSelect(v) (Select v From InsertSelect)");
56             assertEqualsRsValue( new Integer JavaDoc(4), "Select count(*) from InsertSelect");
57         }finally{
58             dropTable( con, "InsertSelect" );
59         }
60     }
61
62
63     public void testDistinct() throws Exception JavaDoc{
64         Connection con = AllTests.getConnection();
65         try{
66             con.createStatement().execute("Create Table TestDistinct (i counter, v varchar(20), n bigint, b boolean)");
67             assertRowCount( 0, "Select * From TestDistinct" );
68
69             con.createStatement().execute("Insert Into TestDistinct(v,b) Values('qwert1',true)");
70             con.createStatement().execute("Insert Into TestDistinct(v,b) Values('qwert2',true)");
71             con.createStatement().execute("Insert Into TestDistinct(v,b) Values('qwert1',true)");
72             con.createStatement().execute("Insert Into TestDistinct(v,b) Values('qwert2',true)");
73             con.createStatement().execute("Insert Into TestDistinct(v,b) Values('qwert1',false)");
74             assertRowCount( 5, "Select b,n,v From TestDistinct" );
75             assertRowCount( 2, "Select Distinct v From TestDistinct t1" );
76             assertRowCount( 3, "Select Distinct b,n,v From TestDistinct" );
77             assertRowCount( 3, "Select Distinct b,n,v,i+null,23+i-i,'asdf'+v From TestDistinct" );
78             assertRowCount( 5, "Select All b,n,v From TestDistinct" );
79         }finally{
80             dropTable( con, "TestDistinct" );
81         }
82     }
83     
84
85     public void testConstantAndRowPos() throws Exception JavaDoc{
86         assertRowCount( 1, "Select 12, 'qwert'" );
87     }
88     
89
90     public void testNoFromResult() throws Exception JavaDoc{
91         Connection con = AllTests.getConnection();
92         
93         Statement st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY );
94         ResultSet rs = st.executeQuery("Select 12, 'qwert' alias");
95         
96         assertRSMetaData( rs, new String JavaDoc[]{"col1", "alias"}, new int[]{Types.INTEGER, Types.VARCHAR });
97         
98         assertTrue( rs.isBeforeFirst() );
99         assertFalse( rs.isFirst() );
100         assertFalse( rs.isLast() );
101         assertFalse( rs.isAfterLast() );
102         
103         assertTrue( rs.next() );
104         assertFalse( rs.isBeforeFirst() );
105         assertTrue( rs.isFirst() );
106         assertTrue( rs.isLast() );
107         assertFalse( rs.isAfterLast() );
108         
109         assertFalse( rs.next() );
110         assertFalse( rs.isBeforeFirst() );
111         assertFalse( rs.isFirst() );
112         assertFalse( rs.isLast() );
113         assertTrue( rs.isAfterLast() );
114         
115         assertTrue( rs.previous() );
116         assertFalse( rs.isBeforeFirst() );
117         assertTrue( rs.isFirst() );
118         assertTrue( rs.isLast() );
119         assertFalse( rs.isAfterLast() );
120         
121         assertFalse( rs.previous() );
122         assertTrue( rs.isBeforeFirst() );
123         assertFalse( rs.isFirst() );
124         assertFalse( rs.isLast() );
125         assertFalse( rs.isAfterLast() );
126         
127         assertTrue( rs.first() );
128         assertFalse( rs.isBeforeFirst() );
129         assertTrue( rs.isFirst() );
130         assertTrue( rs.isLast() );
131         assertFalse( rs.isAfterLast() );
132         
133         assertTrue( rs.last() );
134         assertFalse( rs.isBeforeFirst() );
135         assertTrue( rs.isFirst() );
136         assertTrue( rs.isLast() );
137         assertFalse( rs.isAfterLast() );
138     }
139
140     
141     public void testInSelect() throws Exception JavaDoc{
142         Connection con = AllTests.getConnection();
143         try{
144             con.createStatement().execute("Create Table TestInSelect (i counter, v varchar(20), n bigint, b boolean)");
145             assertRowCount( 0, "Select * From TestInSelect WHere i In (Select i from TestInSelect)" );
146
147             con.createStatement().execute("Insert Into TestInSelect(v,b) Values('qwert1',true)");
148             assertRowCount( 1, "Select * From TestInSelect WHere i In (Select i from TestInSelect)" );
149
150             con.createStatement().execute("Insert Into TestInSelect(v,b) Values('qwert1',true)");
151             assertRowCount( 2, "Select * From TestInSelect WHere i In (Select i from TestInSelect)" );
152             assertRowCount( 1, "Select * From TestInSelect WHere i In (Select i from TestInSelect Where i>1)" );
153             assertRowCount( 1, "Select * From TestInSelect Where i IN ( 1, 1, 12345, 987654321)" );
154             assertRowCount( 2, "Select * From TestInSelect Where v IN ( null, '', 'qwert1', 'qwert1')" );
155             assertRowCount( 2, "Select * From TestInSelect Where v IN ( 'qwert1')" );
156             assertRowCount( 0, "Select * From TestInSelect Where '' IN ( 'qwert1')" );
157             assertRowCount( 2, "Select * From TestInSelect Where 'qwert1' IN ( 'qwert1', 'qwert2')" );
158         }finally{
159             dropTable( con, "TestInSelect" );
160         }
161     }
162
163     
164     public void testSetTransaction() throws Exception JavaDoc{
165         Connection con = AllTests.getConnection();
166         try{
167             con.createStatement().execute("Set Transaction Isolation Level Read Uncommitted");
168             assertEquals( Connection.TRANSACTION_READ_UNCOMMITTED, con.getTransactionIsolation() );
169             
170             con.createStatement().execute("Set Transaction Isolation Level Read Committed");
171             assertEquals( Connection.TRANSACTION_READ_COMMITTED, con.getTransactionIsolation() );
172             
173             con.createStatement().execute("Set Transaction Isolation Level Repeatable Read");
174             assertEquals( Connection.TRANSACTION_REPEATABLE_READ, con.getTransactionIsolation() );
175             
176             con.createStatement().execute("Set Transaction Isolation Level Serializable");
177             assertEquals( Connection.TRANSACTION_SERIALIZABLE, con.getTransactionIsolation() );
178             
179         }finally{
180             con.setTransactionIsolation( Connection.TRANSACTION_READ_COMMITTED );
181         }
182     }
183     
184     
185     public void testCreateDropDatabases() throws Exception JavaDoc{
186         Connection con = DriverManager.getConnection("jdbc:smallsql");
187         
188         Statement st = con.createStatement();
189         try{
190             st.execute("Create Database anyTestDatabase");
191         }catch(SQLException ex){
192             st.execute("Drop Database anyTestDatabase");
193             throw ex;
194         }
195         st.execute("Drop Database anyTestDatabase");
196     }
197     
198     
199     public void testManyColumns() throws Exception JavaDoc{
200         Connection con = AllTests.getConnection();
201         Statement st = con.createStatement();
202         dropTable( con, "ManyCols" );
203         StringBuffer JavaDoc buf = new StringBuffer JavaDoc("Create Table ManyCols(");
204         for(int i=1; i<300; i++){
205             if(i!=1)buf.append(',');
206             buf.append("column").append(i).append(" int");
207         }
208         buf.append(')');
209         
210         st.execute(buf.toString());
211         con.close();
212         con = AllTests.getConnection();
213         st = con.createStatement();
214         assertEquals(1,st.executeUpdate("Insert Into ManyCols(column260) Values(123456)"));
215         st.execute("Drop Table ManyCols");
216     }
217     
218 }
219
Popular Tags