public void TestOneWayMessage() { // Create sender and receiver var sender = new SenderViewModel(); var receiver = new ReceiverViewModel(); // Register receiver to get messages receiver.Subscribe(MessageTokens.Test + "_TestOneWayMessage"); // Set message content sender.SentData = new Random().Next(100); // Capture orig values string origReceiverMessage = receiver.ReceivedMessage; bool origSenderData = sender.ReceivedData; // Listen for response var wait = new AutoResetEvent(false); receiver.OneWayMessageReceived += (o, args) => wait.Set(); // Send message sender.SendOneWayMessageAsync(MessageTokens.Test + "_TestOneWayMessage"); // Wait for response if (!wait.WaitOne(TimeSpan.FromSeconds(15))) Assert.Fail("Message not received in timeout"); // Unregister to receive messages receiver.Unsubscribe(MessageTokens.Test + "_TestOneWayMessage"); // Assert message was received Assert.AreEqual<int>(sender.SentData, receiver.ReceivedData); // Assert receiver and sender data have not changed Assert.AreEqual<string>(origReceiverMessage, receiver.ReceivedMessage); Assert.AreEqual<bool>(origSenderData, sender.ReceivedData); }
public void TestReceiverUnregister() { // Create sender and receiver var sender = new SenderViewModel(); var receiver = new ReceiverViewModel(); // Register receiver to get messages receiver.Subscribe(MessageTokens.Test + "_TestReceiverUnregister"); // Set message content sender.SentData = new Random().Next(100); // Listen for response var wait = new AutoResetEvent(false); receiver.OneWayMessageReceived += (o, args) => wait.Set(); // Send message sender.SendOneWayMessageAsync(MessageTokens.Test + "_TestReceiverUnregister"); // Wait for response if (!wait.WaitOne(TimeSpan.FromSeconds(15))) Assert.Fail("Message not received in timeout"); // Assert message was received Assert.AreEqual<int>(sender.SentData, receiver.ReceivedData); // Unregister receiver receiver.Unsubscribe(MessageTokens.Test + "_TestReceiverUnregister"); // Send another message sender.SentData += 100; sender.SendOneWayMessage(MessageTokens.Test + "_TestReceiverUnregister"); // Assert message was NOT received Assert.AreNotEqual<int>(sender.SentData, receiver.ReceivedData); }
public void TestRepeatSend() { // Create sender and receiver var sender = new SenderViewModel(); var receiver = new ReceiverViewModel(); // Register receiver to get messages receiver.Subscribe(MessageTokens.Test + "_TestRepeatSend"); // Set init value int val = new Random().Next(100); // Iterate 3 times for (int i = 0; i < 3; i++) { // Set message content sender.SentData = val; // Listen for response var wait = new AutoResetEvent(false); receiver.OneWayMessageReceived += (o, args) => wait.Set(); // Send message sender.SendOneWayMessageAsync(MessageTokens.Test + "_TestRepeatSend"); // Wait for response if (!wait.WaitOne(TimeSpan.FromSeconds(15))) Assert.Fail("Message not received in timeout"); // Assert message was received Assert.AreEqual<int>(sender.SentData, receiver.ReceivedData); // Increment value val += 100; } // Unregister to receive messages receiver.Unsubscribe(MessageTokens.Test + "_TestRepeatSend"); }