public void RegisterCustomSubscriberWithPriority() { var subscriber1 = new RawSubscriber <TestEventWithParam>(myEvent => { myEvent.Param++; Assert.AreEqual(3, myEvent.Param); }); var subscriber2 = new RawSubscriber <TestEventWithParam>(myEvent => { myEvent.Param++; Assert.AreEqual(2, myEvent.Param); }, 1); var subscriber3 = new RawSubscriber <TestEventWithParam>(myEvent => { myEvent.Param++; Assert.AreEqual(1, myEvent.Param); }, 2); JEventBus.GetDefault().Register(this, subscriber3); JEventBus.GetDefault().Register(this, subscriber2); JEventBus.GetDefault().Register(this, subscriber1); for (int i = 0; i < 100; i++) { var testEvent = new TestEventWithParam(); JEventBus.GetDefault().Post(testEvent); Assert.AreEqual(3, testEvent.Param); } }
public void TestStage() { int iteration = 100; var subscriber1 = new RawSubscriber <TestEventWithParam>(myEvent => { myEvent.Param++; }); var subscriber2 = new RawSubscriber <TestEventWithParam>(myEvent => { myEvent.Param++; }, 1); var subscriber3 = new RawSubscriber <TestEventWithParam>(myEvent => { myEvent.Param++; }, 3); JEventBus.GetDefault().Register(this, subscriber3); JEventBus.GetDefault().Register(this, subscriber2); JEventBus.GetDefault().BeginStage(); JEventBus.GetDefault().Register(this, subscriber1); for (int i = 0; i < iteration; i++) { var testEvent = new TestEventWithParam(); JEventBus.GetDefault().Post(testEvent); Assert.AreEqual(3, testEvent.Param); } JEventBus.GetDefault().CloseStage(); for (int i = 0; i < iteration; i++) { var testEvent = new TestEventWithParam(); JEventBus.GetDefault().Post(testEvent); Assert.AreEqual(2, testEvent.Param); } }
public void TestExceptionPropagation() { var subscriberAborted = new RawSubscriber <TestEventWithParam>(myEvent => { throw new NotSupportedException(); }, 2); JEventBus.GetDefault().Register(this, subscriberAborted); var toBeAbortedEvent = new TestEventWithParam(); Assert.Catch <TargetInvocationException>(() => JEventBus.GetDefault().Post(toBeAbortedEvent)); }
public void RegisterClassicSubscriberWithPriority2() { var subscriber1 = new TestPriority1EventHandler(); var subscriber2 = new TestPriority2EventHandler(); var subscriber3 = new TestPriority3EventHandler(); JEventBus.GetDefault().Register(subscriber1); JEventBus.GetDefault().Register(subscriber2); JEventBus.GetDefault().Register(subscriber3); for (int i = 0; i < 100; i++) { var testEvent = new TestEventWithParam(); JEventBus.GetDefault().Post(testEvent); Assert.AreEqual(3, testEvent.Param); } }
public void TestEventListener(TestEventWithParam testEvent) { testEvent.Param++; Assert.AreEqual(AssertPriority, testEvent.Param); }
public void TestInterceptors() { int iteration = 100; int unhandled = 0; int aborted = 0; var subscriber1 = new RawSubscriber <TestEventWithParam>(myEvent => { myEvent.Param++; Assert.AreEqual(3, myEvent.Param); }); var subscriber2 = new RawSubscriber <TestEventWithParam>(myEvent => { myEvent.Param++; Assert.AreEqual(2, myEvent.Param); }, 1); var subscriber3 = new RawSubscriber <TestEventWithParam>(myEvent => { myEvent.Param++; Assert.AreEqual(1, myEvent.Param); }, 3); JEventBus.GetDefault().Register(this, subscriber3); JEventBus.GetDefault().Register(this, subscriber2); JEventBus.GetDefault().Register(this, subscriber1); JEventBus.GetDefault().AddInterceptor(new RawInterceptor(o => { if (o is TestEventWithParam eventWithParam) { Assert.AreEqual(0, (o as TestEventWithParam).Param); } })); JEventBus.GetDefault() .AddInterceptor(new RawInterceptor(o => { Assert.AreEqual(3, (o as TestEventWithParam).Param); }), JEventBus.InterceptorType.Post); JEventBus.GetDefault().AddInterceptor(new RawInterceptor(o => { aborted++; Assert.AreEqual(1, (o as TestEventWithParam).Param); }), JEventBus.InterceptorType.Aborted); JEventBus.GetDefault().AddInterceptor(new RawInterceptor(o => { unhandled++; }), JEventBus.InterceptorType.Unhandled); var unhandledTestEvent = new TestEvent(); for (int i = 0; i < iteration; i++) { var testEvent = new TestEventWithParam(); JEventBus.GetDefault().Post(testEvent); JEventBus.GetDefault().Post(unhandledTestEvent); Assert.AreEqual(3, testEvent.Param); } Assert.AreEqual(iteration, unhandled); Assert.AreEqual(0, aborted); var subscriberAborted = new RawSubscriber <TestEventWithParam>(myEvent => { throw new StopPropagationException(); }, 2); JEventBus.GetDefault().Register(this, subscriberAborted); var toBeAbortedEvent = new TestEventWithParam(); JEventBus.GetDefault().Post(toBeAbortedEvent); Assert.AreEqual(1, aborted); Assert.AreEqual(1, toBeAbortedEvent.Param); }