public async Task PubAndUnSub() { int count = 0; var mq = new LocalMessageQueue(null); mq.Subscribe("topic", msg => { Interlocked.Increment(ref count); }); int i = 0; Task.Factory.StartNew(async() => { for (; i < 50; ++i) { await mq.PublishAsync("topic", "a"); await Task.Delay(100); } }).ConfigureAwait(false).GetAwaiter(); await Task.Delay(1500); mq.Unsubscribe("topic"); while (i < 50) { await Task.Delay(100); } Assert.True(count < 100); }
public void LocalMessageQueue_UnsubscribeAllRemovesSubscriber() { var queue = new LocalMessageQueue <Int32>(); var subscriber = new MockMessageSubscriber(); queue.Subscribe(subscriber, 1); queue.Unsubscribe(subscriber); queue.Publish(1, null); queue.Process(); TheResultingValue(subscriber.ReceivedMessage).ShouldBe(false); }