📄 objectutilstests.java
字号:
/*
* Copyright 2002-2006 the original author or authors.
*
* Licensed 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.springframework.util;
import java.io.IOException;
import javax.servlet.ServletException;
import junit.framework.TestCase;
import org.springframework.beans.FatalBeanException;
/**
* @author Rod Johnson
* @author Juergen Hoeller
* @author Rick Evans
*/
public final class ObjectUtilsTests extends TestCase {
public void testIsCheckedException() {
assertTrue(ObjectUtils.isCheckedException(new Exception()));
assertTrue(ObjectUtils.isCheckedException(new ServletException()));
assertFalse(ObjectUtils.isCheckedException(new RuntimeException()));
assertFalse(ObjectUtils.isCheckedException(new FatalBeanException("")));
// Any Throwable other than RuntimeException and Error
// has to be considered checked according to the JLS.
assertTrue(ObjectUtils.isCheckedException(new Throwable()));
}
public void testIsCompatibleWithThrowsClause() {
Class[] empty = new Class[0];
Class[] exception = new Class[] {Exception.class};
Class[] servletAndIO = new Class[] {ServletException.class, IOException.class};
Class[] throwable = new Class[] {Throwable.class};
assertTrue(ObjectUtils.isCompatibleWithThrowsClause(new RuntimeException(), null));
assertTrue(ObjectUtils.isCompatibleWithThrowsClause(new RuntimeException(), empty));
assertTrue(ObjectUtils.isCompatibleWithThrowsClause(new RuntimeException(), exception));
assertTrue(ObjectUtils.isCompatibleWithThrowsClause(new RuntimeException(), servletAndIO));
assertTrue(ObjectUtils.isCompatibleWithThrowsClause(new RuntimeException(), throwable));
assertFalse(ObjectUtils.isCompatibleWithThrowsClause(new Exception(), null));
assertFalse(ObjectUtils.isCompatibleWithThrowsClause(new Exception(), empty));
assertTrue(ObjectUtils.isCompatibleWithThrowsClause(new Exception(), exception));
assertFalse(ObjectUtils.isCompatibleWithThrowsClause(new Exception(), servletAndIO));
assertTrue(ObjectUtils.isCompatibleWithThrowsClause(new Exception(), throwable));
assertFalse(ObjectUtils.isCompatibleWithThrowsClause(new ServletException(), null));
assertFalse(ObjectUtils.isCompatibleWithThrowsClause(new ServletException(), empty));
assertTrue(ObjectUtils.isCompatibleWithThrowsClause(new ServletException(), exception));
assertTrue(ObjectUtils.isCompatibleWithThrowsClause(new ServletException(), servletAndIO));
assertTrue(ObjectUtils.isCompatibleWithThrowsClause(new ServletException(), throwable));
assertFalse(ObjectUtils.isCompatibleWithThrowsClause(new Throwable(), null));
assertFalse(ObjectUtils.isCompatibleWithThrowsClause(new Throwable(), empty));
assertFalse(ObjectUtils.isCompatibleWithThrowsClause(new Throwable(), exception));
assertFalse(ObjectUtils.isCompatibleWithThrowsClause(new Throwable(), servletAndIO));
assertTrue(ObjectUtils.isCompatibleWithThrowsClause(new Throwable(), throwable));
}
public void testToObjectArray() {
int[] a = new int[] {1, 2, 3, 4, 5};
Integer[] wrapper = (Integer[]) ObjectUtils.toObjectArray(a);
assertTrue(wrapper.length == 5);
for (int i = 0; i < wrapper.length; i++) {
assertEquals(a[i], wrapper[i].intValue());
}
}
public void testToObjectArrayWithNull() {
Object[] objects = ObjectUtils.toObjectArray(null);
assertNotNull(objects);
assertEquals(0, objects.length);
}
public void testToObjectArrayWithEmptyPrimitiveArray() {
Object[] objects = ObjectUtils.toObjectArray(new byte[] {});
assertNotNull(objects);
assertEquals(0, objects.length);
}
public void testToObjectArrayWithNonArrayType() {
try {
ObjectUtils.toObjectArray("Not an []");
fail("Must have thrown an IllegalArgumentException by this point.");
}
catch (IllegalArgumentException expected) {
}
}
public void testToObjectArrayWithNonPrimitiveArray() {
try {
ObjectUtils.toObjectArray(new String[] {"Bingo"});
fail("Must have thrown an IllegalArgumentException by this point.");
}
catch (IllegalArgumentException expected) {
}
}
public void testAddObjectToArraySunnyDay() {
String[] array = new String[] {"foo", "bar"};
String newElement = "baz";
Object[] newArray = ObjectUtils.addObjectToArray(array, newElement);
assertEquals(3, newArray.length);
assertEquals(newElement, newArray[2]);
}
public void testAddObjectToArrayWhenEmpty() {
String[] array = new String[0];
String newElement = "foo";
Object[] newArray = ObjectUtils.addObjectToArray(array, newElement);
assertEquals(1, newArray.length);
assertEquals(newElement, newArray[0]);
}
public void testAddObjectToSingleNonNullElementArray() {
String existingElement = "foo";
String[] array = new String[] {existingElement};
String newElement = "bar";
Object[] newArray = ObjectUtils.addObjectToArray(array, newElement);
assertEquals(2, newArray.length);
assertEquals(existingElement, newArray[0]);
assertEquals(newElement, newArray[1]);
}
public void testAddObjectToSingleNullElementArray() {
String[] array = new String[] {null};
String newElement = "bar";
Object[] newArray = ObjectUtils.addObjectToArray(array, newElement);
assertEquals(2, newArray.length);
assertEquals(null, newArray[0]);
assertEquals(newElement, newArray[1]);
}
public void testAddObjectToNullArray() throws Exception {
String newElement = "foo";
Object[] newArray = ObjectUtils.addObjectToArray(null, newElement);
assertEquals(1, newArray.length);
assertEquals(newElement, newArray[0]);
}
public void testAddNullObjectToNullArray() throws Exception {
Object[] newArray = ObjectUtils.addObjectToArray(null, null);
assertEquals(1, newArray.length);
assertEquals(null, newArray[0]);
}
public void testNullSafeEqualsWithArrays() throws Exception {
assertTrue(ObjectUtils.nullSafeEquals(new String[] {"a", "b", "c"}, new String[] {"a", "b", "c"}));
assertTrue(ObjectUtils.nullSafeEquals(new int[] {1, 2, 3}, new int[] {1, 2, 3}));
}
public void testHashCodeWithBooleanFalse() {
int expected = Boolean.FALSE.hashCode();
assertEquals(expected, ObjectUtils.hashCode(false));
}
public void testHashCodeWithBooleanTrue() {
int expected = Boolean.TRUE.hashCode();
assertEquals(expected, ObjectUtils.hashCode(true));
}
public void testHashCodeWithDouble() {
double dbl = 9830.43;
int expected = (new Double(dbl)).hashCode();
assertEquals(expected, ObjectUtils.hashCode(dbl));
}
public void testHashCodeWithFloat() {
float flt = 34.8f;
int expected = (new Float(flt)).hashCode();
assertEquals(expected, ObjectUtils.hashCode(flt));
}
public void testHashCodeWithLong() {
long lng = 883l;
int expected = (new Long(lng)).hashCode();
assertEquals(expected, ObjectUtils.hashCode(lng));
}
public void testIdentityToString() {
Object obj = new Object();
String expected = obj.getClass().getName() + "@" + ObjectUtils.getIdentityHexString(obj);
String actual = ObjectUtils.identityToString(obj);
assertEquals(expected.toString(), actual);
}
public void testIdentityToStringWithNullObject() {
assertEquals("", ObjectUtils.identityToString(null));
}
public void testIsArrayOfPrimitivesWithBooleanArray() {
assertTrue(ClassUtils.isPrimitiveArray(boolean[].class));
}
public void testIsArrayOfPrimitivesWithObjectArray() {
assertFalse(ClassUtils.isPrimitiveArray(Object[].class));
}
public void testIsArrayOfPrimitivesWithNonArray() {
assertFalse(ClassUtils.isPrimitiveArray(String.class));
}
public void testIsPrimitiveOrWrapperWithBooleanPrimitiveClass() {
assertTrue(ClassUtils.isPrimitiveOrWrapper(boolean.class));
}
public void testIsPrimitiveOrWrapperWithBooleanWrapperClass() {
assertTrue(ClassUtils.isPrimitiveOrWrapper(Boolean.class));
}
public void testIsPrimitiveOrWrapperWithBytePrimitiveClass() {
assertTrue(ClassUtils.isPrimitiveOrWrapper(byte.class));
}
public void testIsPrimitiveOrWrapperWithByteWrapperClass() {
assertTrue(ClassUtils.isPrimitiveOrWrapper(Byte.class));
}
public void testIsPrimitiveOrWrapperWithCharacterClass() {
assertTrue(ClassUtils.isPrimitiveOrWrapper(Character.class));
}
public void testIsPrimitiveOrWrapperWithCharClass() {
assertTrue(ClassUtils.isPrimitiveOrWrapper(char.class));
}
public void testIsPrimitiveOrWrapperWithDoublePrimitiveClass() {
assertTrue(ClassUtils.isPrimitiveOrWrapper(double.class));
}
public void testIsPrimitiveOrWrapperWithDoubleWrapperClass() {
assertTrue(ClassUtils.isPrimitiveOrWrapper(Double.class));
}
public void testIsPrimitiveOrWrapperWithFloatPrimitiveClass() {
assertTrue(ClassUtils.isPrimitiveOrWrapper(float.class));
}
public void testIsPrimitiveOrWrapperWithFloatWrapperClass() {
assertTrue(ClassUtils.isPrimitiveOrWrapper(Float.class));
}
public void testIsPrimitiveOrWrapperWithIntClass() {
assertTrue(ClassUtils.isPrimitiveOrWrapper(int.class));
}
public void testIsPrimitiveOrWrapperWithIntegerClass() {
assertTrue(ClassUtils.isPrimitiveOrWrapper(Integer.class));
}
public void testIsPrimitiveOrWrapperWithLongPrimitiveClass() {
assertTrue(ClassUtils.isPrimitiveOrWrapper(long.class));
}
public void testIsPrimitiveOrWrapperWithLongWrapperClass() {
assertTrue(ClassUtils.isPrimitiveOrWrapper(Long.class));
}
public void testIsPrimitiveOrWrapperWithNonPrimitiveOrWrapperClass() {
assertFalse(ClassUtils.isPrimitiveOrWrapper(Object.class));
}
public void testIsPrimitiveOrWrapperWithShortPrimitiveClass() {
assertTrue(ClassUtils.isPrimitiveOrWrapper(short.class));
}
public void testIsPrimitiveOrWrapperWithShortWrapperClass() {
assertTrue(ClassUtils.isPrimitiveOrWrapper(Short.class));
}
public void testNullSafeHashCodeWithBooleanArray() {
int expected = 31 * 7 + Boolean.TRUE.hashCode();
expected = 31 * expected + Boolean.FALSE.hashCode();
boolean[] array = {true, false};
int actual = ObjectUtils.nullSafeHashCode(array);
assertEquals(expected, actual);
}
public void testNullSafeHashCodeWithBooleanArrayEqualToNull() {
assertEquals(0, ObjectUtils.nullSafeHashCode((boolean[]) null));
}
public void testNullSafeHashCodeWithByteArray() {
int expected = 31 * 7 + 8;
expected = 31 * expected + 10;
byte[] array = {8, 10};
int actual = ObjectUtils.nullSafeHashCode(array);
assertEquals(expected, actual);
}
public void testNullSafeHashCodeWithByteArrayEqualToNull() {
assertEquals(0, ObjectUtils.nullSafeHashCode((byte[]) null));
}
public void testNullSafeHashCodeWithCharArray() {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -