1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * you may not use this file except in compliance with the License. 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * You may obtain a copy of the License at 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License. 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage tests.java.sql; 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.KnownFailure; 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.CharArrayReader; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.math.BigDecimal; 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.sql.Connection; 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.sql.Date; 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.sql.PreparedStatement; 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.sql.ResultSet; 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.sql.SQLException; 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.sql.Statement; 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.sql.Time; 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.ArrayList; 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Calendar; 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.HashMap; 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.HashSet; 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.support.DatabaseCreator; 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.support.Support_SQL; 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.extensions.TestSetup; 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.Test; 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase; 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestSuite; 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class SelectFunctionalityTest extends TestCase { 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static Connection conn; 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static Statement statement; 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static Date date; 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static Time time; 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 52c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann public void setUp() throws Exception { 5379870d81001ab3dc70b3bce7dfcca70153a3a14fUrs Grob super.setUp(); 54c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann Support_SQL.loadDriver(); 55c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann try { 56c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann conn = Support_SQL.getConnection(); 57c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann statement = conn.createStatement(); 58c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann createTestTables(); 59c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann } catch (SQLException e) { 60c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann fail("Unexpected SQLException " + e.toString()); 61c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann } 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 64c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann public void tearDown() throws Exception { 65c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann deleteTestTables(); 66c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann conn.close(); 67c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann statement.close(); 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super.tearDown(); 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 71c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann private void createTestTables() { 72c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann try { 73c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann ResultSet userTab = conn.getMetaData().getTables(null, 74c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann null, null, null); 75c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann 76c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann while (userTab.next()) { 77c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann String tableName = userTab.getString("TABLE_NAME"); 78c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann if (tableName.equals(DatabaseCreator.TEST_TABLE2)) { 79c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann statement.execute(DatabaseCreator.DROP_TABLE2); 80c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann } else if (tableName 81c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann .equals(DatabaseCreator.SALESPEOPLE_TABLE)) { 82c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann statement 83c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann .execute(DatabaseCreator.DROP_TABLE_SALESPEOPLE); 84c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann } else if (tableName 85c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann .equals(DatabaseCreator.CUSTOMERS_TABLE)) { 86c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann statement 87c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann .execute(DatabaseCreator.DROP_TABLE_CUSTOMERS); 88c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann } else if (tableName 89c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann .equals(DatabaseCreator.ORDERS_TABLE)) { 90c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann statement 91c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann .execute(DatabaseCreator.DROP_TABLE_ORDERS); 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 94c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann userTab.close(); 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 96c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann statement.execute(DatabaseCreator.CREATE_TABLE2); 97c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann statement.execute(DatabaseCreator.CREATE_TABLE_SALESPEOPLE); 98c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann statement.execute(DatabaseCreator.CREATE_TABLE_CUSTOMERS); 99c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann statement.execute(DatabaseCreator.CREATE_TABLE_ORDERS); 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 101c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann long currentTime = Calendar.getInstance().getTimeInMillis(); 102c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann date = new Date(currentTime); 103c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann time = new Time(currentTime); 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 105c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann DatabaseCreator.fillTestTable2(conn, 1, 5, currentTime); 106c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann DatabaseCreator.fillCustomersTable(conn); 107c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann DatabaseCreator.fillOrdersTable(conn); 108c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann DatabaseCreator.fillSalesPeopleTable(conn); 109c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann 110c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann } catch (SQLException e) { 111c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann fail("Unexpected SQLException " + e.toString()); 112c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann } 113c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann } 114c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann 115c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann private void deleteTestTables() { 116c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann try { 117c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann statement.execute(DatabaseCreator.DROP_TABLE2); 118c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann statement.execute(DatabaseCreator.DROP_TABLE_SALESPEOPLE); 119c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann statement.execute(DatabaseCreator.DROP_TABLE_CUSTOMERS); 120c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann statement.execute(DatabaseCreator.DROP_TABLE_ORDERS); 121c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann } catch (SQLException e) { 122c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann fail("Unexpected SQLException " + e.toString()); 123c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann } 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 127229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * SelectFunctionalityTest#test_SelectSimple(). Selects all records 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * from the table 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_SelectSimple() throws SQLException { 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String sql = "SELECT * FROM " + DatabaseCreator.TEST_TABLE2; 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet result = statement.executeQuery(sql); 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int counter = 0; 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (result.next()) { 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int id = result.getInt("finteger"); 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("expected value doesn't equal actual", 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project DatabaseCreator.defaultString + id, result 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getString("ftext")); 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("expected value doesn't equal actual", 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project DatabaseCreator.defaultCharacter + id, result 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getString("fcharacter")); 143f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // TODO getBigDecimal is not supported 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// assertEquals("expected value doesn't equal actual", BigDecimal 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// .valueOf(id + 0.1), result.getBigDecimal("fdecimal")); 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// assertEquals("expected value doesn't equal actual", BigDecimal 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// .valueOf(id + 0.1), result.getBigDecimal("fnumeric")); 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// assertEquals("expected value doesn't equal actual", id, result 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// .getInt("fsmallint")); 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("expected value doesn't equal actual", BigDecimal 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .valueOf(id + 0.1).floatValue(), result.getFloat("ffloat")); 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("expected value doesn't equal actual", BigDecimal 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .valueOf(id + 0.1).doubleValue(), result.getDouble("freal")); 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("expected value doesn't equal actual", BigDecimal 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .valueOf(id + 0.1).doubleValue(), result 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getDouble("fdouble")); 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("expected value doesn't equal actual", 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project date.toString(), result.getDate("fdate").toString()); 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("expected value doesn't equal actual", 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project time.toString(), result.getTime("ftime").toString()); 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project counter++; 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 164f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("number of rows in ResultSet is wrong", 5, counter); 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project result.close(); 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 170229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * SelectFunctionalityTest#test_SelectPrepared(). Selects all records 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * from the table using parametric query 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_SelectPrepared() throws SQLException { 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String sql = "SELECT finteger, ftext, fcharacter, fdecimal, fnumeric," 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + " fsmallint, ffloat, freal, fdouble, fdate, ftime" + " FROM " 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + DatabaseCreator.TEST_TABLE2 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + " WHERE finteger = ? AND ftext = ? AND fcharacter = ? AND" 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + " fdecimal = ? AND fnumeric = ? AND fsmallint = ? AND" 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + " freal = ? AND fdouble = ? AND fdate = ?" + " AND ftime = ?"; 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PreparedStatement prepStatement = conn.prepareStatement(sql); 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CharArrayReader reader = new CharArrayReader(new String( 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project DatabaseCreator.defaultCharacter + "1").toCharArray()); 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project prepStatement.setInt(1, 1); 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project prepStatement.setString(2, DatabaseCreator.defaultString + "1"); 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// TODO setCharacterStream and setBigDecimal are not supported 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// prepStatement.setCharacterStream(3, reader, 4); 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// prepStatement.setBigDecimal(4, BigDecimal.valueOf(1.1)); 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// prepStatement.setBigDecimal(5, BigDecimal.valueOf(1.1)); 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project prepStatement.setInt(6, 1); 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project prepStatement.setDouble(7, 1.1); 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project prepStatement.setDouble(8, 1.1); 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project prepStatement.setDate(9, date); 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project prepStatement.setTime(10, time); 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int counter = 0; 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet result = prepStatement.executeQuery(); 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (result.next()) { 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int id = result.getInt("finteger"); 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("expected value doesn't equal actual", 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project DatabaseCreator.defaultString + id, result 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getString("ftext")); 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("expected value doesn't equal actual", 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project DatabaseCreator.defaultCharacter + id, result 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getString("fcharacter")); 206f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes// TODO getBigDecimal is not supported 207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// assertEquals("expected value doesn't equal actual", BigDecimal 208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// .valueOf(1.1), result.getBigDecimal("fdecimal")); 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// assertEquals("expected value doesn't equal actual", BigDecimal 210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// .valueOf(1.1), result.getBigDecimal("fnumeric")); 211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("expected value doesn't equal actual", id, result 212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getInt("fsmallint")); 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("expected value doesn't equal actual", 214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project (float) (id + 0.1), result.getFloat("ffloat")); 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("expected value doesn't equal actual", 216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project (double) (id + 0.1), result.getDouble("freal")); 217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("expected value doesn't equal actual", 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project (double) (id + 0.1), result.getDouble("fdouble")); 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("expected value doesn't equal actual", 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project date.toString(), result.getDate("fdate").toString()); 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("expected value doesn't equal actual", 222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project time.toString(), result.getTime("ftime").toString()); 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project counter++; 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 225f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes// TODO query wasn't executed due to "not supported" methods 226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// assertEquals("number of rows in ResultSet is wrong", 1, counter); 227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project prepStatement.close(); 228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project result.close(); 229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 232229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * SelectFunctionalityTest#test_SubSelect(). Selects records from the 233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * table using subselect 234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_SubSelect() throws SQLException { 236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String sql = "SELECT finteger," + " (SELECT ftext FROM " 237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + DatabaseCreator.TEST_TABLE2 + " WHERE finteger = 1) as ftext" 238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + " FROM " + DatabaseCreator.TEST_TABLE2; 239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet result = statement.executeQuery(sql); 240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashMap<Integer, String> value = new HashMap<Integer, String>(); 242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.put(1, DatabaseCreator.defaultString + "1"); 243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.put(2, DatabaseCreator.defaultString + "1"); 244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.put(3, DatabaseCreator.defaultString + "1"); 245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.put(4, DatabaseCreator.defaultString + "1"); 246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.put(5, DatabaseCreator.defaultString + "1"); 247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (result.next()) { 249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int key = result.getInt("finteger"); 250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String val = result.getString("ftext"); 251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("wrong value of finteger field", value.containsKey(key)); 252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("wrong value of ftext field", value.get(key), val); 253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.remove(key); 254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("expected rows number doesn't equal actual rows number", 256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.isEmpty()); 257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project result.close(); 258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 261229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * SelectFunctionalityTest#test_SelectThreeTables(). Selects records 262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * from a few tables 263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_SelectThreeTables() throws SQLException { 265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String sql = "SELECT onum, " + DatabaseCreator.ORDERS_TABLE + ".cnum" 266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + " FROM " + DatabaseCreator.SALESPEOPLE_TABLE + ", " 267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + DatabaseCreator.CUSTOMERS_TABLE + ", " 268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + DatabaseCreator.ORDERS_TABLE + " WHERE " 269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + DatabaseCreator.CUSTOMERS_TABLE + ".city <> " 270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + DatabaseCreator.SALESPEOPLE_TABLE + ".city" + " AND " 271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + DatabaseCreator.ORDERS_TABLE + ".cnum = " 272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + DatabaseCreator.CUSTOMERS_TABLE + ".cnum" + " AND " 273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + DatabaseCreator.ORDERS_TABLE + ".snum = " 274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + DatabaseCreator.SALESPEOPLE_TABLE + ".snum"; 275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet result = statement.executeQuery(sql); 276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashMap<Integer, Integer> value = new HashMap<Integer, Integer>(); 278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.put(3001, 2008); 279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.put(3002, 2007); 280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.put(3006, 2008); 281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.put(3009, 2002); 282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.put(3007, 2004); 283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.put(3010, 2004); 284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (result.next()) { 286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int key = result.getInt("onum"); 287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int val = result.getInt("cnum"); 288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("wrong value of onum field", value.containsKey(key)); 289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("wrong value of cnum field", value.get(key), 290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project (Integer) val); 291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.remove(key); 292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("expected rows number doesn't equal actual rows number", 294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.isEmpty()); 295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project result.close(); 296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 299229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * SelectFunctionalityTest#test_SelectThreeTables(). Selects records 300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * from a table using union 301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_SelectUnionItself() throws SQLException { 303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String sql = "SELECT b.cnum, b.cname" + " FROM " 304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + DatabaseCreator.CUSTOMERS_TABLE + " a, " 305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + DatabaseCreator.CUSTOMERS_TABLE + " b" 306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + " WHERE a.snum = 1002" + " AND b.city = a.city"; 307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet result = statement.executeQuery(sql); 308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashMap<Integer, String> value = new HashMap<Integer, String>(); 310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.put(2003, "Liu"); 311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.put(2004, "Grass"); 312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.put(2008, "Cisneros"); 313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (result.next()) { 315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int key = result.getInt("cnum"); 316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String val = result.getString("cname"); 317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("wrong value of cnum field", value.containsKey(key)); 318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("wrong value of cname field", value.get(key), val); 319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.remove(key); 320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("expected rows number doesn't equal actual rows number", 322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.isEmpty()); 323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project result.close(); 324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 327229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * SelectFunctionalityTest#test_SelectLeftOuterJoin(). Selects 328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * records from a table using left join 329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_SelectLeftOuterJoin() throws SQLException { 331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String sql = "SELECT distinct s.snum as ssnum, c.snum as ccnum FROM " 332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + DatabaseCreator.CUSTOMERS_TABLE + " c left outer join " 333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + DatabaseCreator.SALESPEOPLE_TABLE + " s on s.snum=c.snum"; 334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet result = statement.executeQuery(sql); 335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashMap<Integer, Integer> value = new HashMap<Integer, Integer>(); 337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.put(1001, 1001); 338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.put(1002, 1002); 339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.put(1003, 1003); 340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.put(1004, 1004); 341adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.put(1007, 1007); 342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (result.next()) { 344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int key = result.getInt("ssnum"); 345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Object val = result.getObject("ccnum"); 346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("wrong value of ssnum field", value.containsKey(key)); 347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("wrong value of ccnum field", value.get(key), 348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project (Integer) val); 349adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.remove(key); 350adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 351adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("expected rows number doesn't equal actual rows number", 352adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.isEmpty()); 353adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project result.close(); 354adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 355adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 356adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 357229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * SelectFunctionalityTest#test_SelectRightOuterJoin(). Selects 358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * records from a table using right join 359f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 360f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * TODO RIGHT and FULL OUTER JOINs are not supported 361adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @KnownFailure("not supported") 363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_SelectRightOuterJoin() throws SQLException { 364adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String sql = "SELECT distinct s.snum as ssnum, c.snum as ccnum FROM " 365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + DatabaseCreator.CUSTOMERS_TABLE + " c right outer join " 366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + DatabaseCreator.SALESPEOPLE_TABLE + " s on s.snum=c.snum"; 367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet result = statement.executeQuery(sql); 368adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashMap<Integer, Integer> value = new HashMap<Integer, Integer>(); 370adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.put(1001, 1001); 371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.put(1002, 1002); 372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.put(1003, 1003); 373adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.put(1004, 1004); 374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.put(1007, 1007); 375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.put(1013, null); 376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (result.next()) { 378adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int key = result.getInt("ssnum"); 379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Object val = result.getObject("ccnum"); 380adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("wrong value of ssnum field", value.containsKey(key)); 381adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("wrong value of ccnum field", value.get(key), 382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project (Integer) val); 383adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.remove(key); 384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("expected rows number doesn't equal actual rows number", 386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value.isEmpty()); 387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project result.close(); 388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 389adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 390adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 391229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * SelectFunctionalityTest#test_SelectGroupBy(). Selects records from 392adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * a table using group by 393adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 394adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_SelectGroupBy() throws SQLException { 395adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String selectQuery = "SELECT rating, SUM(snum) AS sum FROM " 396adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + DatabaseCreator.CUSTOMERS_TABLE + " GROUP BY rating"; 397adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet result = statement.executeQuery(selectQuery); 398adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 399adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashMap<Integer, Integer> values = new HashMap<Integer, Integer>(); 400adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project values.put(100, 3006); 401adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project values.put(200, 2005); 402adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project values.put(300, 2009); 403adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 404adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (result.next()) { 405adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int rating = result.getInt("rating"); 406adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int sum = result.getInt("sum"); 407adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Wrong value of rating field", values 408adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .containsKey(rating)); 409adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Wrong value of sum field", values.get(rating), 410adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new Integer(sum)); 411adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(new Integer(sum), values.remove(rating)); 412adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 413adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project result.close(); 414adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Result set has wrong size", values.isEmpty()); 415adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 416adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 417adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 418229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * SelectFunctionalityTest#test_SelectOrderBy(). Selects records from 419adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * a table using order by 420adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 421adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_SelectOrderBy() throws SQLException { 422adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String selectQuery = "SELECT onum FROM " + DatabaseCreator.ORDERS_TABLE 423adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + " ORDER BY onum"; 424adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet result = statement.executeQuery(selectQuery); 425adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 426adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ArrayList<Integer> values = new ArrayList<Integer>(); 427adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project values.add(Integer.valueOf(3001)); 428adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project values.add(Integer.valueOf(3002)); 429adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project values.add(Integer.valueOf(3003)); 430adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project values.add(Integer.valueOf(3005)); 431adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project values.add(Integer.valueOf(3006)); 432adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project values.add(Integer.valueOf(3007)); 433adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project values.add(Integer.valueOf(3008)); 434adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project values.add(Integer.valueOf(3009)); 435adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project values.add(Integer.valueOf(3010)); 436adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project values.add(Integer.valueOf(3011)); 437adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 438adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int index = 0; 439adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (result.next()) { 440adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Integer onum = result.getInt("onum"); 441adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("result set doesn't contain value", values 442adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .contains(onum)); 443adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("result set is not sorted", index, values 444adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .indexOf(onum)); 445adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project index++; 446adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 447adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project result.close(); 448adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 449adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 450adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 451229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * SelectFunctionalityTest#test_SelectDistinct(). Selects records 452adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * from a table using distinct 453adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 454adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_SelectDistinct() throws SQLException { 455adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String selectQuery = "SELECT DISTINCT rating FROM " 456adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + DatabaseCreator.CUSTOMERS_TABLE; 457adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet result = statement.executeQuery(selectQuery); 458adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 459adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashSet<Integer> values = new HashSet<Integer>(); 460adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project values.add(Integer.valueOf(100)); 461adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project values.add(Integer.valueOf(200)); 462adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project values.add(Integer.valueOf(300)); 463adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 464adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (result.next()) { 465adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Integer rating = result.getInt("rating"); 466adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("result set doesn't contain value", values 467adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .contains(rating)); 468adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("wrong value in the result set", values.remove(rating)); 469adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 470adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project result.close(); 471adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Result set has wrong size", values.isEmpty()); 472adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 473adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 474adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 475229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * SelectFunctionalityTest#test_SelectAgregateFunctions(). Selects 476adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * records from a table using agregate functions 477adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 478adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_SelectAgregateFunctions() throws SQLException { 479adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String selectCount = "SELECT count(onum) as count FROM " 480adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + DatabaseCreator.ORDERS_TABLE; 481adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String selectSum = "SELECT sum(onum) as sum FROM " 482adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + DatabaseCreator.ORDERS_TABLE; 483adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String selectAvg = "SELECT avg(onum) as avg FROM " 484adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + DatabaseCreator.ORDERS_TABLE; 485adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String selectMax = "SELECT max(onum) as max FROM " 486adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + DatabaseCreator.ORDERS_TABLE; 487adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String selectMin = "SELECT min(onum) as min FROM " 488adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + DatabaseCreator.ORDERS_TABLE; 489adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 490adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project func("count", selectCount, 10); 491adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project func("sum", selectSum, 30062); 492adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project func("avg", selectAvg, 3006); 493adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project func("max", selectMax, 3011); 494adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project func("min", selectMin, 3001); 495adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 496adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 497adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private void func(String name, String query, int expected) { 498adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int res = 0; 499adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project double resDouble = 0.0; 500adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 501adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet result = statement.executeQuery(query); 502adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (result.next()) { 503adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project res = result.getInt(name); 504adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (res != 0 ) { 505adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(expected,res); 506adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project break; 507adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 508adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // for Double: getInt not supported yet 509adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project resDouble = Double.parseDouble(result.getString(name)); 510adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project res = (int) Math.rint(resDouble); 511adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(expected,res); 512f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 513adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 514adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("wrong size of result set", result.next()); 515adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project result.close(); 516adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 517adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(e.getMessage()); 518adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 519adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 520adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 521adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 522229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * SelectFunctionalityTest#test_SelectHaving(). Selects records from 523adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * a table using having 524adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 525adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_SelectHaving() throws SQLException { 526adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String selectQuery = "SELECT snum, max(amt) AS max FROM " 527adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + DatabaseCreator.ORDERS_TABLE 528adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + " GROUP BY snum HAVING max(amt) > 3000"; 529adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet result = statement.executeQuery(selectQuery); 530adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 531adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashSet<Double> values = new HashSet<Double>(); 532adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project values.add(Double.valueOf(9891.88)); 533adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project values.add(Double.valueOf(5160.45)); 534adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 535adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (result.next()) { 536adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Double max = result.getDouble("max"); 537adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("result set doesn't contain value", values.contains(max)); 538adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("wrong value in the result set", values.remove(max)); 539adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 540adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project result.close(); 541adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Result set has wrong size", values.isEmpty()); 542adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 543adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 544