@Test public void testInjectWildCard() { IEclipseContext context = EclipseContextFactory.create(); final Display d = Display.getDefault(); context.set(Realm.class, DisplayRealm.getRealm(d)); context.set( UISynchronize.class, new UISynchronize() { @Override public void syncExec(Runnable runnable) { d.syncExec(runnable); } @Override public void asyncExec(Runnable runnable) { d.asyncExec(runnable); } }); InjectStarEvent target = ContextInjectionFactory.make(InjectStarEvent.class, context); // initial state assertEquals(0, target.counter1); assertNull(target.data); // send event helper.sendEvent("e4/test/eventInjection", "sample"); assertEquals(1, target.counter1); assertEquals("sample", target.data); }
private void wrapSetup() { IEclipseContext context = EclipseContextFactory.create(); InjectTarget target = ContextInjectionFactory.make(InjectTarget.class, context); // send event helper.sendEvent("e4/test/event1", "event1data"); assertEquals(1, target.counter1); assertEquals("event1data", target.string1); target.valid = false; }
// NOTE: this test relies on GC being actually done on the test object. // Java does not guarantee that to happen, so, if this test starts to fail // intermittently, feel free to comment it @Test public void testEventInjectionUnsubscribe() { IInjector injector = InjectorFactory.getDefault(); injector.addBinding(MyBinding.class); wrapSetup(); // do it in a separate method to ease GC System.gc(); System.runFinalization(); System.gc(); helper.sendEvent("e4/test/event1", "wrong"); assertFalse(testFailed); // target would have asserted if it is still // subscribed }
@Test public void testEventInjection() { IInjector injector = InjectorFactory.getDefault(); injector.addBinding(MyBinding.class); IEclipseContext context = EclipseContextFactory.create(); final Display d = Display.getDefault(); context.set(Realm.class, DisplayRealm.getRealm(d)); context.set( UISynchronize.class, new UISynchronize() { @Override public void syncExec(Runnable runnable) { d.syncExec(runnable); } @Override public void asyncExec(Runnable runnable) { d.asyncExec(runnable); } }); ContextInjectionFactory.setDefault(context); InjectTarget target = ContextInjectionFactory.make(InjectTarget.class, context); // initial state assertEquals(0, target.counter1); assertNull(target.string1); assertEquals(0, target.counter2); assertNull(target.string2); assertEquals(1, target.counter3); assertNull(target.string3); assertNotNull(target.myBinding); // send event1 helper.sendEvent("e4/test/event1", "event1data"); assertEquals(1, target.counter1); assertEquals("event1data", target.string1); assertEquals(0, target.counter2); assertNull(target.string2); assertEquals(1, target.counter3); assertNull(target.string3); assertNotNull(target.myBinding); // send event2 helper.sendEvent("e4/test/event2", "event2data"); assertEquals(1, target.counter1); assertEquals("event1data", target.string1); assertEquals(1, target.counter2); assertEquals("event2data", target.string2); assertEquals(1, target.counter3); assertNull(target.string3); assertNotNull(target.myBinding); // send event3 helper.sendEvent("e4/test/event3", "event3data"); assertEquals(1, target.counter1); assertEquals("event1data", target.string1); assertEquals(1, target.counter2); assertEquals("event2data", target.string2); assertEquals(2, target.counter3); assertEquals("event3data", target.string3); assertNotNull(target.myBinding); // send event1 again helper.sendEvent("e4/test/event1", "abc"); assertEquals(2, target.counter1); assertEquals("abc", target.string1); assertEquals(1, target.counter2); assertEquals("event2data", target.string2); assertEquals(2, target.counter3); assertEquals("event3data", target.string3); assertNotNull(target.myBinding); }