/* * 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.Exception; import SQLite.JDBCDriver; import dalvik.annotation.TestLevel; import dalvik.annotation.TestTargetClass; import dalvik.annotation.TestTargetNew; import dalvik.annotation.TestTargets; import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManager; import java.sql.DriverPropertyInfo; import java.sql.SQLException; @TestTargetClass(JDBCDriver.class) public class JDBCDriverTest extends JDBCDriverFunctionalTest { /** * The SQLite db file. */ private JDBCDriver jDriver; private Driver returnedDriver; public void setUp() throws ClassNotFoundException, SQLException, InstantiationException, IllegalAccessException, Exception { try { super.setUp(); returnedDriver = DriverManager.getDriver(getConnectionURL()); if (returnedDriver instanceof JDBCDriver) { this.jDriver = (JDBCDriver) returnedDriver; } } catch (SQLException e) { System.out.println("Cannot get driver"); e.printStackTrace(); } catch (Exception e) { System.out.println("DB Setup failed"); e.printStackTrace(); } } /** * @tests JDBCDriver#JDBCDriver() */ @TestTargetNew( level = TestLevel.COMPLETE, notes = "constructor test", method = "JDBCDriver", args = {} ) public void testJDBCDriver() { assertTrue(returnedDriver instanceof JDBCDriver); } /** * @tests JDBCDriver#acceptsURL(String) */ @TestTargets({ @TestTargetNew( level = TestLevel.COMPLETE, notes = "constructor test", method = "acceptsURL", args = {java.lang.String.class} ), @TestTargetNew( level = TestLevel.COMPLETE, notes = "constructor test", // we have to list the Driver target explicitly, since SQLite // is not part of the target packages clazz = Driver.class, method = "acceptsURL", args = {java.lang.String.class} ) }) public void testAcceptsURL() { try { if (this.jDriver != null) { assertTrue(jDriver.acceptsURL(getConnectionURL())); } else { fail("no Driver available"); } } catch (SQLException e) { fail("Driver does not accept URL"); e.printStackTrace(); } } /** * @tests JDBCDriver#connect(String, java.util.Properties) */ @TestTargets({ @TestTargetNew( level = TestLevel.COMPLETE, notes = "method test", method = "connect", args = {java.lang.String.class, java.util.Properties.class} ), @TestTargetNew( level = TestLevel.COMPLETE, // we have to list the Driver target explicitly, since SQLite // is not part of the target packages clazz = Driver.class, notes = "method test", method = "connect", args = {java.lang.String.class, java.util.Properties.class} ) }) public void testConnect() { try { if (this.jDriver != null) { Connection c = jDriver.connect(getConnectionURL(), null); assertFalse(c.isClosed()); DriverManager.getConnection(getConnectionURL()); } else { fail("no Driver available"); } } catch (SQLException e) { fail("Driver does not connect"); e.printStackTrace(); } } /** * @tests JDBCDriver#getMajorVersion() */ @TestTargets({ @TestTargetNew( level = TestLevel.COMPLETE, notes = "method test", method = "getMajorVersion", args = {} ), @TestTargetNew( level = TestLevel.COMPLETE, // we have to list the Driver target explicitly, since SQLite // is not part of the target packages clazz = Driver.class, notes = "method test", method = "getMajorVersion", args = {} ) }) public void testGetMajorVersion() { if (this.jDriver != null) { assertTrue(jDriver.getMajorVersion() > 0); } else { fail("no Driver available"); } } /** * @tests JDBCDriver#getMinorVersion() */ @TestTargets({ @TestTargetNew( level = TestLevel.COMPLETE, notes = "method test", method = "getMinorVersion", args = {} ), @TestTargetNew( level = TestLevel.COMPLETE, notes = "method test", // we have to list the Driver target explicitly, since SQLite // is not part of the target packages clazz = Driver.class, method = "getMinorVersion", args = {} ) }) public void testGetMinorVersion() { if (this.jDriver != null) { assertTrue(jDriver.getMinorVersion() > 0); } else { fail("no version information available"); } } /** * @tests JDBCDriver#getPropertyInfo(String, java.util.Properties) */ @TestTargets({ @TestTargetNew( level = TestLevel.COMPLETE, notes = "method test", method = "getPropertyInfo", args = {java.lang.String.class, java.util.Properties.class} ), @TestTargetNew( level = TestLevel.COMPLETE, notes = "method test", // we have to list the Driver target explicitly, since SQLite // is not part of the target packages clazz = Driver.class, method = "getPropertyInfo", args = {java.lang.String.class, java.util.Properties.class} ) }) public void testGetPropertyInfo() { DriverPropertyInfo[] info = null; try { if (this.jDriver != null) { info = jDriver.getPropertyInfo(getConnectionURL(), null); assertNotNull(info); assertTrue(info.length > 0); } else { fail("no Driver available"); } } catch (SQLException e) { fail("Driver property details not available"); e.printStackTrace(); } assertNotNull(info); } /** * @tests JDBCDriver#jdbcCompliant() */ @TestTargets({ @TestTargetNew( level = TestLevel.COMPLETE, notes = "method test", method = "jdbcCompliant", args = {} ), @TestTargetNew( level = TestLevel.COMPLETE, // we have to list the Driver target explicitly, since SQLite // is not part of the target packages clazz = Driver.class, notes = "method test", method = "jdbcCompliant", args = {} ) }) public void testJdbcCompliant() { if (this.jDriver != null) { assertFalse(jDriver.jdbcCompliant()); } else { fail("no version information available"); } } /** * Tears down an unit test by calling the tearDown method of the super class * and deleting the SQLite test db file. */ @Override protected void tearDown() throws SQLException { super.tearDown(); } }