1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Copyright (C) 2008 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 1799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilsonpackage libcore.sqlite; 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport SQLite.Constants; 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport SQLite.Database; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport SQLite.Stmt; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport SQLite.TableResult; 2399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilsonimport java.sql.Connection; 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.support.DatabaseCreator; 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.support.Support_SQL; 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilsonpublic class OldStmtTest extends OldSQLiteTest { 28f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 29ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson private Database db; 30ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson private Stmt st; 31ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson 32ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson private static final String CREATE_ALL_TYPES = "create table type (" 33ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + " BoolVal BOOLEAN," 34ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + " IntVal INT," 35ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + " LongVal LONG," 36ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + " Bint BIGINT," 37ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + " Tint TINYINT," 38ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + " Sint SMALLINT," 39ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + " Mint MEDIUMINT," 40ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + " IntegerVal INTEGER," 41ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + " RealVal REAL," 42ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + " DoubleVal DOUBLE," 43ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + " FloatVal FLOAT," 44ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + " DecVal DECIMAL," 45ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + " NumVal NUMERIC," 46ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + " charStr CHAR(20)," 47ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + " dateVal DATE," 48ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + " timeVal TIME," 49ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + " TS TIMESTAMP," 50ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + " DT DATETIME," 51ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + " TBlob TINYBLOB," 52ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + " BlobVal BLOB," 53ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + " MBlob MEDIUMBLOB," 54ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + " LBlob LONGBLOB," 55ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + " TText TINYTEXT," 56ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + " TextVal TEXT," 57ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + " MText MEDIUMTEXT," 58ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + " LText LONGTEXT," 59ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + " MaxLongVal BIGINT," 60ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + " MinLongVal BIGINT," 61ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + " validURL URL," 62ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + " invalidURL URL);"; 63ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson 64ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson static final String INSERT_ALL_TYPES = "insert into type (" 65ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + "BoolVal, IntVal, LongVal, Bint, Tint, Sint, Mint,IntegerVal, RealVal, DoubleVal, " 66ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + "FloatVal, DecVal,NumVal, charStr, dateVal, timeVal, TS,DT, TBlob, BlobVal, MBlob, " 67ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + "LBlob,TText, TextVal, MText, LText, MaxLongVal, MinLongVal, validURL, invalidURL) " 68ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + "values (1, -1, 22, 2, 33,3, 1, 2, 3.9, 23.2, 33.3, 44,5, 'test string', '1799-05-26'," 69ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + "'12:35:45', '2007-10-09 14:28:02.0','1221-09-22 10:11:55', 1, 2, 3, 4," 70ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + "'Test text message tiny', 'Test text', 'Test text message medium'," 71ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + "'Test text message long', " + Long.MAX_VALUE + ", " + Long.MIN_VALUE + "," 72ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson + "null, null);"; 73ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson 74ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson static final String ALL_TYPES_TABLE = "type"; 75ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson 76ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson @Override public void setUp() throws Exception { 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super.setUp(); 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Support_SQL.loadDriver(); 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project db = new Database(); 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project db.open(dbFile.getPath(), 0); 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project db.exec(DatabaseCreator.CREATE_TABLE_SIMPLE1, null); 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project DatabaseCreator.fillSimpleTable1(conn); 83f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 84ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson st = new Stmt(); 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 87ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson @Override public void tearDown() throws Exception { 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (st != null) { 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 9099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.close(); 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 9499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson db.close(); 9599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson Connection con = Support_SQL.getConnection(); 9699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson con.close(); 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super.tearDown(); 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 99f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 10099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson public void testStmt() throws Exception { 101ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson db.prepare(""); 102f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 10499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.step(); 10599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson fail("Cannot execute non prepared Stmt"); 106ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson } catch (SQLite.Exception expected) { 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 109f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 11099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson public void testPrepare() throws Exception { 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = db.prepare(""); 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.prepare(); 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("statement is closed"); 115ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson } catch (SQLite.Exception expected) { 116ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson assertEquals("stmt already closed", expected.getMessage()); 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 11999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st = new Stmt(); 12099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st = db.prepare("select * from " + DatabaseCreator.SIMPLE_TABLE1); 12199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertFalse(st.prepare()); 12299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st = new Stmt(); 12399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st = db.prepare("insert into " + DatabaseCreator.SIMPLE_TABLE1 12499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson + " values (:one,:two,:three)"); 12599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertFalse(st.prepare()); 12699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st = new Stmt(); 12799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st = db.prepare("insert into " + DatabaseCreator.SIMPLE_TABLE1 12899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson + " values (:one,:two,:three)"); 12999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.bind(1, 1); 13099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.bind(2, 10); 13199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.bind(3, 30); 13299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertFalse(st.prepare()); 13399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st = db.prepare("select * from " + DatabaseCreator.SIMPLE_TABLE1 13499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson + "; " + "delete from " + DatabaseCreator.SIMPLE_TABLE1 13599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson + " where id = 5; " + "insert into " 13699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson + DatabaseCreator.SIMPLE_TABLE1 + " values(5, 10, 20); " 13799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson + "select * from " + DatabaseCreator.SIMPLE_TABLE1 + ";"); 13899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertTrue(st.prepare()); 13999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertTrue(st.prepare()); 14099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertTrue(st.prepare()); 14199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertFalse(st.prepare()); 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 143f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 14499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson public void testStep() throws Exception { 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.step(); 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception expected"); 148ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson } catch (SQLite.Exception expected) { 149ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson assertEquals("stmt already closed", expected.getMessage()); 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 151f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 15299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st = new Stmt(); 15399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st = db.prepare("select name from sqlite_master where type = 'table'"); 15499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.step(); 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 156f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 15799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson public void testClose() throws Exception { 15899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st = db.prepare("insert into " + DatabaseCreator.SIMPLE_TABLE1 15999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson + " values (:one,:two,:three)"); 16099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.close(); 161f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.step(); 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test fails"); 165ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson } catch (SQLite.Exception expected) { 166ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson assertEquals("stmt already closed", expected.getMessage()); 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 169f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testReset() throws Exception { 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project db.exec("create table TEST (res integer not null)", null); 172f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = db.prepare("insert into TEST values (:one);"); 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.bind(1, 1); 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.step(); 176f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // verify that parameter is still bound 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.reset(); 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(1,st.bind_parameter_count()); 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.step(); 181f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TableResult count = db.get_table("select count(*) from TEST where res=1", null); 183f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] row0 = (String[]) count.rows.elementAt(0); 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(2, Integer.parseInt(row0[0])); 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 187f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testClear_bindings() { 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.clear_bindings(); 191ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson } catch (SQLite.Exception expected) { 192ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson assertEquals("unsupported", expected.getMessage()); 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 195f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 19699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson public void testBindIntInt() throws Exception { 19799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson int input = 0; 19899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson int maxVal = Integer.MAX_VALUE; 19999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson int minVal = Integer.MIN_VALUE; 200f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 20199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson db.exec("create table TEST (res integer)", null); 20299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st = db.prepare("insert into TEST values (:one);"); 20399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.bind(1, input); 20499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.step(); 205f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 20699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.reset(); 20799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.bind(1,maxVal); 20899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.step(); 209f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 21099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.reset(); 21199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.bind(1,minVal); 21299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.step(); 213f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 21499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson TableResult r = db.get_table("select * from TEST"); 215f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 21699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson String[] row0 = (String[]) r.rows.elementAt(0); 21799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertEquals(input,Integer.parseInt(row0[0])); 218f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 21999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson String[] row1 = (String[]) r.rows.elementAt(1); 22099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertEquals(maxVal,Integer.parseInt(row1[0])); 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 22299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson String[] row2 = (String[]) r.rows.elementAt(2); 22399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertEquals(minVal,Integer.parseInt(row2[0])); 224f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.bind(1,Integer.MIN_VALUE); 228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception expected"); 229ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson } catch (SQLite.Exception expected) { 230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 232f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 23399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson public void testBindIntLong() throws Exception { 23499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson long input = 0; 23599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson long maxVal = Long.MAX_VALUE; 23699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson long minVal = Long.MIN_VALUE; 237f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 23899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson db.exec("create table TEST (res long)", null); 23999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st = db.prepare("insert into TEST values (:one);"); 24099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.bind(1, input); 24199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.step(); 242f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 24399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.reset(); 24499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.bind(1,maxVal); 24599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.step(); 246f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 24799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.reset(); 24899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.bind(1,minVal); 24999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.step(); 250f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 25199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson TableResult r = db.get_table("select * from TEST"); 252f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 25399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson String[] row0 = (String[]) r.rows.elementAt(0); 25499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertEquals(input,Long.parseLong(row0[0])); 255f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 25699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson String[] row1 = (String[]) r.rows.elementAt(1); 25799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertEquals(maxVal,Long.parseLong(row1[0])); 258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 25999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson String[] row2 = (String[]) r.rows.elementAt(2); 26099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertEquals(minVal,Long.parseLong(row2[0])); 261f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.bind(1,Long.MIN_VALUE); 265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception expected"); 266ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson } catch (SQLite.Exception expected) { 267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 269f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 27099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson public void testBindIntDouble() throws Exception { 27199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson double input = 0.0; 27299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson double maxVal = Double.MAX_VALUE; 27399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson double minVal = Double.MIN_VALUE; 27499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson double negInf = Double.NEGATIVE_INFINITY; 27599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson double posInf = Double.POSITIVE_INFINITY; 27699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson double nan = Double.NaN; 277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 27899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson db.exec("create table TEST (res double)", null); 27999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st = db.prepare("insert into TEST values (:one);"); 28099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.bind(1, input); 28199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.step(); 282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 28399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.reset(); 28499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.bind(1, maxVal); 28599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.step(); 286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 28799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.reset(); 28899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.bind(1, minVal); 28999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.step(); 290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 29199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.reset(); 29299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.bind(1, negInf); 29399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.step(); 294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 29599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.reset(); 29699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.bind(1, posInf); 29799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.step(); 298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 29999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.reset(); 30099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.bind(1, nan); 30199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.step(); 302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 30499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson TableResult r = db.get_table("select * from TEST"); 305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 30699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson String[] row0 = (String[]) r.rows.elementAt(0); 30799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertTrue(Double.compare(input, Double.parseDouble(row0[0])) == 0); 308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 30999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson String[] row1 = (String[]) r.rows.elementAt(1); 31099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertFalse(Double.compare(maxVal, Double.parseDouble(row1[0])) == 0); 31199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertTrue(Double.compare(maxVal, Double.parseDouble(row1[0])) < 0); 31299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertTrue(Double.isInfinite(Double.parseDouble(row1[0]))); 313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 31499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson String[] row2 = (String[]) r.rows.elementAt(2); 31599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertTrue(Double.compare(minVal, Double.parseDouble(row2[0])) == 0); 316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 31799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson String[] row3 = (String[]) r.rows.elementAt(3); 31899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertEquals("Double.NEGATIVE_INFINITY SQLite representation", 31999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson "-Inf", row3[0]); 320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 32199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson String[] row4 = (String[]) r.rows.elementAt(4); 32299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertEquals("Double.POSITIVE_INFINITY SQLite representation", 32399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson "Inf", row4[0]); 324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 32599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson String[] row5 = (String[]) r.rows.elementAt(4); 32699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertEquals("Double.Nan SQLite representation", "Inf", row5[0]); 327f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.bind(1,0.0); 331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception expected"); 332ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson } catch (SQLite.Exception expected) { 333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 33699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson public void testBindIntByteArray() throws Exception { 337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String name = "Hello World"; 33899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson byte[] b = name.getBytes(); 33999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson String stringInHex = ""; 34099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson 34199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson db.exec(DatabaseCreator.CREATE_TABLE_PARENT, null); 34299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st = db.prepare("insert into " + DatabaseCreator.PARENT_TABLE 34399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson + " values (:one, :two);"); 34499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.bind(1, 2); 34599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.bind(2, b); 34699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.step(); 347f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 34899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson //compare what was stored with input based on Hex representation 34999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // since type of column is CHAR 35099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson TableResult r = db.get_table("select * from " 35199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson + DatabaseCreator.PARENT_TABLE); 35299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson String[] row = (String[]) r.rows.elementAt(0); 353f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 35499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson for (byte aByte : b) { 35599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson stringInHex += Integer.toHexString(aByte); 356adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 35799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson stringInHex = "X'" + stringInHex + "'"; 35899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertTrue(stringInHex.equalsIgnoreCase(row[1])); 359f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 360adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 361adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.bind(1,name.getBytes()); 363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception expected"); 364ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson } catch (SQLite.Exception expected) { 365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 36899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson public void testBindIntString() throws Exception { 369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String name = "Hello World"; 37099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson db.exec(DatabaseCreator.CREATE_TABLE_PARENT, null); 37199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st = db.prepare("insert into " + DatabaseCreator.PARENT_TABLE 37299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson + " values (:one, :two);"); 37399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.bind(1, 2); 37499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.bind(2, name); 37599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.step(); 376f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 37799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson TableResult r = db.get_table("select * from " 37899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson + DatabaseCreator.PARENT_TABLE); 37999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson String[] row = (String[]) r.rows.elementAt(0); 38099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertEquals(name,row[1]); 381f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 383adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.bind(1,name); 385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception expected"); 386ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson } catch (SQLite.Exception expected) { 387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 389f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 39099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson public void testBindInt() throws Exception { 391adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 392adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = db.prepare("insert into " + DatabaseCreator.SIMPLE_TABLE1 393adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + " values (:one,:two,:three)"); 394adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.bind(4); 395adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.bind(1, 4); 396adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.bind(2, 10); 397adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.bind(3, 30); 398adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.step(); 399ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson fail(); 400ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson } catch (SQLite.Exception expected) { 401adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // What happens if null is bound to non existing variable position 402ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson assertEquals("parameter position out of bounds", expected.getMessage()); 403adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 404f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 405adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // functional tests 406f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 407adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 408adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.reset(); 409adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.bind(1); 410adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.bind(2, 10); 411adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.bind(3, 30); 412adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.step(); 413ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson fail(); 414ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson } catch (SQLite.Exception expected) { 415adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // What happens if null is bound to NON NULL field 416ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson assertEquals("SQL logic error or missing database", expected.getMessage()); 417adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 418adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 41999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.reset(); 42099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.bind(1, 3); 42199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.bind(2); 42299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.bind(3, 30); 42399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.step(); 424adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 425f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 426adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testBind_zeroblob() { 427adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 428adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.bind_zeroblob(1, 128); 429ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson fail(); 430ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson } catch (SQLite.Exception expected) { 431ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson assertEquals("unsupported", expected.getMessage()); 432adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 433adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 434f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 43599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson public void testBind_parameter_count() throws Exception { 436adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 437adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.bind_parameter_count(); 438ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson fail(); 439ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson } catch (SQLite.Exception expected) { 440ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson assertEquals("stmt already closed", expected.getMessage()); 441adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 442f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 44399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st = db.prepare("insert into " + DatabaseCreator.SIMPLE_TABLE1 44499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson + " values (:one,:two,:three)"); 44599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertEquals(3, st.bind_parameter_count()); 446f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 44799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st = db.prepare("insert into " + DatabaseCreator.SIMPLE_TABLE1 44899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson + " values (?, ?, ?)"); 44999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertEquals(3, st.bind_parameter_count()); 450f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 45199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st = db.prepare("select * from " + DatabaseCreator.SIMPLE_TABLE1); 45299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertEquals(0, st.bind_parameter_count()); 453f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 454adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 455adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 456adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.bind_parameter_count(); 457adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception expected"); 458ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson } catch (SQLite.Exception expected) { 459adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 460f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 461adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 462adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 463adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testBind_parameter_name() { 464adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 465adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.bind_parameter_name(1); 466adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception expected"); 467ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson } catch (SQLite.Exception expected) { 468ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson assertEquals("stmt already closed", expected.getMessage()); 469adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 470f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 471adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 472adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = db.prepare("insert into " + DatabaseCreator.SIMPLE_TABLE1 473adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + " values (:one,:two,:three)"); 474adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(":one", st.bind_parameter_name(1)); 475adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(":two", st.bind_parameter_name(2)); 476adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(":three", st.bind_parameter_name(3)); 47799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.bind_parameter_name(4); 47899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson fail(); 479ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson } catch (SQLite.Exception expected) { 480ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson assertEquals("parameter position out of bounds", expected.getMessage()); 481adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 482adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 483adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 48499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson public void testBind_parameter_index() throws Exception { 485adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 486adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.bind_parameter_index(""); 487adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception expected"); 488ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson } catch (SQLite.Exception expected) { 489ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson assertEquals("stmt already closed", expected.getMessage()); 490adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 491adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 49299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st = db.prepare("insert into " + DatabaseCreator.SIMPLE_TABLE1 49399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson + " values (:one,:two,:three)"); 49499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertEquals(3, st.bind_parameter_index(":three")); 495adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 49699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st = db.prepare("insert into " + DatabaseCreator.SIMPLE_TABLE1 49799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson + " values (:one,:two,:three)"); 49899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertEquals(0, st.bind_parameter_index(":t")); 499adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 50099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st = db.prepare("insert into " + DatabaseCreator.SIMPLE_TABLE1 50199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson + " values (?, ?, ?)"); 50299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertEquals(0, st.bind_parameter_index("?")); 503adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 504adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 505adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testColumn_int() throws Exception { 506ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson db.exec(CREATE_ALL_TYPES, null); 507ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson db.exec(INSERT_ALL_TYPES, null); 508f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 509ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson Object columnObject; 510ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson int intColumn; 511adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String selectStmt = "select * from "+DatabaseCreator.SIMPLE_TABLE1; 512f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 513adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = db.prepare(selectStmt); 514adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.step(); 515adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // select 'speed' value 516adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project columnObject = st.column(1); 517adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project intColumn = st.column_int(1); 518adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(intColumn); 519f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 520adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Integer".equalsIgnoreCase(st.column_decltype(1))); 521adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int stSpeed = Integer.parseInt(columnObject.toString()); 522adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(stSpeed); 523adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals( intColumn, stSpeed); 524adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(10,stSpeed); 525f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 526ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson selectStmt = "select TextVal from "+ ALL_TYPES_TABLE; 527f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 528adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = db.prepare(selectStmt); 529adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.step(); 530ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson st.column_int(0); 531adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 532f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 53399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson public void testColumn_long() throws Exception { 534ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson Object columnObject; 535ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson long longColumn; 53699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson String selectStmt = "select * from "+DatabaseCreator.SIMPLE_TABLE1; 53799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st = db.prepare(selectStmt); 53899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.step(); 53999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson columnObject = st.column(1); 54099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson longColumn = st.column_long(1); 54199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertNotNull(longColumn); 54299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // column declared as integer 54399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertTrue("Integer".equalsIgnoreCase(st.column_decltype(1))); 54499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson int stSpeed = Integer.parseInt(columnObject.toString()); 54599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertNotNull(stSpeed); 54699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertEquals( longColumn, stSpeed); 547f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 548adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 549adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.column_long(4); 550adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception expected"); 551ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson } catch (SQLite.Exception expected) { 552ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson assertEquals("column out of bounds", expected.getMessage()); 553adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 554f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 555adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 556adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.column_long(-1); 557adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception expected"); 558ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson } catch (SQLite.Exception expected) { 559ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson assertEquals("column out of bounds", expected.getMessage()); 560adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 561adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 562f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 563adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testColumn_double() throws Exception { 564ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson db.exec(CREATE_ALL_TYPES, null); 565ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson db.exec(INSERT_ALL_TYPES, null); 566f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 567ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson double doubleColumn; 568adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project double actualVal = 23.2; 569ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson String selectStmt = "select DoubleVal from "+ ALL_TYPES_TABLE; 570f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 571adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = db.prepare(selectStmt); 572adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.step(); 573adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // select double value 574adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project doubleColumn = st.column_double(0); 575adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(doubleColumn); 576f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 577adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("DOUBLE".equalsIgnoreCase(st.column_decltype(0))); 578adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(doubleColumn); 579adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals( actualVal, doubleColumn); 580f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 581adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Exception test 582ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson selectStmt = "select dateVal from "+ ALL_TYPES_TABLE; 583f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 584adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = db.prepare(selectStmt); 585adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.step(); 586adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // select double value 587ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson st.column_double(0); 588adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 589adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 590adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testColumn_bytes() throws Exception { 591adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project db.exec("create table B(id integer primary key, val blob)",null); 592adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project db.exec("insert into B values(1, zeroblob(128))", null); 593adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = db.prepare("select val from B where id = 1"); 594adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(st.step()); 595ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson st.column_bytes(0); 596adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 597adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 598adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testColumn_string() throws Exception { 599ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson db.exec(CREATE_ALL_TYPES, null); 600ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson db.exec(INSERT_ALL_TYPES, null); 601f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 602ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson String stringColumn; 603adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String actualVal = "test string"; 604ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson String selectStmt = "select charStr from "+ ALL_TYPES_TABLE; 605f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 606adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = db.prepare(selectStmt); 607adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.step(); 608adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // select string value 609adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project stringColumn = st.column_string(0); 610adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(stringColumn); 611f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 612adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("CHAR(20)".equalsIgnoreCase(st.column_decltype(0))); 613adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(stringColumn); 614adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals( actualVal, stringColumn); 615f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 616adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Exception test 617ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson selectStmt = "select DoubleVal from "+ ALL_TYPES_TABLE; 618f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 619adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = db.prepare(selectStmt); 620adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.step(); 621ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson st.column_string(0); 622adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 623f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 624adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testColumn_type() throws Exception { 625ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson db.exec(CREATE_ALL_TYPES, null); 626ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson db.exec(INSERT_ALL_TYPES, null); 627ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson st = db.prepare("select * from " + ALL_TYPES_TABLE); 628adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.step(); 629adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 630adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Exception test 631adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 632adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.column_type(100); 633ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson fail(); 634ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson } catch (SQLite.Exception expected) { 635adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 636f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 637adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /* 638adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Dictionary 639f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 640adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final int SQLITE_INTEGER = 1; 641adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final int SQLITE_FLOAT = 2; 642adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final int SQLITE_BLOB = 4; 643adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final int SQLITE_NULL = 5; 644adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final int SQLITE3_TEXT = 3; 645adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final int SQLITE_NUMERIC = -1; 646adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 647adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 648adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(Constants.SQLITE3_TEXT, st.column_type(23)); // ok TEXT 649adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(Constants.SQLITE3_TEXT, st.column_type(13)); // CHAR(20) 650adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 651adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(Constants.SQLITE_FLOAT, st.column_type(8)); 652adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(Constants.SQLITE_FLOAT, st.column_type(9)); 653adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(Constants.SQLITE_FLOAT, st.column_type(10)); // FLOAT 654adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 655adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < 8; i++) { 656adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Expected Integer at position " + i, 657adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Constants.SQLITE_INTEGER, st.column_type(i)); 658adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 659adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 660adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(Constants.SQLITE_NULL, st.column_type(28)); 661adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(Constants.SQLITE_NULL, st.column_type(29)); 662adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 663adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Failing tests 664b721f937760de5299f8daf02bfeceda3d9fe7d0aElliott Hughes assertTrue("INTEGER".equalsIgnoreCase(st.column_decltype(12))); 665b721f937760de5299f8daf02bfeceda3d9fe7d0aElliott Hughes assertEquals(Constants.SQLITE_INTEGER, st.column_type(12)); 666f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 667adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("FLOAT".equalsIgnoreCase(st.column_decltype(11))); 668adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(Constants.SQLITE_FLOAT, st.column_type(11)); // FLOAT -> 669adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // got INTEGER 670adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("BLOB".equalsIgnoreCase(st.column_decltype(19))); 671adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(Constants.SQLITE_BLOB, st.column_type(19)); // Blob got 672adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // INTEGER 673adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 674adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 675adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 676adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 67799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson * Wrong value is returned in case of a prepared statement to which a '*' bound 678adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 679adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testColumn_count() throws Exception { 680adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String selectStmt = "select * from "+DatabaseCreator.SIMPLE_TABLE1; 681adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = db.prepare(selectStmt); 682f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 683adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(3, st.column_count()); 684f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 685adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.step(); 686adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int columnCount = st.column_count(); 687adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(columnCount); 688adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals( 3, columnCount); 689f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 690adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // actual prepared statement 691adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project selectStmt = "select ? from "+DatabaseCreator.SIMPLE_TABLE1; 692adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = db.prepare(selectStmt); 693f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 694adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(3, st.column_count()); 695f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 696adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.bind(1, "*"); 697adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.step(); 698adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project columnCount = st.column_count(); 699adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(columnCount); 700adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals( 3, columnCount); 701adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 702adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 703adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testColumn() throws Exception { 704ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson Object columnObject; 705ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson int intColumn; 70699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson String selectStmt = "select * from "+DatabaseCreator.SIMPLE_TABLE1; 707ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson db.get_table(selectStmt); 70899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st = db.prepare(selectStmt); 70999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.step(); 71099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson columnObject = st.column(1); 71199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson intColumn = st.column_int(1); 71299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertNotNull(intColumn); 71399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertTrue("Integer".equalsIgnoreCase(st.column_decltype(1))); 71499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson int stSpeed = Integer.parseInt(columnObject.toString()); 71599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertNotNull(stSpeed); 71699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertEquals( intColumn, stSpeed); 717f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 718adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 719adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(columnObject); 720ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson ((Integer) columnObject).intValue(); 721adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Cast to Integer should fail"); 722ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson } catch (ClassCastException expected) { 723adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 724f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 725adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 726adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.column(4); 727adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception expected"); 728ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson } catch (SQLite.Exception expected) { 729ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson assertEquals("column out of bounds", expected.getMessage()); 730adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 731f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 732adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 733adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.column(-1); 734adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception expected"); 735ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson } catch (SQLite.Exception expected) { 736ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson assertEquals("column out of bounds", expected.getMessage()); 737adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 738adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 739adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 740adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testColumn_table_name() { 741adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 742adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = db.prepare("select * from " + DatabaseCreator.SIMPLE_TABLE1); 74399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.column_table_name(1); 74499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson fail("Function is now supported."); 745ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson } catch (SQLite.Exception expected) { 746ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson assertEquals("unsupported", expected.getMessage()); 747adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 748adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 749adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 750adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testColumn_database_name() { 751adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 752adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = db.prepare("insert into " + DatabaseCreator.SIMPLE_TABLE1 753adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + " values (:one,:two,:three)"); 75499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.column_database_name(1); 75599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson fail("Function is now supported."); 756ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson } catch (SQLite.Exception expected) { 757ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson assertEquals("unsupported", expected.getMessage()); 758adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 759adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 760adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 761adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testColumn_decltype() throws Exception { 762ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson db.exec(CREATE_ALL_TYPES, null); 763ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson db.exec(INSERT_ALL_TYPES, null); 764ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson st = db.prepare("select * from " + ALL_TYPES_TABLE); 765adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.step(); 766adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 767adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Exception test 768adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 769adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.column_decltype(100); 770ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson fail(); 771ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson } catch (SQLite.Exception expected) { 772adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 773adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 774adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(st.column_decltype(0), "BOOLEAN".equalsIgnoreCase(st 775adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .column_decltype(0))); 776adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(st.column_decltype(1), "INT".equalsIgnoreCase(st 777adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .column_decltype(1))); 778adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(st.column_decltype(2), "LONG".equalsIgnoreCase(st 779adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .column_decltype(2))); 780adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(st.column_decltype(3), "BIGINT".equalsIgnoreCase(st 781adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .column_decltype(3))); 782adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(st.column_decltype(4), "TINYINT".equalsIgnoreCase(st 783adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .column_decltype(4))); 784adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(st.column_decltype(5), "SMALLINT".equalsIgnoreCase(st 785adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .column_decltype(5))); 786adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(st.column_decltype(6), "MEDIUMINT".equalsIgnoreCase(st 787adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .column_decltype(6))); 788adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(st.column_decltype(7), "INTEGER".equalsIgnoreCase(st 789adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .column_decltype(7))); 790adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(st.column_decltype(8), "REAL".equalsIgnoreCase(st 791adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .column_decltype(8))); 792adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(st.column_decltype(9), "DOUBLE".equalsIgnoreCase(st 793adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .column_decltype(9))); 794adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(st.column_decltype(10), "FLOAT".equalsIgnoreCase(st 795adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .column_decltype(10))); 796adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(st.column_decltype(11), "DECIMAL".equalsIgnoreCase(st 797adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .column_decltype(11))); 798adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(st.column_decltype(12), "NUMERIC".equalsIgnoreCase(st 799adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .column_decltype(12))); 800adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(st.column_decltype(13), "CHAR(20)".equalsIgnoreCase(st 801adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .column_decltype(13))); 802adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 803adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(st.column_decltype(19), "BLOB".equalsIgnoreCase(st 804adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .column_decltype(19))); 805adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 806adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(st.column_decltype(23), "TEXT".equalsIgnoreCase(st 807adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .column_decltype(23))); 808adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(st.column_decltype(28), "URL".equalsIgnoreCase(st 809adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .column_decltype(28))); 810adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(st.column_decltype(29), "URL".equalsIgnoreCase(st 811adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .column_decltype(29))); 812adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 813f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 814adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testColumn_origin_name() { 815adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 816adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = db.prepare("select * from " + DatabaseCreator.SIMPLE_TABLE1); 81799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.column_origin_name(1); 81899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson fail("Function is now supported."); 819ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson } catch (SQLite.Exception expected) { 820ef24f9fea4d8f9c4b1c707214b78203adadf1b88Jesse Wilson assertEquals("unsupported", expected.getMessage()); 821adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 822adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 823adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 824