diff options
author | Peter Hallam <peterhal@google.com> | 2010-04-26 12:53:37 -0700 |
---|---|---|
committer | Peter Hallam <peterhal@google.com> | 2010-04-27 16:26:27 -0700 |
commit | cec4dd4b1d33f78997603d0f89c0d0e56e64dbcd (patch) | |
tree | e71d43da21749bfeb4524b0adec05c91d1f89a5f /sql/src/test/java/tests/SQLite/StmtTest.java | |
parent | f205f06be1ce65f132be1b7c850675086f26c0f7 (diff) | |
download | libcore-cec4dd4b1d33f78997603d0f89c0d0e56e64dbcd.zip libcore-cec4dd4b1d33f78997603d0f89c0d0e56e64dbcd.tar.gz libcore-cec4dd4b1d33f78997603d0f89c0d0e56e64dbcd.tar.bz2 |
merge more modules into luni
Diffstat (limited to 'sql/src/test/java/tests/SQLite/StmtTest.java')
-rw-r--r-- | sql/src/test/java/tests/SQLite/StmtTest.java | 1250 |
1 files changed, 0 insertions, 1250 deletions
diff --git a/sql/src/test/java/tests/SQLite/StmtTest.java b/sql/src/test/java/tests/SQLite/StmtTest.java deleted file mode 100644 index 7a37154..0000000 --- a/sql/src/test/java/tests/SQLite/StmtTest.java +++ /dev/null @@ -1,1250 +0,0 @@ -/* - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package tests.SQLite; - -import SQLite.Constants; -import SQLite.Database; -import SQLite.Exception; -import SQLite.Stmt; -import SQLite.TableResult; -import dalvik.annotation.BrokenTest; -import dalvik.annotation.KnownFailure; -import dalvik.annotation.TestLevel; -import dalvik.annotation.TestTargetNew; -import dalvik.annotation.TestTargetClass; - - -import tests.support.DatabaseCreator; -import tests.support.Support_SQL; - -import java.sql.Connection; -import java.sql.SQLException; - -@TestTargetClass(Stmt.class) -public class StmtTest extends SQLiteTest { - - private static Database db = null; - - private static Stmt st = null; - - private static final String createAllTypes = - "create table type (" + - - " BoolVal BOOLEAN," + " IntVal INT," + " LongVal LONG," - + " Bint BIGINT," + " Tint TINYINT," + " Sint SMALLINT," - + " Mint MEDIUMINT, " + - - " IntegerVal INTEGER, " + " RealVal REAL, " - + " DoubleVal DOUBLE, " + " FloatVal FLOAT, " - + " DecVal DECIMAL, " + - - " NumVal NUMERIC, " + " charStr CHAR(20), " - + " dateVal DATE, " + " timeVal TIME, " + " TS TIMESTAMP, " - + - - " DT DATETIME, " + " TBlob TINYBLOB, " + " BlobVal BLOB, " - + " MBlob MEDIUMBLOB, " + " LBlob LONGBLOB, " + - - " TText TINYTEXT, " + " TextVal TEXT, " - + " MText MEDIUMTEXT, " + " LText LONGTEXT, " + - - " MaxLongVal BIGINT, MinLongVal BIGINT, "+ - - " validURL URL, invalidURL URL "+ - - ");"; - - static final String insertAllTypes = - "insert into type (BoolVal, IntVal, LongVal, Bint, Tint, Sint, Mint," - + "IntegerVal, RealVal, DoubleVal, FloatVal, DecVal," - + "NumVal, charStr, dateVal, timeVal, TS," - + "DT, TBlob, BlobVal, MBlob, LBlob," - + "TText, TextVal, MText, LText, MaxLongVal, MinLongVal," - + " validURL, invalidURL" - + ") " - + "values (1, -1, 22, 2, 33," - + "3, 1, 2, 3.9, 23.2, 33.3, 44," - + "5, 'test string', '1799-05-26', '12:35:45', '2007-10-09 14:28:02.0'," - + "'1221-09-22 10:11:55', 1, 2, 3, 4," - + "'Test text message tiny', 'Test text'," - + " 'Test text message medium', 'Test text message long', " - + Long.MAX_VALUE+", "+Long.MIN_VALUE+", " - + "null, null "+ - ");"; - - static final String allTypesTable = "type"; - - public void setUp() throws java.lang.Exception { - super.setUp(); - Support_SQL.loadDriver(); - db = new Database(); - db.open(dbFile.getPath(), 0); - db.exec(DatabaseCreator.CREATE_TABLE_SIMPLE1, null); - DatabaseCreator.fillSimpleTable1(conn); - - } - - public void tearDown() { - if (st != null) { - try { - st.close(); - } catch (Exception e) { - - } - } - try { - db.close(); - Connection con = Support_SQL.getConnection(); - con.close(); -// dbFile.delete(); - } catch (Exception e) { - fail("Exception in tearDown: "+e.getMessage()); - } catch (SQLException e) { - fail("SQLException in tearDown: "+e.getMessage()); - } - super.tearDown(); - } - - /** - * @tests {@link Stmt#Stmt()} - */ - @TestTargetNew( - level = TestLevel.COMPLETE, - notes = "constructor test", - method = "Stmt", - args = {} - ) - public void testStmt() { - Stmt st = new Stmt(); - assertNotNull(st); - try { - Stmt actual = db.prepare(""); - assertNotNull(st); - // no black box test assertEquals(actual.error_code,st.error_code); - } catch (Exception e) { - fail("Statement setup fails: "+e.getMessage()); - e.printStackTrace(); - } - - try { - st.step(); - fail("Cannot execute non prepared Stmt"); - } catch (Exception e) { - //ok - } - } - - /** - * @tests {@link Stmt#finalize()} - */ - @TestTargetNew( - level = TestLevel.NOT_FEASIBLE, - notes = "method test", - method = "finalize", - args = {} - ) - public void testFinalize() { - - } - - /** - * @tests {@link Stmt#prepare()} - */ - @TestTargetNew( - level = TestLevel.COMPLETE, - notes = "method test", - method = "prepare", - args = {} - ) - public void testPrepare() { - try { - st = db.prepare(""); - st.prepare(); - fail("statement is closed"); - } catch (Exception e) { - assertEquals("stmt already closed", e.getMessage()); - } - - try { - st = new Stmt(); - st = db.prepare("select * from " + DatabaseCreator.SIMPLE_TABLE1); - assertFalse(st.prepare()); - st = new Stmt(); - st = db.prepare("insert into " + DatabaseCreator.SIMPLE_TABLE1 - + " values (:one,:two,:three)"); - assertFalse(st.prepare()); - st = new Stmt(); - st = db.prepare("insert into " + DatabaseCreator.SIMPLE_TABLE1 - + " values (:one,:two,:three)"); - st.bind(1, 1); - st.bind(2, 10); - st.bind(3, 30); - assertFalse(st.prepare()); - st = db.prepare("select * from " + DatabaseCreator.SIMPLE_TABLE1 - + "; " + "delete from " + DatabaseCreator.SIMPLE_TABLE1 - + " where id = 5; " + "insert into " - + DatabaseCreator.SIMPLE_TABLE1 + " values(5, 10, 20); " - + "select * from " + DatabaseCreator.SIMPLE_TABLE1 + ";"); - assertTrue(st.prepare()); - assertTrue(st.prepare()); - assertTrue(st.prepare()); - assertFalse(st.prepare()); - } catch (Exception e) { - fail("statement should be ready for execution: " - + e.getMessage()); - e.printStackTrace(); - } - } - - /** - * @tests {@link Stmt#step()} - */ - @TestTargetNew( - level = TestLevel.COMPLETE, - notes = "method test", - method = "step", - args = {} - ) - public void testStep() { - try { - st.step(); - fail("Exception expected"); - } catch (Exception e) { - assertEquals("stmt already closed", e.getMessage()); - } - - try { - st = new Stmt(); - st = db.prepare("select name from sqlite_master where type = 'table'"); - st.step(); - } catch (Exception e) { - fail("test fails"); - } - - } - - /** - * @tests {@link Stmt#close()} - */ - @TestTargetNew( - level = TestLevel.COMPLETE, - notes = "method test", - method = "close", - args = {} - ) - public void testClose() { - try { - st = db.prepare("insert into " + DatabaseCreator.SIMPLE_TABLE1 - + " values (:one,:two,:three)"); - st.close(); - } catch (Exception e) { - fail("Test fails"); - e.printStackTrace(); - } - - try { - st.step(); - fail("Test fails"); - } catch (Exception e) { - assertEquals("stmt already closed", e.getMessage()); - } - } - - /** - * @throws Exception - * @tests {@link Stmt#reset()} - */ - @TestTargetNew( - level = TestLevel.COMPLETE, - notes = "method test", - method = "reset", - args = {} - ) - public void testReset() throws Exception { - db.exec("create table TEST (res integer not null)", null); - - st = db.prepare("insert into TEST values (:one);"); - st.bind(1, 1); - st.step(); - - // verify that parameter is still bound - st.reset(); - assertEquals(1,st.bind_parameter_count()); - st.step(); - - TableResult count = db.get_table("select count(*) from TEST where res=1", null); - - String[] row0 = (String[]) count.rows.elementAt(0); - assertEquals(2, Integer.parseInt(row0[0])); - } - - /** - * @tests {@link Stmt#clear_bindings()} - */ - @TestTargetNew( - level = TestLevel.COMPLETE, - notes = "not supported", - method = "clear_bindings", - args = {} - ) - public void testClear_bindings() { - try { - st.clear_bindings(); - } catch (Exception e) { - assertEquals("unsupported", e.getMessage()); - } - } - - /** - * @tests {@link Stmt#bind(int, int)} - */ - @TestTargetNew( - level = TestLevel.COMPLETE, - notes = "method test", - method = "bind", - args = {int.class, int.class} - ) - public void testBindIntInt() { - try { - int input = 0; - int maxVal = Integer.MAX_VALUE; - int minVal = Integer.MIN_VALUE; - - db.exec("create table TEST (res integer)", null); - st = db.prepare("insert into TEST values (:one);"); - st.bind(1, input); - st.step(); - - st.reset(); - st.bind(1,maxVal); - st.step(); - - st.reset(); - st.bind(1,minVal); - st.step(); - - TableResult r = db.get_table("select * from TEST"); - - String[] row0 = (String[]) r.rows.elementAt(0); - assertEquals(input,Integer.parseInt(row0[0])); - - String[] row1 = (String[]) r.rows.elementAt(1); - assertEquals(maxVal,Integer.parseInt(row1[0])); - - String[] row2 = (String[]) r.rows.elementAt(2); - assertEquals(minVal,Integer.parseInt(row2[0])); - - } catch (Exception e) { - fail("Error in test setup: "+e.getMessage()); - e.printStackTrace(); - } - - try { - st.close(); - st.bind(1,Integer.MIN_VALUE); - fail("Exception expected"); - } catch (Exception e) { - //ok - } - } - - /** - * @tests {@link Stmt#bind(int, long)} - */ - @TestTargetNew( - level = TestLevel.COMPLETE, - notes = "method test", - method = "bind", - args = {int.class, long.class} - ) - public void testBindIntLong() { - try { - long input = 0; - long maxVal = Long.MAX_VALUE; - long minVal = Long.MIN_VALUE; - - db.exec("create table TEST (res long)", null); - st = db.prepare("insert into TEST values (:one);"); - st.bind(1, input); - st.step(); - - st.reset(); - st.bind(1,maxVal); - st.step(); - - st.reset(); - st.bind(1,minVal); - st.step(); - - TableResult r = db.get_table("select * from TEST"); - - String[] row0 = (String[]) r.rows.elementAt(0); - assertEquals(input,Long.parseLong(row0[0])); - - String[] row1 = (String[]) r.rows.elementAt(1); - assertEquals(maxVal,Long.parseLong(row1[0])); - - String[] row2 = (String[]) r.rows.elementAt(2); - assertEquals(minVal,Long.parseLong(row2[0])); - - } catch (Exception e) { - fail("Error in test setup: "+e.getMessage()); - e.printStackTrace(); - } - - try { - st.close(); - st.bind(1,Long.MIN_VALUE); - fail("Exception expected"); - } catch (Exception e) { - //ok - } - } - - /** - * @tests {@link Stmt#bind(int, double)} - */ - @TestTargetNew( - level = TestLevel.COMPLETE, - notes = "method test", - method = "bind", - args = {int.class, double.class} - ) - public void testBindIntDouble() { - try { - double input = 0.0; - double maxVal = Double.MAX_VALUE; - double minVal = Double.MIN_VALUE; - double negInf = Double.NEGATIVE_INFINITY; - double posInf = Double.POSITIVE_INFINITY; - double nan = Double.NaN; - - db.exec("create table TEST (res double)", null); - st = db.prepare("insert into TEST values (:one);"); - st.bind(1, input); - st.step(); - - st.reset(); - st.bind(1, maxVal); - st.step(); - - st.reset(); - st.bind(1, minVal); - st.step(); - - st.reset(); - st.bind(1, negInf); - st.step(); - - st.reset(); - st.bind(1, posInf); - st.step(); - - st.reset(); - st.bind(1, nan); - st.step(); - - - TableResult r = db.get_table("select * from TEST"); - - String[] row0 = (String[]) r.rows.elementAt(0); - assertTrue(Double.compare(input, Double.parseDouble(row0[0])) == 0); - - String[] row1 = (String[]) r.rows.elementAt(1); - assertFalse(Double.compare(maxVal, Double.parseDouble(row1[0])) == 0); - assertTrue(Double.compare(maxVal, Double.parseDouble(row1[0])) < 0); - assertTrue(Double.isInfinite(Double.parseDouble(row1[0]))); - - String[] row2 = (String[]) r.rows.elementAt(2); - assertTrue(Double.compare(minVal, Double.parseDouble(row2[0])) == 0); - - String[] row3 = (String[]) r.rows.elementAt(3); - assertEquals("Double.NEGATIVE_INFINITY SQLite representation", - "-Inf", row3[0]); - - String[] row4 = (String[]) r.rows.elementAt(4); - assertEquals("Double.POSITIVE_INFINITY SQLite representation", - "Inf", row4[0]); - - String[] row5 = (String[]) r.rows.elementAt(4); - assertEquals("Double.Nan SQLite representation", "Inf", row5[0]); - - } catch (Exception e) { - fail("Error in test setup: " + e.getMessage()); - e.printStackTrace(); - } - - try { - st.close(); - st.bind(1,0.0); - fail("Exception expected"); - } catch (Exception e) { - //ok - } - } - - /** - * @tests {@link Stmt#bind(int, byte[])} - */ - @TestTargetNew( - level = TestLevel.COMPLETE, - notes = "", - method = "bind", - args = {int.class, byte[].class} - ) - public void testBindIntByteArray() { - - String name = "Hello World"; - - try { - byte[] b = new byte[name.getBytes().length]; - b = name.getBytes(); - String stringInHex = ""; - - db.exec(DatabaseCreator.CREATE_TABLE_PARENT, null); - st = db.prepare("insert into " + DatabaseCreator.PARENT_TABLE - + " values (:one, :two);"); - st.bind(1, 2); - st.bind(2, b); - st.step(); - - //compare what was stored with input based on Hex representation - // since type of column is CHAR - TableResult r = db.get_table("select * from " - + DatabaseCreator.PARENT_TABLE); - String[] row = (String[]) r.rows.elementAt(0); - - for (byte aByte : b) { - stringInHex += Integer.toHexString(aByte); - } - stringInHex = "X'" + stringInHex + "'"; - assertTrue(stringInHex.equalsIgnoreCase(row[1])); - - } catch (Exception e) { - fail("Error in test setup: "+e.getMessage()); - e.printStackTrace(); - } - - try { - st.close(); - st.bind(1,name.getBytes()); - fail("Exception expected"); - } catch (Exception e) { - //ok - } - } - - /** - * @tests {@link Stmt#bind(int, String)} - */ - @TestTargetNew( - level = TestLevel.COMPLETE, - notes = "method test", - method = "bind", - args = {int.class, java.lang.String.class} - ) - public void testBindIntString() { - String name = "Hello World"; - - try { - - db.exec(DatabaseCreator.CREATE_TABLE_PARENT, null); - st = db.prepare("insert into " + DatabaseCreator.PARENT_TABLE - + " values (:one, :two);"); - st.bind(1, 2); - st.bind(2, name); - st.step(); - - TableResult r = db.get_table("select * from " - + DatabaseCreator.PARENT_TABLE); - String[] row = (String[]) r.rows.elementAt(0); - assertEquals(name,row[1]); - - } catch (Exception e) { - fail("Error in test setup: "+e.getMessage()); - e.printStackTrace(); - } - - try { - st.close(); - st.bind(1,name); - fail("Exception expected"); - } catch (Exception e) { - //ok - } - } - - /** - * @tests {@link Stmt#bind(int)} - */ - @TestTargetNew( - level = TestLevel.COMPLETE, - notes = "method test", - method = "bind", - args = {int.class} - ) - public void testBindInt() { - - try { - st = db.prepare("insert into " + DatabaseCreator.SIMPLE_TABLE1 - + " values (:one,:two,:three)"); - st.bind(4); - st.bind(1, 4); - st.bind(2, 10); - st.bind(3, 30); - st.step(); - fail("Test failes"); - } catch (Exception e) { - // What happens if null is bound to non existing variable position - assertEquals("parameter position out of bounds" , e.getMessage()); - } - - // functional tests - - try { - st.reset(); - st.bind(1); - st.bind(2, 10); - st.bind(3, 30); - st.step(); - fail("Test failes"); - } catch (Exception e) { - // What happens if null is bound to NON NULL field - assertEquals("SQL logic error or missing database", e.getMessage()); - } - - try { - st.reset(); - st.bind(1, 3); - st.bind(2); - st.bind(3, 30); - st.step(); - } catch (Exception e) { - fail("Error in test setup : " + e.getMessage()); - } - - } - - /** - * @tests {@link Stmt#bind_zeroblob(int, int)} - */ - @TestTargetNew( - level = TestLevel.NOT_FEASIBLE, - notes = "not supported", - method = "bind_zeroblob", - args = {int.class, int.class} - ) - public void testBind_zeroblob() { - try { - st.bind_zeroblob(1, 128); - } catch (Exception e) { - assertEquals("unsupported", e.getMessage()); - } - } - - /** - * @tests {@link Stmt#bind_parameter_count()} - */ - @TestTargetNew( - level = TestLevel.COMPLETE, - notes = "method test", - method = "bind_parameter_count", - args = {} - ) - public void testBind_parameter_count() { - try { - st.bind_parameter_count(); - } catch (Exception e) { - assertEquals("stmt already closed", e.getMessage()); - } - - try { - st = db.prepare("insert into " + DatabaseCreator.SIMPLE_TABLE1 - + " values (:one,:two,:three)"); - assertEquals(3, st.bind_parameter_count()); - } catch (Exception e) { - fail("Error in test setup : " + e.getMessage()); - e.printStackTrace(); - } - - try { - st = db.prepare("insert into " + DatabaseCreator.SIMPLE_TABLE1 - + " values (?, ?, ?)"); - assertEquals(3, st.bind_parameter_count()); - } catch (Exception e) { - fail("Error in test setup : " + e.getMessage()); - e.printStackTrace(); - } - - try { - st = db.prepare("select * from " + DatabaseCreator.SIMPLE_TABLE1); - assertEquals(0, st.bind_parameter_count()); - } catch (Exception e) { - fail("Error in test setup : " + e.getMessage()); - e.printStackTrace(); - } - - try { - st.close(); - st.bind_parameter_count(); - fail("Exception expected"); - } catch (Exception e) { - //ok - } - - } - - /** - * @tests {@link Stmt#bind_parameter_name(int)} - */ - @TestTargetNew( - level = TestLevel.COMPLETE, - notes = "method test", - method = "bind_parameter_name", - args = {int.class} - ) - public void testBind_parameter_name() { - try { - st.bind_parameter_name(1); - fail("Exception expected"); - } catch (Exception e) { - assertEquals("stmt already closed", e.getMessage()); - } - - try { - st = db.prepare("insert into " + DatabaseCreator.SIMPLE_TABLE1 - + " values (:one,:two,:three)"); - assertEquals(":one", st.bind_parameter_name(1)); - assertEquals(":two", st.bind_parameter_name(2)); - assertEquals(":three", st.bind_parameter_name(3)); - String name = st.bind_parameter_name(4); - } catch (Exception e) { - assertEquals("parameter position out of bounds",e.getMessage()); - } - } - - /** - * @tests {@link Stmt#bind_parameter_index(String)} - */ - @TestTargetNew( - level = TestLevel.COMPLETE, - notes = "method test", - method = "bind_parameter_index", - args = {java.lang.String.class} - ) - public void testBind_parameter_index() { - - try { - st.bind_parameter_index(""); - fail("Exception expected"); - } catch (Exception e) { - assertEquals("stmt already closed", e.getMessage()); - } - - try { - st = db.prepare("insert into " + DatabaseCreator.SIMPLE_TABLE1 - + " values (:one,:two,:three)"); - assertEquals(3, st.bind_parameter_index(":three")); - } catch (Exception e) { - fail("Error in test setup : " + e.getMessage()); - e.printStackTrace(); - } - - try { - st = db.prepare("insert into " + DatabaseCreator.SIMPLE_TABLE1 - + " values (:one,:two,:three)"); - assertEquals(0, st.bind_parameter_index(":t")); - } catch (Exception e) { - fail("Error in test setup : " + e.getMessage()); - e.printStackTrace(); - } - - try { - st = db.prepare("insert into " + DatabaseCreator.SIMPLE_TABLE1 - + " values (?, ?, ?)"); - assertEquals(0, st.bind_parameter_index("?")); - } catch (Exception e) { - fail("Error in test setup : " + e.getMessage()); - e.printStackTrace(); - } - - } - - /** - * @throws Exception - * @tests {@link Stmt#column_int(int)} - */ - @TestTargetNew( - level = TestLevel.COMPLETE, - notes = "method test", - method = "column_int", - args = {int.class} - ) - public void testColumn_int() throws Exception { - db.exec(createAllTypes, null); - db.exec(insertAllTypes, null); - - int columnObjectCastFromLong; - Object columnObject = null; - int intColumn = 0; - String selectStmt = "select * from "+DatabaseCreator.SIMPLE_TABLE1; - - st = db.prepare(selectStmt); - st.step(); - // select 'speed' value - columnObject = st.column(1); - intColumn = st.column_int(1); - assertNotNull(intColumn); - - assertTrue("Integer".equalsIgnoreCase(st.column_decltype(1))); - int stSpeed = Integer.parseInt(columnObject.toString()); - assertNotNull(stSpeed); - assertEquals( intColumn, stSpeed); - assertEquals(10,stSpeed); - - selectStmt = "select TextVal from "+allTypesTable; - - st = db.prepare(selectStmt); - st.step(); - // select double value - try { - st.column_int(0); - } catch (Exception e) { - //ok - } - } - - /** - * @tests {@link Stmt#column_long(int)} - */ - @TestTargetNew( - level = TestLevel.COMPLETE, - notes = "method test", - method = "column_long", - args = {int.class} - ) - public void testColumn_long() { - Object columnObject = null; - int columnObjectCastFromLong; - long longColumn = 0; - try { - String selectStmt = "select * from "+DatabaseCreator.SIMPLE_TABLE1; - st = db.prepare(selectStmt); - st.step(); - columnObject = st.column(1); - longColumn = st.column_long(1); - assertNotNull(longColumn); - // column declared as integer - assertTrue("Integer".equalsIgnoreCase(st.column_decltype(1))); - int stSpeed = Integer.parseInt(columnObject.toString()); - assertNotNull(stSpeed); - assertEquals( longColumn, stSpeed); - } catch (Exception e) { - fail("Error in test setup : " + e.getMessage()); - e.printStackTrace(); - } - - try { - st.column_long(4); - fail("Exception expected"); - } catch (Exception e) { - assertEquals( "column out of bounds" , e.getMessage()); - } - - try { - st.column_long(-1); - fail("Exception expected"); - } catch (Exception e) { - assertEquals( "column out of bounds" , e.getMessage()); - } - } - - /** - * @throws Exception - * @tests {@link Stmt#column_double(int)} - */ - @TestTargetNew( - level = TestLevel.COMPLETE, - notes = "method test", - method = "column_double", - args = {int.class} - ) - public void testColumn_double() throws Exception { - db.exec(createAllTypes, null); - db.exec(insertAllTypes, null); - - Object columnObject = null; - double doubleColumn = 0; - double actualVal = 23.2; - String selectStmt = "select DoubleVal from "+allTypesTable; - - st = db.prepare(selectStmt); - st.step(); - // select double value - doubleColumn = st.column_double(0); - assertNotNull(doubleColumn); - - assertTrue("DOUBLE".equalsIgnoreCase(st.column_decltype(0))); - assertNotNull(doubleColumn); - assertEquals( actualVal, doubleColumn); - - // Exception test - selectStmt = "select dateVal from "+allTypesTable; - - st = db.prepare(selectStmt); - st.step(); - // select double value - try { - st.column_double(0); - } catch (Exception e) { - //ok - } - - - } - - /** - * @throws Exception - * @tests {@link Stmt#column_bytes(int)} - */ - @TestTargetNew( - level = TestLevel.NOT_FEASIBLE, - notes = "not supported", - method = "column_bytes", - args = {int.class} - ) - public void testColumn_bytes() throws Exception { - - db.exec("create table B(id integer primary key, val blob)",null); - db.exec("insert into B values(1, zeroblob(128))", null); - st = db.prepare("select val from B where id = 1"); - assertTrue(st.step()); - try { - st.column_bytes(0); - } catch (Exception e) { - assertEquals("unsupported", e.getMessage()); - } - } - - /** - * @throws Exception - * @tests {@link Stmt#column_string(int)} - */ - @TestTargetNew( - level = TestLevel.COMPLETE, - notes = "method test", - method = "column_string", - args = {int.class} - ) - public void testColumn_string() throws Exception { - db.exec(createAllTypes, null); - db.exec(insertAllTypes, null); - - Object columnObject = null; - String stringColumn = ""; - String actualVal = "test string"; - String selectStmt = "select charStr from "+allTypesTable; - - st = db.prepare(selectStmt); - st.step(); - // select string value - stringColumn = st.column_string(0); - assertNotNull(stringColumn); - - assertTrue("CHAR(20)".equalsIgnoreCase(st.column_decltype(0))); - assertNotNull(stringColumn); - assertEquals( actualVal, stringColumn); - - // Exception test - selectStmt = "select DoubleVal from "+allTypesTable; - - st = db.prepare(selectStmt); - st.step(); - // select double value - try { - st.column_string(0); - } catch (Exception e) { - //ok - } - } - - public void testColumn_type() throws Exception { - db.exec(createAllTypes, null); - db.exec(insertAllTypes, null); - st = db.prepare("select * from " + allTypesTable); - st.step(); - - // Exception test - try { - st.column_type(100); - } catch (Exception e) { - // ok - } - - /* - Dictionary - - public static final int SQLITE_INTEGER = 1; - public static final int SQLITE_FLOAT = 2; - public static final int SQLITE_BLOB = 4; - public static final int SQLITE_NULL = 5; - public static final int SQLITE3_TEXT = 3; - public static final int SQLITE_NUMERIC = -1; - */ - - assertEquals(Constants.SQLITE3_TEXT, st.column_type(23)); // ok TEXT - assertEquals(Constants.SQLITE3_TEXT, st.column_type(13)); // CHAR(20) - - assertEquals(Constants.SQLITE_FLOAT, st.column_type(8)); - assertEquals(Constants.SQLITE_FLOAT, st.column_type(9)); - assertEquals(Constants.SQLITE_FLOAT, st.column_type(10)); // FLOAT - - for (int i = 0; i < 8; i++) { - assertEquals("Expected Integer at position " + i, - Constants.SQLITE_INTEGER, st.column_type(i)); - } - - assertEquals(Constants.SQLITE_NULL, st.column_type(28)); - assertEquals(Constants.SQLITE_NULL, st.column_type(29)); - - // Failing tests - assertTrue("INTEGER".equalsIgnoreCase(st.column_decltype(12))); - assertEquals(Constants.SQLITE_INTEGER, st.column_type(12)); - - assertTrue("FLOAT".equalsIgnoreCase(st.column_decltype(11))); - assertEquals(Constants.SQLITE_FLOAT, st.column_type(11)); // FLOAT -> - // got INTEGER - assertTrue("BLOB".equalsIgnoreCase(st.column_decltype(19))); - assertEquals(Constants.SQLITE_BLOB, st.column_type(19)); // Blob got - // INTEGER - - } - - /** - * @throws Exception - * @tests {@link Stmt#column_count() )} - */ - @TestTargetNew( - level = TestLevel.COMPLETE, - notes = "method test", - method = "column_count", - args = {} - ) - @KnownFailure("Wrong value is returned in case of a prepared statment to "+ - "which a '*' bound ") - public void testColumn_count() throws Exception { - - String selectStmt = "select * from "+DatabaseCreator.SIMPLE_TABLE1; - st = db.prepare(selectStmt); - - assertEquals(3, st.column_count()); - - st.step(); - int columnCount = st.column_count(); - assertNotNull(columnCount); - assertEquals( 3, columnCount); - - // actual prepared statement - selectStmt = "select ? from "+DatabaseCreator.SIMPLE_TABLE1; - st = db.prepare(selectStmt); - - assertEquals(3, st.column_count()); - - st.bind(1, "*"); - st.step(); - columnCount = st.column_count(); - assertNotNull(columnCount); - assertEquals( 3, columnCount); - - } - - /** - * @throws Exception - * @tests {@link Stmt#column(int) )} - */ - @TestTargetNew( - level = TestLevel.COMPLETE, - notes = "method test", - method = "column", - args = {int.class} - ) - public void testColumn() throws Exception { - Object columnObject = null; - int columnObjectCastFromLong; - int intColumn = 0; - try { - String selectStmt = "select * from "+DatabaseCreator.SIMPLE_TABLE1; - TableResult res = db.get_table(selectStmt); - st = db.prepare(selectStmt); - st.step(); - columnObject = st.column(1); - intColumn = st.column_int(1); - assertNotNull(intColumn); - assertTrue("Integer".equalsIgnoreCase(st.column_decltype(1))); - int stSpeed = Integer.parseInt(columnObject.toString()); - assertNotNull(stSpeed); - assertEquals( intColumn, stSpeed); - } catch (Exception e) { - fail("Error in test setup : " + e.getMessage()); - e.printStackTrace(); - } - - try { - assertNotNull(columnObject); - int dummy = ((Integer) columnObject).intValue(); - fail("Cast to Integer should fail"); - } catch (ClassCastException e) { - assertEquals("java.lang.Long", e.getMessage()); - } - - try { - st.column(4); - fail("Exception expected"); - } catch (Exception e) { - assertEquals( "column out of bounds" , e.getMessage()); - } - - try { - st.column(-1); - fail("Exception expected"); - } catch (Exception e) { - assertEquals( "column out of bounds" , e.getMessage()); - } - } - - /** - * @tests {@link Stmt#column_table_name(int)} - */ - @TestTargetNew( - level = TestLevel.NOT_FEASIBLE, - notes = "not supported", - method = "column_table_name", - args = {int.class} - ) - public void testColumn_table_name() { - try { - st = db.prepare("select * from " + DatabaseCreator.SIMPLE_TABLE1); - String name = st.column_table_name(1); - fail("Function is now supported."); - } catch (Exception e) { - assertEquals("unsupported", e.getMessage()); - } - } - - /** - * @tests {@link Stmt#column_database_name(int)} - */ - @TestTargetNew( - level = TestLevel.NOT_FEASIBLE, - notes = "not supported", - method = "column_database_name", - args = {int.class} - ) - public void testColumn_database_name() { - try { - st = db.prepare("insert into " + DatabaseCreator.SIMPLE_TABLE1 - + " values (:one,:two,:three)"); - String name = st.column_database_name(1); - fail("Function is now supported."); - } catch (Exception e) { - assertEquals("unsupported", e.getMessage()); - } - - } - - /** - * @throws Exception - * @tests {@link Stmt#column_decltype(int)} - */ - @TestTargetNew( - level = TestLevel.SUFFICIENT, - notes = "method test", - method = "column_decltype", - args = {int.class} - ) - public void testColumn_decltype() throws Exception { - db.exec(createAllTypes, null); - db.exec(insertAllTypes, null); - st = db.prepare("select * from " + allTypesTable); - st.step(); - - // Exception test - try { - st.column_decltype(100); - } catch (Exception e) { - // ok - } - - assertTrue(st.column_decltype(0), "BOOLEAN".equalsIgnoreCase(st - .column_decltype(0))); - assertTrue(st.column_decltype(1), "INT".equalsIgnoreCase(st - .column_decltype(1))); - assertTrue(st.column_decltype(2), "LONG".equalsIgnoreCase(st - .column_decltype(2))); - assertTrue(st.column_decltype(3), "BIGINT".equalsIgnoreCase(st - .column_decltype(3))); - assertTrue(st.column_decltype(4), "TINYINT".equalsIgnoreCase(st - .column_decltype(4))); - assertTrue(st.column_decltype(5), "SMALLINT".equalsIgnoreCase(st - .column_decltype(5))); - assertTrue(st.column_decltype(6), "MEDIUMINT".equalsIgnoreCase(st - .column_decltype(6))); - assertTrue(st.column_decltype(7), "INTEGER".equalsIgnoreCase(st - .column_decltype(7))); - assertTrue(st.column_decltype(8), "REAL".equalsIgnoreCase(st - .column_decltype(8))); - assertTrue(st.column_decltype(9), "DOUBLE".equalsIgnoreCase(st - .column_decltype(9))); - assertTrue(st.column_decltype(10), "FLOAT".equalsIgnoreCase(st - .column_decltype(10))); - assertTrue(st.column_decltype(11), "DECIMAL".equalsIgnoreCase(st - .column_decltype(11))); - assertTrue(st.column_decltype(12), "NUMERIC".equalsIgnoreCase(st - .column_decltype(12))); - assertTrue(st.column_decltype(13), "CHAR(20)".equalsIgnoreCase(st - .column_decltype(13))); - - assertTrue(st.column_decltype(19), "BLOB".equalsIgnoreCase(st - .column_decltype(19))); - - assertTrue(st.column_decltype(23), "TEXT".equalsIgnoreCase(st - .column_decltype(23))); - assertTrue(st.column_decltype(28), "URL".equalsIgnoreCase(st - .column_decltype(28))); - assertTrue(st.column_decltype(29), "URL".equalsIgnoreCase(st - .column_decltype(29))); - } - - /** - * @tests {@link Stmt#column_origin_name(int)} - */ - @TestTargetNew( - level = TestLevel.NOT_FEASIBLE, - notes = "not supported", - method = "column_origin_name", - args = {int.class} - ) - public void testColumn_origin_name() { - try { - st = db.prepare("select * from " + DatabaseCreator.SIMPLE_TABLE1); - String name = st.column_origin_name(1); - fail("Function is now supported."); - } catch (Exception e) { - assertEquals("unsupported", e.getMessage()); - } - } -} |