Exemplo n.º 1
0
        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]);
            }
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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();
            }
        }
Exemplo n.º 5
0
        private Task EnqueueDequeueTest(ConcurrentCircularQueue <DataClass> queue)
        {
            foreach (var item in _testList)
            {
                queue.Enqueue(item);
                Task.Yield();
                queue.Dequeue();
                Task.Yield();
            }

            return(Task.CompletedTask);
        }