public void MultipleSubscribeAndPublishAllowsMessageToBeReceived()
{
var messenger = new MvxMessengerHub();
var message = new TestMessage(this);
var otherMessage = new OtherTestMessage(this);
var messageReceived = 0;
messenger.Subscribe<TestMessage>(m =>
{
Assert.That(m, Is.EqualTo(message));
Assert.That(m.Sender, Is.EqualTo(this));
messageReceived++;
});
var otherMessageReceived = 0;
messenger.Subscribe<OtherTestMessage>(m =>
{
Assert.That(m, Is.EqualTo(otherMessage));
Assert.That(m.Sender, Is.EqualTo(this));
otherMessageReceived++;
});
messenger.Publish(otherMessage);
Assert.AreEqual(0, messageReceived);
Assert.AreEqual(1, otherMessageReceived);
messenger.Publish(message);
Assert.AreEqual(1, messageReceived);
Assert.AreEqual(1, otherMessageReceived);
messenger.Publish(message);
Assert.AreEqual(2, messageReceived);
Assert.AreEqual(1, otherMessageReceived);
messenger.Publish(message);
Assert.AreEqual(3, messageReceived);
Assert.AreEqual(1, otherMessageReceived);
messenger.Publish(otherMessage);
Assert.AreEqual(3, messageReceived);
Assert.AreEqual(2, otherMessageReceived);
}