예제 #1
0
        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");
        }
예제 #2
0
        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.");
        }