public void can_handle_multiple_subscribers() { TestQueuedSubscriber secondSubscriber = new TestQueuedSubscriber(Bus); var msg2 = new TestMessage2(); Bus.Publish(msg2); Assert.Equal(BusMessages.Count, 2); var msg3 = new TestMessage2(); Bus.Publish(msg3); Assert.Equal(BusMessages.Count, 3); Message deQdMsg; if (BusMessages.TryDequeue(out deQdMsg)) { Assert.IsType <TestMessage>(deQdMsg); } if (BusMessages.TryDequeue(out deQdMsg)) { Assert.IsType <TestMessage2>(deQdMsg); } if (BusMessages.TryDequeue(out deQdMsg)) { Assert.IsType <TestMessage2>(deQdMsg); } Assert.False(BusMessages.TryDequeue(out deQdMsg)); Assert.IsOrBecomesTrue( () => Interlocked.Read(ref MessageSubscriber.TimesTestMessageHandled) == 1, 1000, $"Expected 1 TestMessage, handled by first subscriber {MessageSubscriber.TimesTestMessageHandled}"); Assert.IsOrBecomesTrue( () => Interlocked.Read(ref secondSubscriber.TimesTestMessageHandled) == 0, 1000, $"Expected 0 TestMessage handled by second subscriber, found {secondSubscriber.TimesTestMessageHandled}"); Assert.IsOrBecomesTrue( () => Interlocked.Read(ref MessageSubscriber.TimesTestMessage2Handled) == 2, 1000, $"Expected 2 TimesTestMessage2Handled by secondSubscriber, found {MessageSubscriber.TimesTestMessage2Handled}"); Assert.IsOrBecomesTrue( () => Interlocked.Read(ref secondSubscriber.TimesTestMessage2Handled) == 2, 1000, $"Expected 2 TimesTestMessage2Handled by second subscriber, found {secondSubscriber.TimesTestMessage2Handled}"); }
protected override void Given() { MessageSubscriber = new TestQueuedSubscriber(Bus); }