Beispiel #1
0
        public void listeners_can_fail_one_at_a_time()
        {
            var listener1 = new StubListener <Message1>();
            var listener2 = new StubListener <Message1>();
            var listener3 = new StubListener <Message1>();
            var listener4 = new StubListener <Message2>();

            events.AddListeners(listener1, listener2, listener3, this, listener4);
            events.AddListener(new ErrorCausingHandler());

            var message1 = new Message1();
            var message2 = new Message2();

            events.SendMessage(message1);
            events.SendMessage(message2);

            Wait.Until(
                () =>
                listener1.LastMessage != null && listener2.LastMessage != null && listener3.LastMessage != null &&
                listener4.LastMessage != null);

            listener1.LastMessage.ShouldBeTheSameAs(message1);
            listener2.LastMessage.ShouldBeTheSameAs(message1);
            listener3.LastMessage.ShouldBeTheSameAs(message1);

            listener4.LastMessage.ShouldBeTheSameAs(message2);
        }
        public void AddListener_Adds_Listener()
        {
            _target.AddListener(_listenerA);

            _target.Subscriptions.TryGetValue(typeof(IListenFor <ObservableA>), out var subscribers);

            Assert.IsTrue(subscribers.Count == 1);
        }
        public void Should_be_able_to_send_to_both_using_base_type()
        {
            var newMessageHandler  = new NewMessageHandler();
            var baseMessageHandler = new BaseMessageHandler();
            var eventAggregator    = new EventAggregator();

            eventAggregator.AddListener(newMessageHandler);
            eventAggregator.AddListener(baseMessageHandler);

            eventAggregator.SendMessage <BaseMessage>(new NewMessage());

            baseMessageHandler.WasHandled.ShouldBeTrue();
            newMessageHandler.WasHandled.ShouldBeTrue();
        }
        protected override void beforeEach()
        {
            events = new EventAggregator(new SynchronizationContext(), new IHandler[0]);
            Services.Inject <IEventAggregator>(events);

            events.AddListener(new CloseableThatCannotBeClosed());
            events.AddListener(MockFor <ICloseable>());

            MockFor <IMessageCreator>().Expect(
                x => x.AskUser(ScreenConductor.CAN_CLOSE_TITLE, "Test1 has unsaved changes\nTests are running")).
            Return(UserMessageResponse.Yes);

            didClose = ClassUnderTest.CanClose();
        }
Beispiel #5
0
        public void Should_match_same_type_only()
        {
            var newMessageHandler  = new NewMessageHandler();
            var baseMessageHandler = new BaseMessageHandler();
            var eventAggregator    = new EventAggregator();

            eventAggregator.AddListener(newMessageHandler);
            eventAggregator.AddListener(baseMessageHandler);

            eventAggregator.SendMessage(new BaseMessage());

            baseMessageHandler.BaseMessageWasHandled.ShouldBeTrue();
            newMessageHandler.NewMessageWasHandled.ShouldBeFalse();
        }
Beispiel #6
0
        public void Should_be_able_to_send_using_object_type()
        {
            var newMessageHandler  = new NewMessageHandler();
            var baseMessageHandler = new BaseMessageHandler();
            var eventAggregator    = new EventAggregator();

            eventAggregator.AddListener(newMessageHandler);
            eventAggregator.AddListener(baseMessageHandler);

            eventAggregator.SendMessage <object>(new BaseMessage());

            baseMessageHandler.BaseMessageWasHandled.ShouldBeTrue();
            newMessageHandler.NewMessageWasHandled.ShouldBeFalse();
        }
Beispiel #7
0
        public void Message_inheritance_default_should_not_be_able_to_send_class_using_inheritance()
        {
            var newMessageHandler  = new NewMessageHandler();
            var baseMessageHandler = new BaseMessageHandler();
            var eventAggregator    = new EventAggregator();

            eventAggregator.AddListener(newMessageHandler);
            eventAggregator.AddListener(baseMessageHandler);

            eventAggregator.SendMessage <object>(new NewMessage());

            baseMessageHandler.BaseMessageWasHandled.ShouldBeFalse();
            newMessageHandler.NewMessageWasHandled.ShouldBeTrue();
        }
        public void Should_throw_when_listener_with_no_interfaces_added()
        {
            var eventAggregator = new EventAggregator();
            NoListenerInterfaces noListenerInterfaces = new NoListenerInterfaces();

            typeof(ArgumentException).ShouldBeThrownBy(() => eventAggregator.AddListener(noListenerInterfaces, null));
        }
Beispiel #9
0
        public void Message_inheritance_enabled_should_be_able_to_send_class_using_inheritance()
        {
            var newMessageHandler  = new NewMessageHandler();
            var baseMessageHandler = new BaseMessageHandler();
            var eventAggregator    = new EventAggregator(new EventAggregator.Config {
                SupportMessageInheritance = true
            });

            eventAggregator.AddListener(newMessageHandler);
            eventAggregator.AddListener(baseMessageHandler);

            eventAggregator.SendMessage <object>(new NewMessage());

            baseMessageHandler.BaseMessageWasHandled.ShouldBeTrue();
            newMessageHandler.NewMessageWasHandled.ShouldBeTrue();
        }
        public static void Run()
        {
            var eventAggregationManager = new EventAggregator();

            eventAggregationManager.AddListener(new BasicHandler());

            eventAggregationManager.SendMessage <SampleEventMessage>();
        }
Beispiel #11
0
        public void Should_be_able_to_send_subclass_using_interface()
        {
            var newMessageHandler  = new NewMessageHandler();
            var baseMessageHandler = new BaseMessageHandler();
            var messageHandler     = new InterfaceHandler();
            var eventAggregator    = new EventAggregator();

            eventAggregator.AddListener(newMessageHandler);
            eventAggregator.AddListener(baseMessageHandler);
            eventAggregator.AddListener(messageHandler);

            eventAggregator.SendMessage <IMessage>(new BaseMessage());

            baseMessageHandler.BaseMessageWasHandled.ShouldBeTrue();
            newMessageHandler.NewMessageWasHandled.ShouldBeFalse();
            messageHandler.MessageWasHandled.ShouldBeTrue();
        }
Beispiel #12
0
        public void Message_inheritance_default_should_not_be_able_to_listen_using_interface()
        {
            var newMessageHandler  = new NewMessageHandler();
            var baseMessageHandler = new BaseMessageHandler();
            var messageHandler     = new InterfaceHandler();
            var eventAggregator    = new EventAggregator();

            eventAggregator.AddListener(newMessageHandler);
            eventAggregator.AddListener(baseMessageHandler);
            eventAggregator.AddListener(messageHandler);

            eventAggregator.SendMessage(new BaseMessage());

            baseMessageHandler.BaseMessageWasHandled.ShouldBeTrue();
            newMessageHandler.NewMessageWasHandled.ShouldBeFalse();
            messageHandler.MessageWasHandled.ShouldBeFalse();
        }
Beispiel #13
0
        public void SetUp()
        {
            recordingLogger = new RecordingLogger();

            events = new EventAggregator(() => recordingLogger, new IListener[0]);

            handler = new StubMessage1Handler();
            events.AddListener(handler);
        }
		public void Should_send_message()
		{
			var someMessageHandler = new SomeMessageHandler();
			var eventAggregator = new EventAggregator();

			eventAggregator.AddListener(someMessageHandler);
			eventAggregator.SendMessage<SomeMessage>();
			someMessageHandler.EventsTrapped.Count().ShouldEqual(1);
		}
        public void SetUp()
        {
            recordingLogger = new RecordingLogger();

            events = new EventAggregator(() => recordingLogger, new IListener[0]);

            handler = new StubMessage1Handler();
            events.AddListener(handler);
        }
Beispiel #16
0
 public OrdersVM(OrderService categoryService, MainWindowVM mainVM, EventAggregator eventAggregator)
 {
     _ordersService         = categoryService;
     _mainVM                = mainVM;
     _loadOrdersCommand     = new Command(async() => await LoadOrdersAsync());
     _deleteSelectedCommand = new Command(async() => await DeleteSelectedItemAsync());
     _eventAggregator       = eventAggregator;
     _eventAggregator.AddListener <OrderInsertedEvent>(this, true);
 }
        public void Should_send_message()
        {
            var someMessageHandler = new SomeMessageHandler();
            var eventAggregator    = new EventAggregator();

            eventAggregator.AddListener(someMessageHandler);
            eventAggregator.SendMessage <SomeMessage>();
            someMessageHandler.EventsTrapped.Count().ShouldEqual(1);
        }
        public void When_object_has_multiple_listeners_defined_in_an_interface_should_subscribe_to_all()
        {
            var eventAggregator = new EventAggregator();
            var handler         = new SomeMessageHandler3();

            eventAggregator.AddListener(handler);
            eventAggregator.SendMessage <SomeMessage>();
            eventAggregator.SendMessage <SomeMessage2>();

            handler.EventsTrapped.Count().ShouldEqual(2);
        }
Beispiel #19
0
        public void Should_be_able_to_subscribe_to_aggregating_interface()
        {
            var someMessageHandler = new MyClassHandler();
            var eventAggregator    = new EventAggregator();

            eventAggregator.AddListener(someMessageHandler);

            eventAggregator.SendMessage <MyClass1>();
            eventAggregator.SendMessage <MyClass2>();

            someMessageHandler.MyClass1.ShouldBeTrue();
            someMessageHandler.MyClass2.ShouldBeTrue();
        }
		public void Can_unsubscribe_manually()
		{
			var someMessageHandler = new SomeMessageHandler();
			var eventAggregator = new EventAggregator();
			eventAggregator.AddListener(someMessageHandler);
			eventAggregator.SendMessage<SomeMessage>();
			someMessageHandler.EventsTrapped.Count().ShouldEqual(1);


			eventAggregator.RemoveListener(someMessageHandler);
			eventAggregator.SendMessage<SomeMessage>();

			someMessageHandler.EventsTrapped.Count().ShouldEqual(1);
		}
        public void Can_unsubscribe_manually()
        {
            var someMessageHandler = new SomeMessageHandler();
            var eventAggregator    = new EventAggregator();

            eventAggregator.AddListener(someMessageHandler);
            eventAggregator.SendMessage <SomeMessage>();
            someMessageHandler.EventsTrapped.Count().ShouldEqual(1);


            eventAggregator.RemoveListener(someMessageHandler);
            eventAggregator.SendMessage <SomeMessage>();

            someMessageHandler.EventsTrapped.Count().ShouldEqual(1);
        }
Beispiel #22
0
        public void Multiple_listeners_should_support_inheritance_with_normal_class_and_object_caller()
        {
            var bothMessageHandler = new BothNewAndMessageHandler();

            var eventAggregator = new EventAggregator(new EventAggregator.Config {
                SupportMessageInheritance = true
            });

            eventAggregator.AddListener(bothMessageHandler);

            eventAggregator.SendMessage <object>(new NewMessage());

            bothMessageHandler.MessageWasHandled.ShouldBeTrue();
            bothMessageHandler.NewMessageWasHandled.ShouldBeTrue();
        }
Beispiel #23
0
        public void Multiple_listeners_should_support_inheritance_with_base_class()
        {
            var bothMessageHandler = new BothNewAndMessageHandler();

            var eventAggregator = new EventAggregator(new EventAggregator.Config {
                SupportMessageInheritance = true
            });

            eventAggregator.AddListener(bothMessageHandler);

            eventAggregator.SendMessage(new BaseMessage());

            bothMessageHandler.MessageWasHandled.ShouldBeTrue();
            bothMessageHandler.NewMessageWasHandled.ShouldBeFalse();
        }
Beispiel #24
0
        public static void Run()
        {
            var config = new EventAggregator.Config
            {
                // Make the marshaler run in the background thread
                DefaultThreadMarshaler = action => Task.Factory.StartNew(action),
            };

            var eventAggregationManager = new EventAggregator(config);

            eventAggregationManager.AddListener(new LongRunningHandler());

            "EventAggregator setup complete".Log();

            eventAggregationManager.SendMessage <SampleEventMessage>();
        }
        public void Can_remove_a_good_listener_with_a_zombied_listener()
        {
            var eventAggregator = new EventAggregator();

            SomeMessageHandler2 messageHandler2 = new SomeMessageHandler2();
            AddHandlerInScopeThatWillRemoveInstanceWhenGarbageCollected(eventAggregator, false);
            eventAggregator.AddListener(messageHandler2);
            GC.Collect();

            // both good and zombied listeners
            eventAggregator.GetListeners().Count().ShouldEqual(2);

            // should not throw if removing a good listener
            eventAggregator.RemoveListener(messageHandler2);

            // should be only zombie left
            eventAggregator.GetListeners().Count().ShouldEqual(1);
            eventAggregator.SendMessage<SomeMessage>();

            // after call to SendMessage, the zombied listener should be removed.
            eventAggregator.GetListeners().Count().ShouldEqual(0);
        }
        public void Can_remove_a_good_listener_with_a_zombied_listener()
        {
            var eventAggregator = new EventAggregator();

            SomeMessageHandler2 messageHandler2 = new SomeMessageHandler2();

            AddHandlerInScopeThatWillRemoveInstanceWhenGarbageCollected(eventAggregator, false);
            eventAggregator.AddListener(messageHandler2);
            GC.Collect();

            // both good and zombied listeners
            eventAggregator.GetListeners().Count().ShouldEqual(2);

            // should not throw if removing a good listener
            eventAggregator.RemoveListener(messageHandler2);

            // should be only zombie left
            eventAggregator.GetListeners().Count().ShouldEqual(1);
            eventAggregator.SendMessage <SomeMessage>();

            // after call to SendMessage, the zombied listener should be removed.
            eventAggregator.GetListeners().Count().ShouldEqual(0);
        }
Beispiel #27
0
        protected override void LoadContent()
        {
            renderer.LoadContent();

            GameDataLoader.LoadContent(Content);

            base.LoadContent();

            LevelEditor = new Editor.Editor(this);

            eventAggregationManager.AddListener(new GoreFactory(this), true);
            eventAggregationManager.AddListener(new SpawnPlayersHandler(this), true);
            eventAggregationManager.AddListener(new StartGameHandler(this), true);
            eventAggregationManager.AddListener(new CheckGameStateHandler(this), true);
            eventAggregationManager.AddListener(new ShootHandler(this), true);
            eventAggregationManager.AddListener(new PowerupPickedUpHandler(this), true);

            eventAggregationManager.SendMessage(new StartGameMessage());

            DebugCommandUI = new DebugCommandUI(this, DefaultFont);
            Components.Add(DebugCommandUI);
        }
 public void Should_throw_when_listener_with_no_interfaces_added()
 {
     var eventAggregator = new EventAggregator();
     NoListenerInterfaces noListenerInterfaces = new NoListenerInterfaces();
     typeof(ArgumentException).ShouldBeThrownBy(() => eventAggregator.AddListener(noListenerInterfaces, null));
 }
        public void Should_throw_when_null_listener_added()
        {
            var eventAggregator = new EventAggregator();

            typeof(ArgumentNullException).ShouldBeThrownBy(() => eventAggregator.AddListener(null, null));
        }
 public void Should_throw_when_null_listener_added()
 {
     var eventAggregator = new EventAggregator();
     typeof(ArgumentNullException).ShouldBeThrownBy(() => eventAggregator.AddListener(null, null));
 }
        public void TestFileFollowerwithEventAggregator()
        {
            var broker = new EventAggregator(new ChannelManager(), new ContextFactory());
            var publisher = new EventPublisher(broker);
            var filefollower = new FileFollower(publisher);
            Guid identifier = Guid.Empty;

            var longrunningcontext = new PoolFiber();
            longrunningcontext.Start();

            //register with longrunning context.
            broker.AddListener<StartFollowingFileMessage>(longrunningcontext, filefollower.Handle);

            //register with normal context.
            broker.AddListener<StopFollowingFileMessage>(filefollower.Handle);

            var reset = new AutoResetEvent(false);
            broker.AddListener<FollowerStartedMessage>(message =>
                                                           {
                                                               Console.WriteLine("Follower Started" + message.Identifier);
                                                               identifier = message.Identifier;
                                                               broker.SendMessage(new StopFollowingFileMessage(identifier));
                                                           });
            broker.AddListener<FollowerStoppedMessage>(message =>
                                                           {
                                                               if (message.Identifier == identifier)
                                                               {
                                                                   Console.WriteLine("Follower stopped" + message.Identifier);
                                                                   reset.Set();
                                                               }
                                                           });

            publisher.SendMessage(new StartFollowingFileMessage(@"ExampleFiles/ExampleLogFiles/LotroLog.txt"));
            Assert.IsTrue(reset.WaitOne(5000, false));
        }
        public void When_object_has_multiple_listeners_defined_in_an_interface_should_subscribe_to_all()
        {
            var eventAggregator = new EventAggregator();
            var handler = new SomeMessageHandler3();
            eventAggregator.AddListener(handler);
            eventAggregator.SendMessage<SomeMessage>();
            eventAggregator.SendMessage<SomeMessage2>();

            handler.EventsTrapped.Count().ShouldEqual(2);
        }