public void DualSendMessageTest()
        {
            MessageBus bus       = new MessageBus();
            var        singleSub = new MockSingleSubscriber();

            bus.Subscribe(singleSub);
            var dualSub = new MockDualSubscriber();

            bus.Subscribe(dualSub);

            StatusMsg statusMsg = new StatusMsg()
            {
                Text = "Test"
            };

            bus.SendMessage(statusMsg);

            Assert.That(singleSub.StatusMsgs[0], Is.EqualTo(statusMsg));
            Assert.That(dualSub.StatusMsgs[0], Is.EqualTo(statusMsg));

            ResetMsg resetMsg = new ResetMsg()
            {
                Reason = "Test2"
            };

            bus.SendMessage(resetMsg);

            Assert.That(singleSub.StatusMsgs.Count, Is.EqualTo(1));
            Assert.That(dualSub.StatusMsgs.Count, Is.EqualTo(1));

            Assert.That(dualSub.ResetMsgs.Count, Is.EqualTo(1));
        }
        public void UnsubscribeTest()
        {
            MessageBus bus       = new MessageBus();
            var        singleSub = new MockSingleSubscriber();
            var        dualSub   = new MockDualSubscriber();

            bus.Subscribe(singleSub);
            bus.Subscribe(dualSub);
            bus.Unsubscribe(singleSub);

            var statSubs  = bus.GetSubscribers(typeof(StatusMsg));
            var resetSubs = bus.GetSubscribers(typeof(ResetMsg));

            Assert.That(statSubs.Count, Is.EqualTo(1));
            Assert.That(resetSubs.Count, Is.EqualTo(1));

            bus.Unsubscribe(dualSub);
            statSubs  = bus.GetSubscribers(typeof(StatusMsg));
            resetSubs = bus.GetSubscribers(typeof(ResetMsg));
            Assert.That(statSubs.Count, Is.EqualTo(0));
            Assert.That(resetSubs.Count, Is.EqualTo(0));
        }