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