public void SynchronisedDoubleEndedQueueTryDequeueAtItemFromBackReturnsFalseIfQueueDoesNotContainItems() { var deque = new SynchronisedDeque <int>(); int i; bool result = deque.TryDequeueAtItemFromBack(out i); Assert.IsFalse(result); }
public void SynchronisedDoubleEndedQueueTryDequeueAtItemFromBackReturnsTrueIfQueueContainsItems() { var items = new[] { 1, 2, 3, 4, 5, 6, 7, 8 }; var deque = new SynchronisedDeque <int>(items); int i; bool result = deque.TryDequeueAtItemFromBack(out i); Assert.IsTrue(result); }
public void SynchronisedDoubleEndedQueueTryDequeueAtItemFromBackRemovesItemFromBack() { var items = new[] { 1, 2, 3, 4, 5, 6, 7, 8 }; var deque = new SynchronisedDeque <int>(items); int i; deque.TryDequeueAtItemFromBack(out i); Assert.AreEqual(7, deque.Count); }
public void SynchronisedDoubleEndedQueueSupportsDequeueingFromBackUntilQueueIsEmptyMultiThreaded() { var items = new[] { 1, 2, 3, 4, 5, 6, 7, 8 }; var deque = new SynchronisedDeque <int>(); deque.EnqueueRangeToBack(items); List <Task> tasks = new List <Task>(); for (int i = 0; i < items.Length * 2; i++) { tasks.Add(Task.Factory.StartNew(() => { int j; deque.TryDequeueAtItemFromBack(out j); })); } Assert.DoesNotThrow(() => Task.WaitAll(tasks.ToArray())); Assert.AreEqual(0, deque.Count); }