public void DisposeAndClear_is_idempotent() { // Arrange var queuePath = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); var dispatchQueue = new PersistentPubSubDispatchQueue(queuePath, TaskTimerFactory.Current, 1.Minutes(), i => new Result<bool>().WithReturn(true)); // Act dispatchQueue.DeleteAndDispose(); // Assert dispatchQueue.DeleteAndDispose(); }
public void ClearAndDisposed_queue_throws_on_access() { // Arrange var queuePath = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); var dispatchQueue = new PersistentPubSubDispatchQueue(queuePath, TaskTimerFactory.Current, 1.Minutes(), i => new Result<bool>().WithReturn(true)); // Act dispatchQueue.DeleteAndDispose(); // 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(AssertionException) { throw; } catch(Exception e) { Assert.Fail(string.Format("Enqueue threw unexpected exception: {0}", e)); } }
public void ClearAndDispose_removes_queue_from_disk() { // Arrange var queuePath = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); var item1 = new DispatchItem(new XUri("http://a"), new DispatcherEvent(new XDoc("msg"), new XUri("http://channl"), new XUri("http://resource")), "a"); var dispatchQueue = new PersistentPubSubDispatchQueue(queuePath, TaskTimerFactory.Current, 1.Minutes(), (item) => new Result<bool>().WithReturn(false)); dispatchQueue.Enqueue(item1); Assert.IsTrue(Directory.GetFiles(queuePath).Length > 0, "queue directory did not contain any files"); // Act dispatchQueue.DeleteAndDispose(); // Assert Assert.IsFalse(Directory.Exists(queuePath), "queue directory still exists"); }