// $Id$ package org.yajul.util; import junit.framework.TestCase; import org.yajul.reflection.BeanProperties; import org.yajul.reflection.PropertyMap; import java.util.Map; /** * TODO: Add class javadoc * * @author josh Apr 4, 2004 9:30:45 AM */ public class PropertyAccessorTest extends TestCase { public PropertyAccessorTest(String name) { super(name); //To change body of overridden methods use File | Settings | File Templates. } public void testGettersAndSetters() throws Exception { BeanProperties accessor = new BeanProperties(TestBean.class); TestBean bean = new TestBean(); assertEquals(3,accessor.values(bean).size()); accessor.setProperty(bean,"intProp", 3); assertEquals(3,bean.getIntProp()); assertEquals(3,accessor.getProperty(bean,"intProp")); accessor.setProperty(bean,"stringProp","test string"); assertEquals("test string",bean.getStringProp()); assertEquals("test string",accessor.getProperty(bean,"stringProp")); accessor.setProperty(bean,"doubleProp", 3.1415); assertEquals(3.1415,bean.getDoubleProp(),0.001); assertEquals(3.1415,accessor.getDoubleProperty(bean,"doubleProp"),0.001); TestBean copy = new TestBean(); accessor.copy(bean,copy); assertEquals(bean,copy); } public void testPropertyMap() throws Exception { TestBean bean = new TestBean(); bean.setIntProp(42); bean.setStringProp("the answer"); Map map = new PropertyMap(bean); assertEquals(3,map.size()); assertEquals("the answer",map.get("stringProp")); TestBean copy = new TestBean(); Map map2 = new PropertyMap(copy); assertNull(map2.get("stringProp")); //noinspection unchecked map2.putAll(map); assertEquals(3,map2.size()); assertEquals("the answer",map2.get("stringProp")); assertEquals(bean,copy); } public static class TestBean { private int intProp; private String stringProp; private double doubleProp; public int getIntProp() { return intProp; } public void setIntProp(int intProp) { this.intProp = intProp; } public String getStringProp() { return stringProp; } public void setStringProp(String stringProp) { this.stringProp = stringProp; } public double getDoubleProp() { return doubleProp; } public void setDoubleProp(double doubleProp) { this.doubleProp = doubleProp; } public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof TestBean)) return false; final TestBean testBean = (TestBean) o; if (doubleProp != testBean.doubleProp) return false; //noinspection SimplifiableIfStatement if (intProp != testBean.intProp) return false; return !(stringProp != null ? !stringProp.equals(testBean.stringProp) : testBean.stringProp != null); } public int hashCode() { int result; long temp; result = intProp; result = 29 * result + (stringProp != null ? stringProp.hashCode() : 0); temp = doubleProp != +0.0d ? Double.doubleToLongBits(doubleProp) : 0l; result = 29 * result + (int) (temp ^ (temp >>> 32)); return result; } } }