public async Task Test_multi_event_publish_succeed()
        {
            //mock IEventHandler<MsgEvent>
            Mock <IEventHandler <MsgEvent> > mockMsgEventHandler = new Mock <IEventHandler <MsgEvent> >();
            //mock IEventHandler<LostEvent>
            Mock <IEventHandler <LostEvent> > mockLostEventHandler = new Mock <IEventHandler <LostEvent> >();
            var testMsgEvent = new MsgEvent()
            {
                Message = "test_msg"
            };
            var testLostEvent = new LostEvent()
            {
                LostInfo = "test_LostInfo"
            };

            //await new EventBus(new EventHandleProvider(mockMsgEventHandler.Object, mockLostEventHandler.Object))
            //    .Publish(testMsgEvent)
            //    .DoAsync(eventBus => eventBus.Publish(testLostEvent))
            //    .DoAsync(eventBus => eventBus.Publish(testLostEvent));

            await new EventBus(new EventHandleProvider(mockMsgEventHandler.Object, mockLostEventHandler.Object))
            .Publish(testMsgEvent)
            .Publish(testLostEvent)
            .Publish(testLostEvent);

            mockMsgEventHandler.Verify(obj => obj.Handle(It.Is <MsgEvent>(msgEvent => msgEvent.Message == testMsgEvent.Message)), Times.Once);
            mockLostEventHandler.Verify(obj => obj.Handle(It.Is <LostEvent>(lostEvent => lostEvent.LostInfo == testLostEvent.LostInfo)), Times.Exactly(2));
        }
Exemple #2
0
        public async Task Test_multi_event_publish_succeed()
        {
            var container = new ServiceContainer();

            container.Register <IDoSomething, DoSomething>();
            //mock and register IEventHandler<MsgEvent>
            Mock <IEventHandler <MsgEvent> > mockMsgEventHandler = new Mock <IEventHandler <MsgEvent> >();

            container.Register <IEventHandler <MsgEvent> >(factory => mockMsgEventHandler.Object);
            //mock and register IEventHandler<LostEvent>
            Mock <IEventHandler <LostEvent> > mockLostEventHandler = new Mock <IEventHandler <LostEvent> >();

            container.Register <IEventHandler <LostEvent> >(factory => mockLostEventHandler.Object);
            var testMsgEvent = new MsgEvent()
            {
                Message = "test_msg"
            };
            var testLostEvent = new LostEvent()
            {
                LostInfo = "test_LostInfo"
            };

            IEventBus eventBus = new EventBus(this.GenerateEventHandleProvider(container));
            await eventBus.Publish(testMsgEvent);

            await eventBus.Publish(testLostEvent);

            await eventBus.Publish(testLostEvent);

            mockMsgEventHandler.Verify(obj => obj.Handle(It.Is <MsgEvent>(msgEvent => msgEvent.Message == testMsgEvent.Message)), Times.Once);
            mockLostEventHandler.Verify(obj => obj.Handle(It.Is <LostEvent>(lostEvent => lostEvent.LostInfo == testLostEvent.LostInfo)), Times.Exactly(2));
        }
Exemple #3
0
        public async Task Test_publish_MsgEvent_and_LostEvent()
        {
            var container = new ServiceContainer();
            Mock <IDoSomething> mockDoSomething = new Mock <IDoSomething>();

            container.Register <IDoSomething>(factory => mockDoSomething.Object);
            var msgEvent = new MsgEvent()
            {
                Message = "你好"
            };
            var lostEvent = new LostEvent()
            {
                LostInfo = "迷失"
            };

            SampleEventIOCFactory.RegisterEventHandlersFromAssemblies(container, () => new PerContainerLifetime(),
                                                                      this.GetType().Assembly);

            IEventBus eventBus = new EventBus(this.GenerateEventHandleProvider(container));
            await eventBus.Publish(msgEvent);

            await eventBus.Publish(lostEvent);

            mockDoSomething.Verify(obj => obj.JustDoIt(It.Is <string>(text => text == msgEvent.Message)), Times.Once);
            mockDoSomething.Verify(obj => obj.JustDoIt(It.Is <string>(text => text == lostEvent.LostInfo)), Times.Exactly(2));
        }
        public async Task Test_publish_MsgEvent_and_LostEvent()
        {
            var msgEvent = new MsgEvent()
            {
                Message = "你好"
            };
            var lostEvent = new LostEvent()
            {
                LostInfo = "迷失"
            };

            IEventBus eventBus = new EventBus(this.GenerateEventHandleProvider());
            await eventBus.Publish(msgEvent);

            await eventBus.Publish(lostEvent);

            Assert.AreEqual(2, msgEvent.GetMessageExecuteTimes);
            Assert.AreEqual(2, lostEvent.GetLostInfoExecuteTimes);
        }
Exemple #5
0
 void Lost()
 {
     LostEvent?.Invoke(this);
     Destroy(gameObject);
 }
Exemple #6
0
 void BallLost()
 {
     LostEvent?.Invoke(this);
     SimplePool.Despawn(gameObject);
 }