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 TestEventResolverQueue() { int counter = 0; var subscriber = new RawSubscriber <TestEvent>(myEvent => counter++); JEventBus.GetDefault().Register(this, subscriber); var resolverQueue = new ResolverQueue(JEventBus.GetDefault()); JEventBus.GetDefault().Post(new AddEventToResolve(typeof(TestEvent))); var testEvent = new TestEvent(); for (int i = 0; i < 100; i++) { JEventBus.GetDefault().Post(testEvent); } Assert.AreEqual(0, counter); JEventBus.GetDefault().Post(new ResolveEvent(typeof(TestEvent))); Assert.AreEqual(100, counter); for (int i = 0; i < 100; i++) { JEventBus.GetDefault().Post(testEvent); } Assert.AreEqual(200, counter); }
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 RegisterCustomSubscriber() { int counter = 0; var subscriber = new RawSubscriber <TestEvent>(myEvent => counter++); JEventBus.GetDefault().Register(this, subscriber); var testEvent = new TestEvent(); for (int i = 0; i < 100; i++) { JEventBus.GetDefault().Post(testEvent); } Assert.AreEqual(100, counter); }
public void PerformanceTest2(bool performanceMode) { int iteration = 1000000; int counter = 0; var subscriber = new RawSubscriber <TestEvent>(myEvent => counter++); JEventBus.GetDefault().Register(this, subscriber); JEventBus.GetDefault().PerformanceMode = performanceMode; var testEvent = new TestEvent(); long time = NanoTime(); for (int i = 0; i < iteration; i++) { JEventBus.GetDefault().Post(testEvent); } long executionTime = NanoTime() - time; Console.WriteLine( $"Execution time: {executionTime / 1000000} ms | {executionTime} ns | {executionTime / iteration} ns/event & performance mode: {performanceMode}"); Assert.AreEqual(iteration, counter); }
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); }