@Test public void testEventSuperInterfaceHierarchy() { eventBus.register(this); eventBus.post(new MyEventInterfaceExtended() { }); assertEquals(0, countMyEventInterface); assertEquals(0, countMyEventInterfaceExtended); }
@Test public void testCancel() { Subscriber canceler = new Subscriber(1, true); eventBus.register(new Subscriber(0, false)); eventBus.register(canceler); eventBus.register(new Subscriber(0, false)); eventBus.post("42"); assertEquals(1, eventCount.intValue()); eventBus.unregister(canceler); eventBus.post("42"); assertEquals(1 + 2, eventCount.intValue()); }
@Test public void testPostStickyRegisterNonSticky() throws InterruptedException { eventBus.postSticky("Sticky"); eventBus.register(new NonStickySubscriber()); assertNull(lastEvent); assertEquals(0, eventCount.intValue()); }
@Test public void testThrowSubscriberException() { eventBus = EventBus.builder().throwSubscriberException(true).build(); eventBus.register(new SubscriberExceptionEventTracker()); eventBus.register(new ThrowingSubscriber()); try { eventBus.post("Foo"); fail("Should have thrown"); } catch (EventBusException e) { // Expected } }
@Test public void testNoSubscriberEvent() { eventBus.register(this); eventBus.post("Foo"); assertEventCount(1); assertEquals(NoSubscriberEvent.class, lastEvent.getClass()); NoSubscriberEvent noSub = (NoSubscriberEvent) lastEvent; assertEquals("Foo", noSub.originalEvent); assertSame(eventBus, noSub.eventBus); }
@Test public void testDoNotSendSubscriberExceptionEvent() { eventBus = EventBus.builder().logSubscriberExceptions(false).sendSubscriberExceptionEvent(false).build(); eventBus.register(new SubscriberExceptionEventTracker()); eventBus.register(new ThrowingSubscriber()); eventBus.post("Foo"); assertEventCount(0); }
@Test public void testMultipleSubscribeMethodsForEvent() { eventBus.register(this); MyEvent event = new MyEvent(); eventBus.post(event); assertEquals(1, countMyEvent); assertEquals(1, countMyEvent2); }
@Test public void testSubscriberExceptionEvent() { eventBus = EventBus.builder().logSubscriberExceptions(false).build(); eventBus.register(this); eventBus.post("Foo"); assertEventCount(1); assertEquals(SubscriberExceptionEvent.class, lastEvent.getClass()); SubscriberExceptionEvent exEvent = (SubscriberExceptionEvent) lastEvent; assertEquals("Foo", exEvent.causingEvent); assertSame(this, exEvent.causingSubscriber); assertEquals("Bar", exEvent.throwable.getMessage()); }
@Test public void testPostNonStickyRegisterSticky() throws InterruptedException { eventBus.post("NonSticky"); eventBus.register(this); assertNull(lastEvent); assertEquals(0, eventCount.intValue()); }
@Test public void testRegisterAndPost() { // Use an activity to test real life performance StringEventSubscriber stringEventSubscriber = new StringEventSubscriber(); String event = "Hello"; long start = System.currentTimeMillis(); eventBus.register(stringEventSubscriber); long time = System.currentTimeMillis() - start; log("Registered in " + time + "ms"); eventBus.post(event); assertEquals(event, stringEventSubscriber.lastStringEvent); }
@Test public void testRegisterUnregisterAndPostTwoTypes() { eventBus.register(this); eventBus.unregister(this); eventBus.post(42); eventBus.post("Hello"); assertEquals(0, countIntEvent); assertEquals(0, lastIntEvent); assertEquals(0, countStringEvent); }
@Test public void testPostStickyRemoveAll() throws InterruptedException { eventBus.postSticky("Sticky"); eventBus.postSticky(new IntTestEvent(77)); eventBus.removeAllStickyEvents(); assertNull(eventBus.getStickyEvent(String.class)); assertNull(eventBus.getStickyEvent(IntTestEvent.class)); eventBus.register(this); assertNull(lastEvent); assertEquals(0, eventCount.intValue()); }
@Test public void testPostOnDifferentEventBus() { eventBus.register(this); new EventBus().post("Hello"); assertEquals(0, countStringEvent); }
@Test public void testHasSubscriberForEventSuperclass() { assertFalse(eventBus.hasSubscriberForEvent(String.class)); Object subscriber = new ObjectSubscriber(); eventBus.register(subscriber); assertTrue(eventBus.hasSubscriberForEvent(String.class)); eventBus.unregister(subscriber); assertFalse(eventBus.hasSubscriberForEvent(String.class)); }
@Test public void testSubscriberInJar() { SubscriberInJar subscriber = new SubscriberInJar(); eventBus.register(subscriber); eventBus.post("Hi Jar"); eventBus.post(42); Assert.assertEquals(1, subscriber.getCollectedStrings().size()); Assert.assertEquals("Hi Jar", subscriber.getCollectedStrings().get(0)); } }
@Test public void testHasSubscriberForEventImplementedInterface() { assertFalse(eventBus.hasSubscriberForEvent(String.class)); Object subscriber = new CharSequenceSubscriber(); eventBus.register(subscriber); assertTrue(eventBus.hasSubscriberForEvent(CharSequence.class)); assertTrue(eventBus.hasSubscriberForEvent(String.class)); eventBus.unregister(subscriber); assertFalse(eventBus.hasSubscriberForEvent(CharSequence.class)); assertFalse(eventBus.hasSubscriberForEvent(String.class)); }
@Test public void testHasSubscriberForEventSuperclass() { assertFalse(eventBus.hasSubscriberForEvent(String.class)); Object subscriber = new ObjectSubscriber(); eventBus.register(subscriber); assertTrue(eventBus.hasSubscriberForEvent(String.class)); eventBus.unregister(subscriber); assertFalse(eventBus.hasSubscriberForEvent(String.class)); }