public void TestMultipleMessageTypes()
{
var messenger = new Messenger();
var recipient = new OldTestRecipient();
messenger.Register(recipient, typeof(OldTestMessage));
messenger.Register(recipient, typeof(GenericMessage<InvalidOperationException>));
messenger.Register(recipient, typeof(GenericMessage<MissingMethodException>));
Assert.IsNull(recipient.Content);
Assert.IsNull(recipient.ObjectContent1);
Assert.IsNull(recipient.ObjectContent2);
var testObject1 = new InvalidOperationException();
var genericMessage = new GenericMessage<InvalidOperationException>(this, testObject1);
messenger.Broadcast(genericMessage);
Assert.AreEqual(this, recipient.Sender);
Assert.IsNull(recipient.Content);
Assert.AreEqual(testObject1, recipient.ObjectContent1);
Assert.IsNull(recipient.ObjectContent2);
var testObject2 = new MissingMethodException();
var genericMessage2 = new GenericMessage<MissingMethodException>(this, testObject2);
messenger.Broadcast(genericMessage2);
Assert.AreEqual(this, recipient.Sender);
Assert.IsNull(recipient.Content);
Assert.AreEqual(testObject1, recipient.ObjectContent1);
Assert.AreEqual(testObject2, recipient.ObjectContent2);
const string TestString = "Hello world";
var message = new OldTestMessage(this, TestString);
messenger.Broadcast(message);
Assert.AreEqual(this, recipient.Sender);
Assert.AreEqual(TestString, recipient.Content);
Assert.AreEqual(testObject1, recipient.ObjectContent1);
Assert.AreEqual(testObject2, recipient.ObjectContent2);
}