package nebula.data; import nebula.data.sample.AA; import nebula.data.sample.BrokerIII; import nebula.data.sample.BrokerResultIII; import junit.framework.TestCase; public class BrokerTest extends TestCase { protected void setUp() throws Exception { super.setUp(); } protected void tearDown() throws Exception { super.tearDown(); } class TT implements BrokerIII { String prefix; public TT(String prefix) { this.prefix = prefix; } @Override public String get(String name) { return this.prefix + name; } @Override public String get(String name, String name2) { return prefix + name + name2; } } class Greeting implements BrokerResultIII { BrokerIII a; public Greeting(BrokerIII a) { this.a = a; } @Override public String sayHello(String name) { return a.get(name); } } public final void testInterface_Watch() { TT tt = new TT("Hello "); BrokerHandler<BrokerIII> ba = Broker.broke(BrokerIII.class, tt); BrokerResultIII ge = Broker.watch(ba.get(), new DataAdapter<BrokerIII, BrokerResultIII>() { @Override public BrokerResultIII watch(BrokerIII newData, BrokerIII oldData) { return new Greeting(newData); } }); assertEquals("Hello wangshilian", ge.sayHello("wangshilian")); tt = new TT("Goodbye "); ba.setNewValue(tt); assertEquals("Goodbye wangshilian", ge.sayHello("wangshilian")); } public final void testBrokerClass() { AA aa = new AA(); aa.setName("oldvalue"); BrokerHandler<AA> aaBroker = Broker.broke(AA.class, aa); AA aaDync = aaBroker.get(); aaBroker.setNewValue(aa); assertEquals("oldvalue", aaDync.getName()); aa = new AA(); aa.setName("oldvaluexxx"); aaBroker.setNewValue(aa); assertEquals("oldvaluexxx", aaDync.getName()); } }