| /* |
| * 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()); |
| } |
| } |
| |
| }; |
| } |