コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        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);
            }
        }
コード例 #5
0
 public void TestEventListener(TestEventWithParam testEvent)
 {
     testEvent.Param++;
     Assert.AreEqual(AssertPriority, testEvent.Param);
 }
コード例 #6
0
        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);
        }