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