package com.nominanuda.dataobject; import static com.nominanuda.dataobject.DataStructHelper.Z; import static com.nominanuda.zen.obj.wrap.Wrap.WF; import static com.nominanuda.lang.Collections.hashMap; import static java.util.Arrays.asList; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.util.List; import java.util.Map; import org.junit.Test; public class WrappingFactoryCollectionTest { @Test public void testColl() { Obj o11 = Z.obj(); o11.putArray("obj2s", Z.arr(Z.obj("foo", "bar"))); assertEquals("bar", WF.wrap(o11, Obj1.class).obj2s().get(0).foo()); Obj1 o12 = Obj1.make() .obj2s(asList( Obj2.make() .foo("bar"))); assertEquals(o11, o12.unwrap()); Obj1 o13 = WF.wrap(o11, Obj1.class); assertTrue( ObjWrapper.deepEquals(o13, o12)); } @Test public void testMap() { Obj o11 = Z.obj(); o11.putObject("obj2Map1", Z.obj("k", Z.obj("foo", "bar"))); assertEquals("bar", WF.wrap(o11, Obj1.class).obj2Map1().get("k").foo()); Obj1 o12 = Obj1.make() .obj2Map1(hashMap( "k", Obj2.make() .foo("bar"))); assertEquals(o11, o12.unwrap()); Obj1 o13 = WF.wrap(o11, Obj1.class); assertTrue( ObjWrapper.deepEquals(o13, o12)); } public interface Obj1 extends ObjWrapper { static Obj1 make() { return WF.wrap(Obj1.class); } @Cls(Obj2.class) List<Obj2> obj2s(); Obj1 obj2s(List<Obj2> l); @Cls(Obj2.class) Map<String,Obj2> obj2Map1(); Obj1 obj2Map1(Map<String,Obj2> m); } public interface Obj2 extends ObjWrapper { static Obj2 make() { return WF.wrap(Obj2.class); } Obj2 foo(String s); String foo(); } }