📄 dynabeanutilstestcase.java
字号:
/*
* 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.commons.beanutils;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import junit.framework.TestCase;
import junit.framework.Test;
import junit.framework.TestSuite;
/**
* Test case for BeanUtils when the underlying bean is actually a DynaBean.
*
* @author Craig R. McClanahan
* @version $Revision: 552279 $ $Date: 2007-07-01 12:04:26 +0100 (Sun, 01 Jul 2007) $
*/
public class DynaBeanUtilsTestCase extends TestCase {
// ----------------------------------------------------- Instance Variables
/**
* The basic test bean for each test.
*/
protected DynaBean bean = null;
/**
* The nested bean pointed at by the "nested" property.
*/
protected TestBean nested = null;
/**
* The set of properties that should be described.
*/
protected String describes[] =
{ "booleanProperty",
"booleanSecond",
"byteProperty",
"doubleProperty",
"dupProperty",
"floatProperty",
"intArray",
"intIndexed",
"intProperty",
"listIndexed",
"longProperty",
"mapProperty",
"mappedProperty",
"mappedIntProperty",
"nested",
"nullProperty",
// "readOnlyProperty",
"shortProperty",
"stringArray",
"stringIndexed",
"stringProperty"
};
// ----------------------------------------------------------- Constructors
/**
* Construct a new instance of this test case.
*
* @param name Name of the test case
*/
public DynaBeanUtilsTestCase(String name) {
super(name);
}
// --------------------------------------------------- Overall Test Methods
/**
* Set up instance variables required by this test case.
*/
public void setUp() throws Exception {
ConvertUtils.deregister();
// Instantiate a new DynaBean instance
DynaClass dynaClass = createDynaClass();
bean = dynaClass.newInstance();
// Initialize the DynaBean's property values (like TestBean)
bean.set("booleanProperty", new Boolean(true));
bean.set("booleanSecond", new Boolean(true));
bean.set("byteProperty", new Byte((byte) 121));
bean.set("doubleProperty", new Double(321.0));
bean.set("floatProperty", new Float((float) 123.0));
String dupProperty[] = { "Dup 0", "Dup 1", "Dup 2", "Dup 3", "Dup 4"};
bean.set("dupProperty", dupProperty);
int intArray[] = { 0, 10, 20, 30, 40 };
bean.set("intArray", intArray);
int intIndexed[] = { 0, 10, 20, 30, 40 };
bean.set("intIndexed", intIndexed);
bean.set("intProperty", new Integer(123));
List listIndexed = new ArrayList();
listIndexed.add("String 0");
listIndexed.add("String 1");
listIndexed.add("String 2");
listIndexed.add("String 3");
listIndexed.add("String 4");
bean.set("listIndexed", listIndexed);
bean.set("longProperty", new Long(321));
HashMap mapProperty = new HashMap();
mapProperty.put("First Key", "First Value");
mapProperty.put("Second Key", "Second Value");
bean.set("mapProperty", mapProperty);
HashMap mappedProperty = new HashMap();
mappedProperty.put("First Key", "First Value");
mappedProperty.put("Second Key", "Second Value");
bean.set("mappedProperty", mappedProperty);
HashMap mappedIntProperty = new HashMap();
mappedIntProperty.put("One", new Integer(1));
mappedIntProperty.put("Two", new Integer(2));
bean.set("mappedIntProperty", mappedIntProperty);
nested = new TestBean();
bean.set("nested", nested);
// Property "nullProperty" is not initialized, so it should return null
bean.set("shortProperty", new Short((short) 987));
String stringArray[] =
{ "String 0", "String 1", "String 2", "String 3", "String 4" };
bean.set("stringArray", stringArray);
String stringIndexed[] =
{ "String 0", "String 1", "String 2", "String 3", "String 4" };
bean.set("stringIndexed", stringIndexed);
bean.set("stringProperty", "This is a string");
}
/**
* Return the tests included in this test suite.
*/
public static Test suite() {
return (new TestSuite(DynaBeanUtilsTestCase.class));
}
/**
* Tear down instance variables required by this test case.
*/
public void tearDown() {
bean = null;
nested = null;
}
// ------------------------------------------------ Individual Test Methods
/**
* Test the cloneBean() method from a DynaBean.
*/
public void testCloneDynaBean() {
// Set up an origin bean with customized properties
DynaClass dynaClass = DynaBeanUtilsTestCase.createDynaClass();
DynaBean orig = null;
try {
orig = dynaClass.newInstance();
} catch (Exception e) {
fail("newInstance(): " + e);
}
orig.set("booleanProperty", Boolean.FALSE);
orig.set("byteProperty", new Byte((byte)111));
orig.set("doubleProperty", new Double(333.33));
orig.set("dupProperty", new String[] { "New 0", "New 1", "New 2" });
orig.set("intArray", new int[] { 100, 200, 300 });
orig.set("intProperty", new Integer(333));
orig.set("longProperty", new Long(3333));
orig.set("shortProperty", new Short((short) 33));
orig.set("stringArray", new String[] { "New 0", "New 1" });
orig.set("stringProperty", "Custom string");
// Copy the origin bean to our destination test bean
DynaBean clonedBean = null;
try {
clonedBean = (DynaBean) BeanUtils.cloneBean(orig);
} catch (Exception e) {
fail("Threw exception: " + e);
}
// Validate the results for scalar properties
assertEquals("Cloned boolean property",
false,
((Boolean) clonedBean.get("booleanProperty")).booleanValue());
assertEquals("Cloned byte property",
(byte) 111,
((Byte) clonedBean.get("byteProperty")).byteValue());
assertEquals("Cloned double property",
333.33,
((Double) clonedBean.get("doubleProperty")).doubleValue(),
0.005);
assertEquals("Cloned int property",
333,
((Integer) clonedBean.get("intProperty")).intValue());
assertEquals("Cloned long property",
3333,
((Long) clonedBean.get("longProperty")).longValue());
assertEquals("Cloned short property",
(short) 33,
((Short) clonedBean.get("shortProperty")).shortValue());
assertEquals("Cloned string property",
"Custom string",
(String) clonedBean.get("stringProperty"));
// Validate the results for array properties
String dupProperty[] = (String[]) clonedBean.get("dupProperty");
assertNotNull("dupProperty present", dupProperty);
assertEquals("dupProperty length", 3, dupProperty.length);
assertEquals("dupProperty[0]", "New 0", dupProperty[0]);
assertEquals("dupProperty[1]", "New 1", dupProperty[1]);
assertEquals("dupProperty[2]", "New 2", dupProperty[2]);
int intArray[] = (int[]) clonedBean.get("intArray");
assertNotNull("intArray present", intArray);
assertEquals("intArray length", 3, intArray.length);
assertEquals("intArray[0]", 100, intArray[0]);
assertEquals("intArray[1]", 200, intArray[1]);
assertEquals("intArray[2]", 300, intArray[2]);
String stringArray[] = (String[]) clonedBean.get("stringArray");
assertNotNull("stringArray present", stringArray);
assertEquals("stringArray length", 2, stringArray.length);
assertEquals("stringArray[0]", "New 0", stringArray[0]);
assertEquals("stringArray[1]", "New 1", stringArray[1]);
}
/**
* Test the copyProperties() method from a DynaBean.
*/
public void testCopyPropertiesDynaBean() {
// Set up an origin bean with customized properties
DynaClass dynaClass = DynaBeanUtilsTestCase.createDynaClass();
DynaBean orig = null;
try {
orig = dynaClass.newInstance();
} catch (Exception e) {
fail("newInstance(): " + e);
}
orig.set("booleanProperty", Boolean.FALSE);
orig.set("byteProperty", new Byte((byte)111));
orig.set("doubleProperty", new Double(333.33));
orig.set("dupProperty", new String[] { "New 0", "New 1", "New 2" });
orig.set("intArray", new int[] { 100, 200, 300 });
orig.set("intProperty", new Integer(333));
orig.set("longProperty", new Long(3333));
orig.set("shortProperty", new Short((short) 33));
orig.set("stringArray", new String[] { "New 0", "New 1" });
orig.set("stringProperty", "Custom string");
// Copy the origin bean to our destination test bean
try {
BeanUtils.copyProperties(bean, orig);
} catch (Exception e) {
fail("Threw exception: " + e);
}
// Validate the results for scalar properties
assertEquals("Copied boolean property",
false,
((Boolean) bean.get("booleanProperty")).booleanValue());
assertEquals("Copied byte property",
(byte) 111,
((Byte) bean.get("byteProperty")).byteValue());
assertEquals("Copied double property",
333.33,
((Double) bean.get("doubleProperty")).doubleValue(),
0.005);
assertEquals("Copied int property",
333,
((Integer) bean.get("intProperty")).intValue());
assertEquals("Copied long property",
3333,
((Long) bean.get("longProperty")).longValue());
assertEquals("Copied short property",
(short) 33,
((Short) bean.get("shortProperty")).shortValue());
assertEquals("Copied string property",
"Custom string",
(String) bean.get("stringProperty"));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -