public void SubscribeAndUnsubscribeCauseChangeMessages() { var messenger = new MvxMessengerHub(); MvxSubscriberChangeMessage subscriberChangeMessage = null; var changeToken = messenger.Subscribe <MvxSubscriberChangeMessage>(message => subscriberChangeMessage = message); var token = messenger.Subscribe <TestMessage>(m => { // stuff }); Assert.NotNull(subscriberChangeMessage); Assert.AreEqual(1, subscriberChangeMessage.SubscriberCount); Assert.AreEqual(typeof(TestMessage), subscriberChangeMessage.MessageType); subscriberChangeMessage = null; messenger.Unsubscribe <TestMessage>(token); Assert.NotNull(subscriberChangeMessage); Assert.AreEqual(0, subscriberChangeMessage.SubscriberCount); Assert.AreEqual(typeof(TestMessage), subscriberChangeMessage.MessageType); }
public void PurgeCausesChangeMessage() { var messenger = new MvxMessengerHub(); MvxSubscriberChangeMessage subscriberChangeMessage = null; var changeToken = messenger.Subscribe <MvxSubscriberChangeMessage>(message => subscriberChangeMessage = message); CreateShortLivedSubscription(messenger); Assert.NotNull(subscriberChangeMessage); Assert.AreEqual(1, subscriberChangeMessage.SubscriberCount); Assert.AreEqual(typeof(TestMessage), subscriberChangeMessage.MessageType); subscriberChangeMessage = null; System.Threading.Thread.Sleep(100); GC.Collect(); GC.WaitForFullGCComplete(); messenger.Publish(new TestMessage(this)); System.Threading.Thread.Sleep(100); Assert.NotNull(subscriberChangeMessage); Assert.AreEqual(0, subscriberChangeMessage.SubscriberCount); Assert.AreEqual(typeof(TestMessage), subscriberChangeMessage.MessageType); }
public void PurgeCausesChangeMessage() { var messenger = new MvxMessengerHub(); MvxSubscriberChangeMessage subscriberChangeMessage = null; var changeToken = messenger.Subscribe <MvxSubscriberChangeMessage>(message => subscriberChangeMessage = message); CreateShortLivedSubscription(messenger); Assert.NotNull(subscriberChangeMessage); Assert.AreEqual(1, subscriberChangeMessage.SubscriberCount); Assert.AreEqual(typeof(TestMessage), subscriberChangeMessage.MessageType); subscriberChangeMessage = null; Thread.Sleep(100); GC.Collect(); GC.WaitForFullGCComplete(); messenger.Publish(new TestMessage(this)); Thread.Sleep(100); // TODO - figure out why this test fails in NUnit console runner, but not through VS Test Execution //Assert.NotNull(subscriberChangeMessage); //Assert.AreEqual(0, subscriberChangeMessage.SubscriberCount); //Assert.AreEqual(typeof(TestMessage), subscriberChangeMessage.MessageType); }