/*
* Created at 23.03.2004 14:39:41
* Copyright (c) 2004 by Norman Fomferra
*/
package com.bc.util.prop;
import junit.framework.TestCase;
public class PropertyFactoryTest extends TestCase {
public PropertyFactoryTest(String s) {
super(s);
}
public void testCreatePropertyOneArg() {
Property p;
p = PropertyFactory.createProperty(" a");
assertTrue(p instanceof MapProperty);
assertEquals("a", p.getName());
assertEquals(Property.UNKNOWN_TYPE, p.getType());
p = PropertyFactory.createProperty(" a. b");
assertTrue(p instanceof NestedProperty);
assertEquals("a.b", p.getName());
assertEquals(Property.UNKNOWN_TYPE, p.getType());
final Property parent = ((NestedProperty) p).getParent();
assertTrue(parent instanceof MapProperty);
assertEquals("a", parent.getName());
assertEquals(Property.UNKNOWN_TYPE, parent.getType());
final Property child = ((NestedProperty) p).getChild();
assertTrue(child instanceof GenericProperty);
assertEquals("b", child.getName());
assertEquals(Property.UNKNOWN_TYPE, child.getType());
}
public void testCreatePropertyTwoArgs() {
Property p;
p = PropertyFactory.createProperty(TestBean.class, " vi ");
assertTrue(p instanceof BeanProperty);
assertEquals("vi", p.getName());
assertEquals(int.class, p.getType());
p = PropertyFactory.createProperty(TestBean.class, " vo . vi");
assertTrue(p instanceof NestedProperty);
assertEquals("vo.vi", p.getName());
assertEquals(int.class, p.getType());
final Property parent = ((NestedProperty) p).getParent();
assertTrue(parent instanceof BeanProperty);
assertEquals("vo", parent.getName());
assertEquals(TestBean.class, parent.getType());
final Property child = ((NestedProperty) p).getChild();
assertTrue(child instanceof BeanProperty);
assertEquals("vi", child.getName());
assertEquals(int.class, child.getType());
}
public void testCreatePropertyThrowsRuntimeExceptionInCaseIllegalPropertyString() {
try {
PropertyFactory.createProperty(TestBean.class, "?-08nf");
} catch (RuntimeException expected) {
}
}
public void testCreateBeanProperty() {
BeanProperty bp = PropertyFactory.createBeanProperty(TestBean.class, "vs");
assertEquals(java.lang.String.class, bp.getType());
assertEquals("getVs", bp.getGetter().getName());
assertEquals("setVs", bp.getSetter().getName());
}
public void testCreateBeanPropertyWithoutSetter() {
BeanProperty bp = PropertyFactory.createBeanProperty(TestBean.class, "onlyGetterAvailable");
assertEquals(java.lang.String.class, bp.getType());
assertEquals("getOnlyGetterAvailable", bp.getGetter().getName());
assertNull(bp.getSetter());
}
// todo - 3 tb/nf what about only setter beans properties??
// public void testCreateBeanPropertyWithoutGetter() {
// BeanProperty bp = PropertyFactory.createBeanProperty(TestBean.class, "onlySetterAvailable");
// assertNotNull(bp);
// assertEquals(java.lang.String.class, bp.getType());
// assertEquals("getOnlySetterAvailable", bp.getSetter().getName());
// assertNull(bp.getGetter());
// }
}