+ private class NoDbMock extends Squelch {
+ private ConnectionMock m_conn;
+
+ public NoDbMock() {
+ m_conn = new ConnectionMock();
+ }
+
+ @Override
+ Connection getConnection() throws ClassNotFoundException, SQLException, SquelchException
+ {
+ return m_conn;
+ }
+
+ public ConnectionMock mock_getConnectionMock()
+ {
+ return m_conn;
+ }
+ }
+
+ @Test
+ public void test_getDriverFor_success() throws SquelchException {
+ Squelch squelch = new Squelch();
+
+ Object[][] data = {
+ { "jdbc:sqlserver://HOST:1433;DatabaseName=DATABASE", MsSqlDriver.class },
+ { "jdbc:mysql://HOST/DATABASE", MySqlDriver.class },
+ { "jdbc:mysql://HOST:5150/DATABASE", MySqlDriver.class },
+ { "jdbc:oracle:thin:@//localhost:1521/XE", OracleDriver.class },
+ { "jdbc:oracle:thin:@neptune.acme.com:1521:T10A", OracleDriver.class },
+ { "jdbc:oracle:thin:@127.0.0.1:1521:T10A", OracleDriver.class },
+ { "jdbc:oracle:oci:@TEST", OracleDriver.class },
+ { "jdbc:oracle:oci:@192.168.1.1:1521/XE", OracleDriver.class },
+ { "jdbc:postgresql://HOST/DATABASE", PostgresqlDriver.class }
+ };
+
+ for (Object[] datum : data) {
+ String jdbcUrl = (String)datum[0];
+
+ @SuppressWarnings("unchecked")
+ Class<? extends DbDriver> expected = (Class<? extends DbDriver>)datum[1];
+
+ DbDriver actual = squelch.getDriverFor(jdbcUrl);
+
+ assertEquals(expected, actual.getClass());
+ }
+ }
+
+ @Test
+ public void test_getDriverFor_notFound()
+ {
+ String[] data = { null, "bogus:host/user/pass", "The quick brown fox jumps over the lazy dog" };
+ Squelch squelch = new Squelch();
+
+ for (String datum : data) {
+ try {
+ squelch.getDriverFor(datum);
+ fail("Should have thrown a SquelchException");
+ }
+ catch (SquelchException exc) {
+ ; // This is the success path.
+ }
+ }
+ }