package com.ibatis.jpetstore.domain; import java.math.BigDecimal; import java.math.BigInteger; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import junit.framework.TestCase; import com.ibatis.common.beans.ClassInfo; import com.ibatis.common.beans.Probe; import com.ibatis.common.beans.ProbeFactory; import com.ibatis.jpetstore.presentation.AccountBean; import com.ibatis.jpetstore.presentation.CartBean; import com.ibatis.jpetstore.presentation.CatalogBean; import com.ibatis.jpetstore.presentation.OrderBean; public class BeanTest extends TestCase { private Class[] classes = new Class[] { Account.class, Cart.class, CartItem.class, Category.class, Item.class, LineItem.class, Order.class, Product.class, Sequence.class, AccountBean.class, CartBean.class, CatalogBean.class, OrderBean.class }; public void testAllReadWriteProperties() { try { for (int i = 0; i < classes.length; i++) { Object object = classes[i].newInstance(); ClassInfo info = ClassInfo.getInstance(classes[i]); List writeables = Arrays.asList(info.getWriteablePropertyNames()); List readables = Arrays.asList(info.getReadablePropertyNames()); for (int j = 0; j < writeables.size(); j++) { String writeable = (String) writeables.get(j); if (readables.contains(writeable)) { Class type = info.getGetterType(writeable); Object sample = getSampleFor(type); Probe probe = ProbeFactory.getProbe(object); probe.setObject(object, writeable, sample); assertEquals(sample, probe.getObject(object, writeable)); } } } } catch (Exception e) { throw new RuntimeException("Error. ", e); } } public Object getSampleFor(Class type) { Map sampleMap = new HashMap(); sampleMap.put(String.class, "Hello"); sampleMap.put(Integer.class, new Integer(1)); sampleMap.put(int.class, new Integer(1)); sampleMap.put(Long.class, new Long(1)); sampleMap.put(long.class, new Long(1)); sampleMap.put(Double.class, new Double(1)); sampleMap.put(double.class, new Double(1)); sampleMap.put(Float.class, new Float(1)); sampleMap.put(float.class, new Float(1)); sampleMap.put(Short.class, new Short((short) 1)); sampleMap.put(short.class, new Short((short) 1)); sampleMap.put(Character.class, new Integer(1)); sampleMap.put(char.class, new Integer(1)); sampleMap.put(Date.class, new Date()); sampleMap.put(boolean.class, new Boolean(true)); sampleMap.put(Boolean.class, new Boolean(true)); sampleMap.put(BigDecimal.class, new BigDecimal("1.00")); sampleMap.put(BigInteger.class, new BigInteger("1")); sampleMap.put(List.class, new ArrayList()); sampleMap.put(List.class, new ArrayList()); if (!sampleMap.containsKey(type)) { try { sampleMap.put(type, type.newInstance()); } catch (Exception e) { // ignore on purpose...we don't care if this fails } } return sampleMap.get(type); } }