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 java.math.BigDecimal; 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.sql.Connection; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.sql.DatabaseMetaData; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.sql.ResultSet; 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.sql.SQLException; 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.sql.Statement; 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.HashSet; 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.support.DatabaseCreator; 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.support.Support_SQL; 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.extensions.TestSetup; 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.Test; 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase; 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestSuite; 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class UpdateFunctionalityTest extends TestCase { 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final int numberOfRecords = 20; 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static Connection conn; 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static Statement statement; 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 42c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann public void setUp() throws Exception { 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super.setUp(); 44c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann Support_SQL.loadDriver(); 45c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann try { 46c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann conn = Support_SQL.getConnection(); 47c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann statement = conn.createStatement(); 48c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann createTestTables(); 49c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann } catch (SQLException e) { 50c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann fail("Unexpected SQLException " + e.toString()); 51c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann } 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project DatabaseCreator.fillTestTable1(conn, numberOfRecords); 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project DatabaseCreator.fillTestTable2(conn, numberOfRecords); 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 56c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann public void tearDown() throws Exception { 5779870d81001ab3dc70b3bce7dfcca70153a3a14fUrs Grob deleteTestTables(); 58c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann statement.close(); 59c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann conn.close(); 60f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super.tearDown(); 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 64c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann protected void createTestTables() { 65c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann try { 66c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann DatabaseMetaData meta = conn.getMetaData(); 67c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann ResultSet userTab = meta.getTables(null, null, null, null); 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 69c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann while (userTab.next()) { 70c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann String tableName = userTab.getString("TABLE_NAME"); 71c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann if (tableName.equals(DatabaseCreator.TEST_TABLE1)) { 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project statement.execute(DatabaseCreator.DROP_TABLE1); 73c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann } else if (tableName 74c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann .equals(DatabaseCreator.TEST_TABLE2)) { 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project statement.execute(DatabaseCreator.DROP_TABLE2); 76c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann } else if (tableName 77c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann .equals(DatabaseCreator.TEST_TABLE3)) { 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project statement.execute(DatabaseCreator.DROP_TABLE3); 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 81c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann userTab.close(); 82c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann 83c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann statement.execute(DatabaseCreator.CREATE_TABLE3); 84c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann statement.execute(DatabaseCreator.CREATE_TABLE2); 85c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann statement.execute(DatabaseCreator.CREATE_TABLE1); 86c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann 87c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann } catch (SQLException e) { 88c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann fail("Unexpected SQLException " + e.toString()); 89c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann } 90c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann } 91c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann 92c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann protected void deleteTestTables() { 93c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann try { 94c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann statement.execute(DatabaseCreator.DROP_TABLE1); 95c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann statement.execute(DatabaseCreator.DROP_TABLE2); 96c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann statement.execute(DatabaseCreator.DROP_TABLE3); 97c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann } catch (SQLException e) { 98c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann fail("Unexpected SQLException " + e.toString()); 99c02ce7cca7338064f937c86fae7b019728911525Jorg Pleumann } 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 103229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * UpdateFunctionalityTest#testUpdate1(). Updates all values in one 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * column in the table 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testUpdate1() { 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String newValue = "newValue"; 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String updateQuery = "UPDATE " + DatabaseCreator.TEST_TABLE1 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + " SET field1='" + newValue + "'"; 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int num = statement.executeUpdate(updateQuery); 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Not all records in the database were updated", 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project numberOfRecords, num); 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String selectQuery = "SELECT field1 FROM " 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + DatabaseCreator.TEST_TABLE1; 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet result = statement.executeQuery(selectQuery); 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (result.next()) { 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("The field field1 was not updated", newValue, 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project result.getString("field1")); 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project result.close(); 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected exception" + e.getMessage()); 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 128229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * UpdateFunctionalityTest#testUpdate2(). Updates values in one 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * column in the table using where condition in update command 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testUpdate2() { 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String newValue = "newValue"; 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String updateQuery = "UPDATE " + DatabaseCreator.TEST_TABLE1 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + " SET field1='" + newValue + "' WHERE (id > 2) and (id < 10)"; 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int num = statement.executeUpdate(updateQuery); 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int expectedUpdated = 7; 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Not all records in the database were updated", 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project expectedUpdated, num); 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String selectQuery = "SELECT * FROM " + DatabaseCreator.TEST_TABLE1; 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet result = statement.executeQuery(selectQuery); 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (result.next()) { 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int id = result.getInt("id"); 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String field1 = result.getString("field1"); 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if ((id > 2) && (id < 10)) { 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("The field field1 was not updated", newValue, 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project field1); 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } else { 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("The field field1 was not updated", 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project DatabaseCreator.defaultString + id, field1); 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project result.close(); 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected exception" + e.getMessage()); 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 160229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * UpdateFunctionalityTest#testUpdate3(). Updates values in a several 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * columns in the table 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testUpdate3() { 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int newValue1 = -1; 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int newValue2 = -2; 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String updateQuery = "UPDATE " + DatabaseCreator.TEST_TABLE1 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + " SET field2=" + newValue1 + ", field3=" + newValue2; 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int num = statement.executeUpdate(updateQuery); 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Not all records in the database were updated", 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project numberOfRecords, num); 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String selectQuery = "SELECT field2, field3 FROM " 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + DatabaseCreator.TEST_TABLE1; 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet result = statement.executeQuery(selectQuery); 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (result.next()) { 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // TODO getBigDecimal is not supported 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// assertEquals("The field field2 was not updated", newValue1, 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// result.getBigDecimal("field2").intValue()); 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// assertEquals("The field field3 was not updated", newValue2, 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// result.getBigDecimal("field3").intValue()); 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project result.close(); 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected exception" + e.getMessage()); 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 189229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * UpdateFunctionalityTest#testUpdate4(). Updates values in a several 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * columns in the table using where condition in update command 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testUpdate4() { 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int newValue1 = -1; 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int newValue2 = -2; 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String updateQuery = "UPDATE " + DatabaseCreator.TEST_TABLE1 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + " SET field2=" + newValue1 + ", field3=" + newValue2 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + " WHERE id > 10"; 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int num = statement.executeUpdate(updateQuery); 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int expectedUpdated = 9; 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Not all records in the database were updated", 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project expectedUpdated, num); 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String selectQuery = "SELECT id, field2, field3 FROM " 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + DatabaseCreator.TEST_TABLE1; 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet result = statement.executeQuery(selectQuery); 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (result.next()) { 207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int id = result.getInt("id"); 208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // TODO getBigDecimal is not supported 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// int value2 = result.getBigDecimal("field2").intValue(); 210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// int value3 = result.getBigDecimal("field3").intValue(); 211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// if (id > expectedUpdated + 1) { 212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// assertEquals("The field field2 was not updated", newValue1, 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// value2); 214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// assertEquals("The field field3 was not updated", newValue2, 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// value3); 216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// } else { 217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// assertEquals("The field field2 was not updated", id, value2); 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// assertEquals("The field field3 was not updated", id, value3); 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// } 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project result.close(); 222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected exception" + e.getMessage()); 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 228229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * UpdateFunctionalityTest#testUpdate5(). Updates values in one 229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * columns in the table using condition 230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testUpdate5() { 232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int factor = 3; 233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String updateQuery = "UPDATE " + DatabaseCreator.TEST_TABLE1 234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + " SET field2=field2 *" + factor; 235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String selectQuery = "SELECT field2 FROM " 237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + DatabaseCreator.TEST_TABLE1; 238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet result = statement.executeQuery(selectQuery); 239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project HashSet<BigDecimal> values = new HashSet<BigDecimal>(); 240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // TODO getBigDecimal is not supported 241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// while (result.next()) { 242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// values.add(BigDecimal.valueOf(result.getBigDecimal("field2") 243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// .intValue() 244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// * factor)); 245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// } 246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int num = statement.executeUpdate(updateQuery); 248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Not all records in the database were updated", 249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project numberOfRecords, num); 250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project result = statement.executeQuery(selectQuery); 251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // TODO getBigDecimal is not supported 252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// while (result.next()) { 253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// BigDecimal value = result.getBigDecimal("field2"); 254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// assertTrue("Wrong value of field2 after update" 255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// + value.intValue(), values.remove(value)); 256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// } 257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Not all records were updated", values.isEmpty()); 258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project result.close(); 260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected exception" + e.getMessage()); 262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 266229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * UpdateFunctionalityTest#testUpdate6(). Sets value of field2 to 267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * default 268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testUpdate6() { 270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String updateQuery = "UPDATE " + DatabaseCreator.TEST_TABLE1 271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + " SET field2='1'"; 272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int num = statement.executeUpdate(updateQuery); 275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Not all records in the database were updated", 276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project numberOfRecords, num); 277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String selectQuery = "SELECT field2 FROM " 278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + DatabaseCreator.TEST_TABLE1; 279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet result = statement.executeQuery(selectQuery); 280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // TODO getBigDecimal is not supported 281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// while (result.next()) { 282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// assertEquals("value of field2 should be default ", 283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// DatabaseCreator.defaultInt, result.getBigDecimal( 284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// "field2").intValue()); 285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// } 286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project result.close(); 287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected exception" + e.getMessage()); 289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 293229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * UpdateFunctionalityTest#testUpdate7(). Updates records in the 294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * table using subquery in update command 295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testUpdate7() { 297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String updateQuery = "UPDATE " + DatabaseCreator.TEST_TABLE1 298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + " SET field2='1' WHERE id < ( SELECT COUNT(*) FROM " 299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + DatabaseCreator.TEST_TABLE2 + " WHERE finteger > 15)"; 300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int num = statement.executeUpdate(updateQuery); 302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int expectedUpdated = 4; 303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Not all records in the database were updated", 304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project expectedUpdated, num); 305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String selectQuery = "SELECT id, field2 FROM " 306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + DatabaseCreator.TEST_TABLE1; 307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet result = statement.executeQuery(selectQuery); 308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (result.next()) { 309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // TODO getBigDecimal is not supported 310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// int value = result.getBigDecimal("field2").intValue(); 311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// int id = result.getInt("id"); 312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// if (id < expectedUpdated) { 313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// assertEquals("value of field2 should be default ", 314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// DatabaseCreator.defaultInt, value); 315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// } else { 316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// assertEquals("wrong value of field2", id, value); 317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// } 318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project result.close(); 320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected exception" + e.getMessage()); 322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 326229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * UpdateFunctionalityTest#testUpdate8(). Sets value of field2 to 327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * NULL 328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testUpdate8() { 330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String updateQuery = "UPDATE " + DatabaseCreator.TEST_TABLE1 331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + " SET field2=NULL"; 332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int num = statement.executeUpdate(updateQuery); 335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Not all records in the database were updated", 336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project numberOfRecords, num); 337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String selectQuery = "SELECT field2 FROM " 338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + DatabaseCreator.TEST_TABLE1; 339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet result = statement.executeQuery(selectQuery); 340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (result.next()) { 341adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("value of field2 should be NULL", result 342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getObject("field2")); 343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project result.close(); 345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected exception" + e.getMessage()); 347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 349adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 350