1 4 package org.oddjob.values.types; 5 6 import java.util.HashMap ; 7 import java.util.Map ; 8 import java.util.Properties ; 9 10 import junit.framework.TestCase; 11 12 import org.oddjob.Oddjob; 13 import org.oddjob.arooa.ArooaFactory; 14 import org.oddjob.arooa.PropertyProxyResolver; 15 import org.oddjob.arooa.SimpleObjectFactory; 16 17 20 public class MapTypeTest extends TestCase { 21 22 abstract public static class MyBean { 23 Map map; 24 } 25 26 public static class MyMapBean extends MyBean { 27 public void setFoo(Map map) { 28 this.map = map; 29 } 30 } 31 32 public static class MyMappedBean extends MyBean { 33 public MyMappedBean() { map = new HashMap (); } 34 public void setFoo(String name, Object value) { 35 map.put(name, value); 36 } 37 } 38 39 public void test1() throws Exception { 41 MyBean mb = createBean(xml(MyMapBean.class.getName())); 42 assertEquals("hello world", (String ) mb.map.get("greeting")); 43 assertEquals("apples", (String ) mb.map.get("fruit")); 44 assertEquals(System.getProperty("java.version"), mb.map.get("java.version")); 45 assertEquals(Oddjob.class.getName(), mb.map.get("oddjob")); 46 } 47 48 public void test2() throws Exception { 50 MyBean mb = createBean(xml(MyMappedBean.class.getName())); 51 assertEquals("hello world", (String ) mb.map.get("greeting")); 52 assertEquals("apples", (String ) mb.map.get("fruit")); 53 assertEquals(System.getProperty("java.version"), mb.map.get("java.version")); 54 assertEquals(Oddjob.class.getName(), mb.map.get("oddjob")); 55 } 56 57 public void testMapMap() throws Exception { 58 String xml = "<mybean class='" + MyMappedBean.class.getName() + "'>" 59 + "<foo>" 60 + " <map name='another'/>" 61 + "</foo>" 62 + "</mybean>"; 63 64 MyBean mb = createBean(xml); 65 66 assertTrue(Map .class.isInstance(mb.map.get("another"))); 67 System.out.println(mb.map.get("another").getClass()); 68 System.out.println(mb.map.get("another")); 69 assertEquals(0, ((Map )mb.map.get("another")).size()); 70 } 71 72 static MyBean createBean(String xml) { 73 ArooaFactory af = new ArooaFactory(); 74 SimpleObjectFactory vf = new SimpleObjectFactory(); 75 vf.addResource("/org/oddjob/values/types.properties"); 76 PropertyProxyResolver tm = new PropertyProxyResolver(); 77 tm.addResource("/org/oddjob/values/proxies.properties"); 78 79 af.setValueFactory(vf); 80 af.setPropertProxyResolver(tm); 81 82 return (MyBean) af.build(xml); 83 } 84 85 static String xml(String className) { 86 return "<mybean class='" + className + "'>" 87 + "<foo>" 88 + " <value name='greeting' value='hello world'/>" 89 + " <system name='java.version'/>" 90 + " <map><value name='fruit' value='apples'/></map>" 91 + " <properties file='src/java/org/oddjob/oddjob.properties'/>" 92 + "</foo>" 93 + "</mybean>"; 94 95 96 } 97 98 public void testProperties() { 99 MapType mt = new MapType(); 100 mt.setValue("fruit", "apples"); 101 mt.setValue("veg", "potatoes"); 102 103 Properties props = (Properties ) mt.valueFor(Properties .class); 104 assertEquals("apples", props.get("fruit")); 105 } 106 } 107 | Popular Tags |