public void ArrayTest() { var queue = new ConcurrentCircularQueue <DataClass>(_testList.Count); queue.Enqueue(new DataClass()); queue.Dequeue(); queue.Enqueue(_testList); Assert.AreEqual(_testList.Count, queue.Count); foreach (var item in _testList) { var result = queue.Dequeue(); Assert.AreSame(item, result); } queue.Enqueue(new DataClass()); queue.Dequeue(); queue.Enqueue(_testList); DataClass[] copyList = new DataClass[_testList.Count]; queue.CopyTo(copyList, 0); for (int i = 0; i < _testList.Count; ++i) { Assert.AreSame(_testList[i], copyList[i]); } }
public void BasicTest() { var queue = new ConcurrentCircularQueue <DataClass>(_testList.Count); foreach (var item in _testList) { queue.Enqueue(item); } Assert.AreEqual(_testList.Count, queue.Count); List <DataClass> _dequeueList = new List <DataClass>(_testList.Count); foreach (var item in _testList) { _dequeueList.Add(queue.Dequeue()); } Assert.AreEqual(0, queue.Count); CheckList(_dequeueList, _dequeueList.Count); for (int i = 0; i < _testList.Count * 3; ++i) { var item = _testList[i % _testList.Count]; queue.Enqueue(item); var result = queue.Dequeue(); Assert.AreSame(item, result); } }
public void OverflowTest() { int allocCount = _testList.Count / 2; var queue = new ConcurrentCircularQueue <DataClass>(allocCount); for (int i = 0; i < _testList.Count; ++i) { bool result = queue.Enqueue(_testList[i]); if (i < allocCount) { Assert.AreEqual(true, result); } else { Assert.AreEqual(false, result); } } Assert.AreEqual(allocCount, queue.Count); List <DataClass> _dequeueList = new List <DataClass>(_testList.Count); for (int i = 0; i < allocCount; ++i) { _dequeueList.Add(queue.Dequeue()); } Assert.AreEqual(0, queue.Count); CheckList(_dequeueList, _dequeueList.Count); }
public void ConcurrentCircularQueue() { for (int i = 0; i < TestCount; ++i) { _concurrentCircluarQueue.Enqueue(_list[i]); } for (int i = 0; i < TestCount; ++i) { _concurrentCircluarQueue.Dequeue(); } for (int i = 0; i < TestCount; ++i) { _concurrentCircluarQueue.Enqueue(_list[i]); _concurrentCircluarQueue.Dequeue(); } }
private Task EnqueueDequeueTest(ConcurrentCircularQueue <DataClass> queue) { foreach (var item in _testList) { queue.Enqueue(item); Task.Yield(); queue.Dequeue(); Task.Yield(); } return(Task.CompletedTask); }