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 EnqueueUserEvent(NetworkEvent @event)
 {
     if (_userEventQueue != null)
     {
         if (hasUnreliableSequencedChannel && @event.ChannelId == unreliableSequencedChannelID)
         {
             _userEventQueue.Enqueue(@event, true, @event.Sequence);
         }
         else
         {
             _userEventQueue.Enqueue(@event);
         }
     }
     else
     {
         Logging.LogInfo("Connection: Skipped enqueue of user event because _userEventQueue was released! (" + @event.Type + ")");
     }
 }
Exemplo n.º 5
0
        private Task EnqueueTest(ConcurrentCircularQueue <DataClass> queue)
        {
            foreach (var item in _testList)
            {
                queue.Enqueue(item);
            }

            return(Task.CompletedTask);
        }
Exemplo n.º 6
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();
            }
        }