public async Task Publish_Sends_To_All_Subscribers() { _target.AddListener(_listenerA); _target.AddListener(_listenerAB); await _target.Publish(new ObservableA()).ConfigureAwait(false); Assert.AreEqual(1, _listenerA.MessageAReceived, "ListenerA"); Assert.AreEqual(1, _listenerAB.MessageAReceived, "ListenerAB"); }
public MainWindow() { InitializeComponent(); // Use this as construction root for simplicity. // In real world app there should be good framework for this and this should be done // outside of main window for reason that then mainwindow is interchangeable too if required. var dataSource = new InMemoryRepository(); // Dummy data for testing... dataSource.Add(new CarImage {Color="Black", RegisterPlate = "ABC-123", Speed = 140}); var messenger = new MessageAggregator(); var reportViewModel = new ReportViewModel(dataSource, messenger); var colorFilter = new ColorFilterViewModel(); var filterViewModel = new FiltersViewModel(new List<IFilter> {colorFilter}, messenger); // Just for testing, apply dummy filter so that data is shown. messenger.Publish(new Messages.FiltersAppliedMessage()); DataContext = new { Report = reportViewModel, Filters = filterViewModel }; }
public void RegisterWithSingleConsumer_WorksTogether() { string message = "Not set"; var messenger = new MessageAggregator(); messenger.Subscribe<TestMessage>(m => message = m.ExampleMessage); messenger.Publish(new TestMessage {ExampleMessage = "Message example."}); message.Should().Be("Message example."); }
public void WithMultipleRegisteredTypes_OnlyReactCorrectlyTypedMessage() { string firstMessage = "Not set"; string secondMessage = "Not set"; string doNotTouchMessage = "Should not be changed."; var messenger = new MessageAggregator(); messenger.Subscribe<TestMessage>(m => firstMessage = m.ExampleMessage); messenger.Subscribe<TestMessage>(m => secondMessage = m.ExampleMessage); messenger.Subscribe<NotUsedTestMessage>(m => doNotTouchMessage = "This should not happen."); messenger.Publish(new TestMessage { ExampleMessage = "Message example." }); firstMessage.Should().Be("Message example."); secondMessage.Should().Be("Message example."); doNotTouchMessage.Should().Be("Should not be changed."); }