blob: 4c2c374d120664f160a6b337519f353af6981193 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 org.apache.harmony.sql.tests.javax.sql;
import dalvik.annotation.TestTargets;
import dalvik.annotation.TestLevel;
import dalvik.annotation.TestTargetNew;
import dalvik.annotation.TestTargetClass;
import junit.framework.TestCase;
import java.sql.SQLException;
import java.io.Serializable;
import javax.sql.ConnectionEvent;
import javax.sql.PooledConnection;
import org.apache.harmony.testframework.serialization.SerializationTest;
import org.apache.harmony.testframework.serialization.SerializationTest.SerializableAssert;
@TestTargetClass(ConnectionEvent.class)
public class ConnectionEventTest extends TestCase {
/**
* @tests {@link javax.sql.ConnectionEvent#ConnectionEvent(PooledConnection)}
*
*/
@TestTargetNew(
level = TestLevel.SUFFICIENT,
notes = "functional test missing but not feasible: no implementation available.",
method = "ConnectionEvent",
args = {javax.sql.PooledConnection.class}
)
public void testConstructorConnection() {
try {
new ConnectionEvent(null);
fail("illegal argument exception expected");
} catch (IllegalArgumentException e) {
}
Impl_PooledConnection ipc = new Impl_PooledConnection();
ConnectionEvent ce = new ConnectionEvent(ipc);
assertSame(ipc, ce.getSource());
assertNull(ce.getSQLException());
//cross test
ConnectionEvent ce2 = new ConnectionEvent(ipc,null);
assertSame(ce2.getSource(),ce.getSource());
}
/**
* @tests {@link javax.sql.ConnectionEvent#ConnectionEvent(PooledConnection, SQLException)}
*/
@TestTargetNew(
level = TestLevel.SUFFICIENT,
notes = "functional test missing but not feasible: no implementation available.",
method = "ConnectionEvent",
args = {javax.sql.PooledConnection.class, java.sql.SQLException.class}
)
public void testConstructorConnectionSQLException() {
try {
new ConnectionEvent(null, null);
fail("illegal argument exception expected");
} catch (IllegalArgumentException e) {
}
Impl_PooledConnection ipc = new Impl_PooledConnection();
ConnectionEvent ce = new ConnectionEvent(ipc, null);
assertSame(ipc, ce.getSource());
assertNull(ce.getSQLException());
SQLException e = new SQLException();
ce = new ConnectionEvent(ipc, e);
assertSame(ipc, ce.getSource());
assertSame(e, ce.getSQLException());
}
/**
* @tests {@link javax.sql.ConnectionEvent#getSQLException()}
*/
@TestTargetNew(
level = TestLevel.SUFFICIENT,
notes = "functional test missing but not feasible: no implementation available.",
method = "getSQLException",
args = {}
)
public void testGetSQLException() {
Impl_PooledConnection ipc = new Impl_PooledConnection();
ConnectionEvent ce = new ConnectionEvent(ipc);
ConnectionEvent ce2 = new ConnectionEvent(ipc, null);
assertNull(ce.getSQLException());
assertEquals(ce2.getSQLException(), ce.getSQLException());
SQLException e = new SQLException();
ConnectionEvent ce3 = new ConnectionEvent(ipc, e);
assertNotNull(ce3.getSQLException());
assertNotSame(ce3.getSQLException(), ce2.getSQLException());
}
@TestTargetNew(
level = TestLevel.SUFFICIENT,
notes = "",
method = "!SerializationSelf",
args = {}
)
public void testSerializationSelf() throws Exception {
Impl_PooledConnection ipc = new Impl_PooledConnection();
SQLException e = new SQLException();
ConnectionEvent ce = new ConnectionEvent(ipc, e);
SerializationTest.verifySelf(ce, CONNECTIONEVENT_COMPARATOR);
}
@TestTargetNew(
level = TestLevel.SUFFICIENT,
notes = "",
method = "!Serialization",
args = {}
)
public void testSerializationCompatibility() throws Exception {
Impl_PooledConnection ipc = new Impl_PooledConnection();
SQLException nextSQLException = new SQLException("nextReason",
"nextSQLState", 33);
int vendorCode = 10;
SQLException sqlException = new SQLException("reason", "SQLState",
vendorCode);
sqlException.setNextException(nextSQLException);
ConnectionEvent ce = new ConnectionEvent(ipc, sqlException);
SerializationTest.verifyGolden(this, ce, CONNECTIONEVENT_COMPARATOR);
}
private static final SerializableAssert CONNECTIONEVENT_COMPARATOR = new SerializableAssert() {
public void assertDeserialized(Serializable initial,
Serializable deserialized) {
ConnectionEvent ceInitial = (ConnectionEvent) initial;
ConnectionEvent ceDeser = (ConnectionEvent) deserialized;
SQLException initThr = ceInitial.getSQLException();
SQLException dserThr = ceDeser.getSQLException();
// verify SQLState
assertEquals(initThr.getSQLState(), dserThr.getSQLState());
// verify vendorCode
assertEquals(initThr.getErrorCode(), dserThr.getErrorCode());
// verify next
if (initThr.getNextException() == null) {
assertNull(dserThr.getNextException());
}
}
};
}