mirror of
https://github.com/haraldk/TwelveMonkeys.git
synced 2026-05-28 00:00:03 -04:00
236 lines
6.7 KiB
Java
Executable File
236 lines
6.7 KiB
Java
Executable File
package com.twelvemonkeys.lang;
|
|
|
|
import junit.framework.TestCase;
|
|
|
|
import java.io.Serializable;
|
|
import java.lang.reflect.InvocationTargetException;
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
|
|
/**
|
|
* BeanUtilTestCase
|
|
* <p/>
|
|
*
|
|
* @author <a href="mailto:harald.kuhr@gmail.com">Harald Kuhr</a>
|
|
* @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/test/java/com/twelvemonkeys/lang/BeanUtilTestCase.java#1 $
|
|
*/
|
|
public class BeanUtilTestCase extends TestCase {
|
|
|
|
public void testConfigureNoMehtod() {
|
|
TestBean bean = new TestBean();
|
|
|
|
Map<String, String> map = new HashMap<String, String>();
|
|
|
|
map.put("noSuchMethod", "jaffa");
|
|
|
|
try {
|
|
BeanUtil.configure(bean, map);
|
|
}
|
|
catch (InvocationTargetException e) {
|
|
fail(e.getMessage());
|
|
}
|
|
}
|
|
|
|
public void testConfigureNoMethodArgs() {
|
|
TestBean bean = new TestBean();
|
|
|
|
Map<String, Object> map = new HashMap<String, Object>();
|
|
|
|
map.put("doubleValue", new Object()); // Should not be able to convert this
|
|
|
|
try {
|
|
BeanUtil.configure(bean, map);
|
|
}
|
|
catch (InvocationTargetException e) {
|
|
fail(e.getMessage());
|
|
}
|
|
|
|
assertNull(bean.getDoubleValue());
|
|
|
|
}
|
|
|
|
public void testConfigureNullValue() {
|
|
TestBean bean = new TestBean();
|
|
|
|
Map<String, Object> map = new HashMap<String, Object>();
|
|
|
|
map.put("stringValue", null);
|
|
|
|
try {
|
|
BeanUtil.configure(bean, map);
|
|
}
|
|
catch (InvocationTargetException e) {
|
|
fail(e.getMessage());
|
|
}
|
|
|
|
assertNull(bean.getStringValue());
|
|
}
|
|
|
|
public void testConfigureSimple() {
|
|
TestBean bean = new TestBean();
|
|
|
|
Map<String, Serializable> map = new HashMap<String, Serializable>();
|
|
|
|
map.put("stringValue", "one");
|
|
map.put("intValue", 2);
|
|
map.put("doubleValue", .3);
|
|
|
|
try {
|
|
BeanUtil.configure(bean, map);
|
|
}
|
|
catch (InvocationTargetException e) {
|
|
fail(e.getMessage());
|
|
}
|
|
|
|
assertEquals("one", bean.getStringValue());
|
|
assertEquals(2, bean.getIntValue());
|
|
assertEquals(.3, bean.getDoubleValue());
|
|
}
|
|
|
|
public void testConfigureConvert() {
|
|
TestBean bean = new TestBean();
|
|
|
|
Map<String,Serializable> map = new HashMap<String, Serializable>();
|
|
|
|
map.put("stringValue", 1);
|
|
map.put("intValue", "2");
|
|
map.put("doubleValue", ".3");
|
|
|
|
try {
|
|
BeanUtil.configure(bean, map);
|
|
}
|
|
catch (InvocationTargetException e) {
|
|
fail(e.getMessage());
|
|
}
|
|
|
|
assertEquals("1", bean.getStringValue());
|
|
assertEquals(2, bean.getIntValue());
|
|
assertEquals(0.3, bean.getDoubleValue());
|
|
}
|
|
|
|
public void testConfigureAmbiguous1() {
|
|
TestBean bean = new TestBean();
|
|
|
|
Map<String, String> map = new HashMap<String, String>();
|
|
|
|
String value = "one";
|
|
map.put("ambiguous", value);
|
|
|
|
try {
|
|
BeanUtil.configure(bean, map);
|
|
}
|
|
catch (InvocationTargetException e) {
|
|
fail(e.getMessage());
|
|
}
|
|
|
|
assertNotNull(bean.getAmbiguous());
|
|
assertEquals("String converted rather than invoking setAmbiguous(String), ordering not predictable",
|
|
"one", bean.getAmbiguous());
|
|
assertSame("String converted rather than invoking setAmbiguous(String), ordering not predictable",
|
|
value, bean.getAmbiguous());
|
|
}
|
|
|
|
public void testConfigureAmbiguous2() {
|
|
TestBean bean = new TestBean();
|
|
|
|
Map<String, Integer> map = new HashMap<String, Integer>();
|
|
|
|
Integer value = 2;
|
|
map.put("ambiguous", value);
|
|
|
|
try {
|
|
BeanUtil.configure(bean, map);
|
|
}
|
|
catch (InvocationTargetException e) {
|
|
fail(e.getMessage());
|
|
}
|
|
|
|
assertNotNull(bean.getAmbiguous());
|
|
assertEquals("Integer converted rather than invoking setAmbiguous(Integer), ordering not predictable",
|
|
2, bean.getAmbiguous());
|
|
assertSame("Integer converted rather than invoking setAmbiguous(Integer), ordering not predictable",
|
|
value, bean.getAmbiguous());
|
|
}
|
|
|
|
public void testConfigureAmbiguous3() {
|
|
TestBean bean = new TestBean();
|
|
|
|
Map<String, Double> map = new HashMap<String, Double>();
|
|
|
|
Double value = .3;
|
|
map.put("ambiguous", value);
|
|
|
|
try {
|
|
BeanUtil.configure(bean, map);
|
|
}
|
|
catch (InvocationTargetException e) {
|
|
fail(e.getMessage());
|
|
}
|
|
|
|
assertNotNull(bean.getAmbiguous());
|
|
assertEquals("Object converted rather than invoking setAmbiguous(Object), ordering not predictable",
|
|
value.getClass(), bean.getAmbiguous().getClass());
|
|
assertSame("Object converted rather than invoking setAmbiguous(Object), ordering not predictable",
|
|
value, bean.getAmbiguous());
|
|
}
|
|
|
|
static class TestBean {
|
|
private String stringVal;
|
|
private int intVal;
|
|
private Double doubleVal;
|
|
|
|
private Object ambiguous;
|
|
|
|
public Double getDoubleValue() {
|
|
return doubleVal;
|
|
}
|
|
|
|
public int getIntValue() {
|
|
return intVal;
|
|
}
|
|
|
|
public String getStringValue() {
|
|
return stringVal;
|
|
}
|
|
|
|
@SuppressWarnings("UnusedDeclaration")
|
|
public void setStringValue(String pString) {
|
|
stringVal = pString;
|
|
}
|
|
|
|
@SuppressWarnings("UnusedDeclaration")
|
|
public void setIntValue(int pInt) {
|
|
intVal = pInt;
|
|
}
|
|
|
|
@SuppressWarnings("UnusedDeclaration")
|
|
public void setDoubleValue(Double pDouble) {
|
|
doubleVal = pDouble;
|
|
}
|
|
|
|
@SuppressWarnings("UnusedDeclaration")
|
|
public void setAmbiguous(String pString) {
|
|
ambiguous = pString;
|
|
}
|
|
|
|
@SuppressWarnings("UnusedDeclaration")
|
|
public void setAmbiguous(Object pObject) {
|
|
ambiguous = pObject;
|
|
}
|
|
|
|
@SuppressWarnings("UnusedDeclaration")
|
|
public void setAmbiguous(Integer pInteger) {
|
|
ambiguous = pInteger;
|
|
}
|
|
|
|
@SuppressWarnings("UnusedDeclaration")
|
|
public void setAmbiguous(int pInt) {
|
|
ambiguous = (long) pInt; // Just to differentiate...
|
|
}
|
|
|
|
public Object getAmbiguous() {
|
|
return ambiguous;
|
|
}
|
|
}
|
|
}
|