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(); }
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(); }
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(); }
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)); }
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>(); }
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(); }
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(); }
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); }
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); }
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); }
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(); }
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(); }
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); }
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); }