/* * 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.java.sql; //import dalvik.annotation.TestTargetClass; //import dalvik.annotation.TestTargets; //import dalvik.annotation.TestLevel; //import dalvik.annotation.TestTargetNew; import java.io.Serializable; import java.sql.BatchUpdateException; import java.util.Arrays; import junit.framework.TestCase; import org.apache.harmony.testframework.serialization.SerializationTest; import org.apache.harmony.testframework.serialization.SerializationTest.SerializableAssert; //@TestTargetClass(BatchUpdateException.class) public class BatchUpdateExceptionTest extends TestCase { /* * ConstructorTest @TestTargetNew( level = TestLevel.COMPLETE, notes = "", method = "BatchUpdateException", args = {} ) */ public void testBatchUpdateException() { int[] theFinalStates1 = { 0 }; // Error Code state int[][] theFinalStates2 = { null }; // Update Counts array state String[] theFinalStates3 = { null }; // SQL State state value String[] theFinalStates4 = { null }; // Message state Exception[] theExceptions = { null }; BatchUpdateException aBatchUpdateException; int loopCount = 1; for (int i = 0; i < loopCount; i++) { try { aBatchUpdateException = new BatchUpdateException(); if (theExceptions[i] != null) { fail(); } assertEquals(i + " Final state mismatch: ", aBatchUpdateException.getErrorCode(), theFinalStates1[i]); assertEquals(i + " Final state mismatch: ", aBatchUpdateException.getUpdateCounts(), theFinalStates2[i]); assertEquals(i + " Final state mismatch: ", aBatchUpdateException.getSQLState(), theFinalStates3[i]); assertEquals(i + " Final state mismatch: ", aBatchUpdateException.getMessage(), theFinalStates4[i]); } catch (Exception e) { if (theExceptions[i] == null) { fail(i + "Unexpected exception"); } assertEquals(i + "Exception mismatch", e.getClass(), theExceptions[i].getClass()); assertEquals(i + "Exception mismatch", e.getMessage(), theExceptions[i].getMessage()); } // end try } // end for } // end method testBatchUpdateException /* * ConstructorTest @TestTargetNew( level = TestLevel.COMPLETE, notes = "", method = "BatchUpdateException", args = {int[].class} ) */ public void testBatchUpdateExceptionintArray() { int[][] init1 = { { 1, 2, 3 }, null }; int[] theFinalStates1 = { 0, 0 }; // Error Code state int[][] theFinalStates2 = init1; // Update Counts array state String[] theFinalStates3 = { null, null }; // SQL State state value String[] theFinalStates4 = { null, null }; // Message state Exception[] theExceptions = { null, null }; BatchUpdateException aBatchUpdateException; int loopCount = init1.length; for (int i = 0; i < loopCount; i++) { try { aBatchUpdateException = new BatchUpdateException(init1[i]); if (theExceptions[i] != null) { fail(); } assertEquals(i + " Final state mismatch: ", aBatchUpdateException.getErrorCode(), theFinalStates1[i]); assertEquals(i + " Final state mismatch: ", aBatchUpdateException.getUpdateCounts(), theFinalStates2[i]); assertEquals(i + " Final state mismatch: ", aBatchUpdateException.getSQLState(), theFinalStates3[i]); assertEquals(i + " Final state mismatch: ", aBatchUpdateException.getMessage(), theFinalStates4[i]); } catch (Exception e) { if (theExceptions[i] == null) { fail(i + "Unexpected exception"); } assertEquals(i + "Exception mismatch", e.getClass(), theExceptions[i].getClass()); assertEquals(i + "Exception mismatch", e.getMessage(), theExceptions[i].getMessage()); } // end try } // end for } // end method testBatchUpdateExceptionintArray /* * ConstructorTest @TestTargetNew( level = TestLevel.COMPLETE, notes = "", method = "BatchUpdateException", args = {java.lang.String.class, int[].class} ) */ public void testBatchUpdateExceptionStringintArray() { String[] init1 = { "a", "1", "valid1", "----", "&valid*", null, "", ".", "a" }; int[][] init2 = { { 1, 2, 3 }, {}, { 3 }, null, { 5, 5 }, { 6 }, { 121, 2, 1 }, { 1 }, { 1, 2 } }; int[] theFinalStates1 = { 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // Error Code // state // Update Counts array state int[][] theFinalStates2 = init2; // SQL State state value String[] theFinalStates3 = { null, null, null, null, null, null, null, null, null }; String[] theFinalStates4 = init1; // Message state Exception[] theExceptions = { null, null, null, null, null, null, null, null, null }; BatchUpdateException aBatchUpdateException; int loopCount = init1.length; for (int i = 0; i < loopCount; i++) { try { aBatchUpdateException = new BatchUpdateException(init1[i], init2[i]); if (theExceptions[i] != null) { fail(); } assertEquals(i + " Final state mismatch: ", aBatchUpdateException.getErrorCode(), theFinalStates1[i]); assertEquals(i + " Final state mismatch: ", aBatchUpdateException.getUpdateCounts(), theFinalStates2[i]); assertEquals(i + " Final state mismatch: ", aBatchUpdateException.getSQLState(), theFinalStates3[i]); assertEquals(i + " Final state mismatch: ", aBatchUpdateException.getMessage(), theFinalStates4[i]); } catch (Exception e) { if (theExceptions[i] == null) { fail(i + "Unexpected exception"); } assertEquals(i + "Exception mismatch", e.getClass(), theExceptions[i].getClass()); assertEquals(i + "Exception mismatch", e.getMessage(), theExceptions[i].getMessage()); } // end try } // end for } // end method testBatchUpdateExceptionStringintArray /* * ConstructorTest @TestTargetNew( level = TestLevel.COMPLETE, notes = "", method = "BatchUpdateException", args = {java.lang.String.class, java.lang.String.class, int[].class} ) */ public void testBatchUpdateExceptionStringStringintArray() { String[] init1 = { "a", "1", "valid1", "----", "&valid*", null, "", ".", "a", "a" }; String[] init2 = { "a", "1", "valid1", "----", "&valid*", "a", null, "", ".", "a" }; int[][] init3 = { { 1, 2, 3 }, {}, { 3 }, { 5, 5 }, { 6 }, { 121, 2, 1 }, { 1 }, { 1, 2 }, { 1 }, { 2 }, null }; int[] theFinalStates1 = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // Error // Code // state // Update Counts array state int[][] theFinalStates2 = init3; // SQL State state value String[] theFinalStates3 = init2; String[] theFinalStates4 = init1; // Message state Exception[] theExceptions = { null, null, null, null, null, null, null, null, null, null, null }; BatchUpdateException aBatchUpdateException; int loopCount = init1.length; for (int i = 0; i < loopCount; i++) { try { aBatchUpdateException = new BatchUpdateException(init1[i], init2[i], init3[i]); if (theExceptions[i] != null) { fail(); } assertEquals(i + " Final state mismatch: ", aBatchUpdateException.getErrorCode(), theFinalStates1[i]); assertEquals(i + " Final state mismatch: ", aBatchUpdateException.getUpdateCounts(), theFinalStates2[i]); assertEquals(i + " Final state mismatch: ", aBatchUpdateException.getSQLState(), theFinalStates3[i]); assertEquals(i + " Final state mismatch: ", aBatchUpdateException.getMessage(), theFinalStates4[i]); } catch (Exception e) { if (theExceptions[i] == null) { fail(i + "Unexpected exception"); } assertEquals(i + "Exception mismatch", e.getClass(), theExceptions[i].getClass()); assertEquals(i + "Exception mismatch", e.getMessage(), theExceptions[i].getMessage()); } // end try } // end for } // end method testBatchUpdateExceptionStringStringintArray /* * ConstructorTest @TestTargetNew( level = TestLevel.COMPLETE, notes = "", method = "BatchUpdateException", args = {java.lang.String.class, java.lang.String.class, int.class, int[].class} ) */ public void testBatchUpdateExceptionStringStringintintArray() { String[] init1 = { "a", "1", "valid1", "----", "&valid*", null, "", ".", "a", "a" }; String[] init2 = { "a", "1", "valid1", "----", "&valid*", "a", null, "", ".", "a" }; int[] init3 = { -2147483648, 2147483647, 0, -492417162, -156220255, -173012890, -631026360, -2147483648, -2147483648, -2147483648, -2147483648 }; int[][] init4 = { { 1, 2, 3 }, {}, { 3 }, { 5, 5 }, { 6 }, { 121, 2, 1 }, { 1 }, { 1, 2 }, { 1 }, { 2 }, null }; int[] theFinalStates1 = init3; // Error Code state // Update Counts array state int[][] theFinalStates2 = init4; // SQL State state value String[] theFinalStates3 = init2; String[] theFinalStates4 = init1; // Message state Exception[] theExceptions = { null, null, null, null, null, null, null, null, null, null, null }; BatchUpdateException aBatchUpdateException; int loopCount = init1.length; for (int i = 0; i < loopCount; i++) { try { aBatchUpdateException = new BatchUpdateException(init1[i], init2[i], init3[i], init4[i]); if (theExceptions[i] != null) { fail(); } assertEquals(i + " Final state mismatch: ", aBatchUpdateException.getErrorCode(), theFinalStates1[i]); assertEquals(i + " Final state mismatch: ", aBatchUpdateException.getUpdateCounts(), theFinalStates2[i]); assertEquals(i + " Final state mismatch: ", aBatchUpdateException.getSQLState(), theFinalStates3[i]); assertEquals(i + " Final state mismatch: ", aBatchUpdateException.getMessage(), theFinalStates4[i]); } catch (Exception e) { if (theExceptions[i] == null) { fail(i + "Unexpected exception"); } assertEquals(i + "Exception mismatch", e.getClass(), theExceptions[i].getClass()); assertEquals(i + "Exception mismatch", e.getMessage(), theExceptions[i].getMessage()); } // end try } // end for } // end method testBatchUpdateExceptionStringStringintintArray /* * Method test for getUpdateCounts @TestTargetNew( level = TestLevel.COMPLETE, notes = "", method = "getUpdateCounts", args = {} ) */ public void testGetUpdateCounts() { BatchUpdateException aBatchUpdateException; int[][] init1 = { { 1, 2, 3 }, {}, null }; int[] theReturn; int[][] theReturns = init1; int[] theFinalStates1 = { 0, 0, 0 }; // Error Code state int[][] theFinalStates2 = init1; // Update Counts array state String[] theFinalStates3 = { null, null, null }; // SQL State state // value String[] theFinalStates4 = { null, null, null }; // Message state Exception[] theExceptions = { null, null, null }; int loopCount = init1.length; for (int i = 0; i < loopCount; i++) { try { aBatchUpdateException = new BatchUpdateException(init1[i]); theReturn = aBatchUpdateException.getUpdateCounts(); if (theExceptions[i] != null) { fail(i + "Exception missed"); } assertEquals(i + "Return value mismatch", theReturn, theReturns[i]); assertEquals(i + " Final state mismatch: ", aBatchUpdateException.getErrorCode(), theFinalStates1[i]); assertEquals(i + " Final state mismatch: ", aBatchUpdateException.getUpdateCounts(), theFinalStates2[i]); assertEquals(i + " Final state mismatch: ", aBatchUpdateException.getSQLState(), theFinalStates3[i]); assertEquals(i + " Final state mismatch: ", aBatchUpdateException.getMessage(), theFinalStates4[i]); } catch (Exception e) { if (theExceptions[i] == null) { fail(i + "Unexpected exception"); } assertEquals(i + "Exception mismatch", e.getClass(), theExceptions[i].getClass()); assertEquals(i + "Exception mismatch", e.getMessage(), theExceptions[i].getMessage()); } // end try } // end for } // end method testGetUpdateCounts /** * @tests serialization/deserialization compatibility. @TestTargetNew( level = TestLevel.COMPLETE, notes = "Serialization test", method = "!SerializationSelf", args = {} ) */ public void testSerializationSelf() throws Exception { BatchUpdateException object = new BatchUpdateException(); SerializationTest.verifySelf(object, BATCHUPDATEEXCEPTION_COMPARATOR); } /** * @tests serialization/deserialization compatibility with RI. @TestTargetNew( level = TestLevel.COMPLETE, notes = "Serialization test", method = "!SerializationGolden", args = {} ) */ public void testSerializationCompatibility() throws Exception { int vendorCode = 10; int[] updateCounts = { 1, 2, 3, 4 }; BatchUpdateException object = new BatchUpdateException("reason", "SQLState", vendorCode, updateCounts); SerializationTest.verifyGolden(this, object, BATCHUPDATEEXCEPTION_COMPARATOR); } // comparator for BatchUpdateException field updateCounts private static final SerializableAssert BATCHUPDATEEXCEPTION_COMPARATOR = new SerializableAssert() { public void assertDeserialized(Serializable initial, Serializable deserialized) { // do common checks for all throwable objects SerializationTest.THROWABLE_COMPARATOR.assertDeserialized(initial, deserialized); BatchUpdateException initThr = (BatchUpdateException) initial; BatchUpdateException dserThr = (BatchUpdateException) deserialized; // verify updateCounts int[] initUpdateCounts = initThr.getUpdateCounts(); int[] dserUpdateCounts = dserThr.getUpdateCounts(); assertTrue(Arrays.equals(initUpdateCounts, dserUpdateCounts)); } }; } // end class BatchUpdateExceptionTest