public void Can_return_message_after_queue_has_been_disposed() { // Arrange var item1 = new DispatchItem(new XUri("http://a"), new DispatcherEvent(new XDoc("msg"), new XUri("http://channl"), new XUri("http://resource")), "a"); var dispatchResult = new Result<bool>(); var dispatchQueue = new MemoryPubSubDispatchQueue("queue", TaskTimerFactory.Current, 1.Minutes(), (item) => dispatchResult); dispatchQueue.Enqueue(item1); // Act dispatchQueue.Dispose(); dispatchResult.Return(true); // Assert // should not have thrown on the return, that is all }
public void Disposed_queue_throws_on_access() { // Arrange var dispatchQueue = new MemoryPubSubDispatchQueue("queue", TaskTimerFactory.Current, 1.Minutes(), i => new Result<bool>().WithReturn(true)); // Act dispatchQueue.Dispose(); // Assert try { var item = new DispatchItem(new XUri("http://a"), new DispatcherEvent(new XDoc("msg"), new XUri("http://channl"), new XUri("http://resource")), "a"); dispatchQueue.Enqueue(item); Assert.Fail("Enqueue didn't throw"); } catch(ObjectDisposedException) { } catch(Exception e) { Assert.Fail(string.Format("Enqueue threw unexpected exception: {0}", e)); } }
public void Dispose_is_idempotent() { // Arrange var dispatchQueue = new MemoryPubSubDispatchQueue("queue", TaskTimerFactory.Current, 1.Minutes(), i => new Result<bool>().WithReturn(true)); // Act dispatchQueue.Dispose(); // Assert dispatchQueue.Dispose(); }