blob: 6c84a03700bc27e43ce7bebe575ad1ead59d8fca [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.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