public void TryActionTest()
        {
            var q = UnsafeSPSCQueue.Allocate <int>(16);

            //Inserts 10 items.
            SplitQueue(q);

            //Insert 6 more to fill the queue
            for (int i = 0; i < 6; i++)
            {
                UnsafeSPSCQueue.TryEnqueue(q, 999);
            }

            Assert.IsFalse(UnsafeSPSCQueue.TryEnqueue(q, 10));
            Assert.IsTrue(UnsafeSPSCQueue.TryPeek(q, out int result));
            Assert.AreEqual(0, result);

            for (int i = 0; i < 10; i++)
            {
                Assert.IsTrue(UnsafeSPSCQueue.TryDequeue(q, out int val));
                Assert.AreEqual(i, val);
            }

            //Empty 6 last items
            for (int i = 0; i < 6; i++)
            {
                Assert.IsTrue(UnsafeSPSCQueue.TryDequeue(q, out int val));
                Assert.AreEqual(999, val);
            }

            //Empty queue
            Assert.IsFalse(UnsafeSPSCQueue.TryPeek(q, out int res));

            UnsafeSPSCQueue.Free(q);
        }
        public void ExpandTest()
        {
            var q = UnsafeSPSCQueue.Allocate <int>(16);

            SplitQueue(q);

            //Fill buffer to capacity.
            for (int i = 0; i < 6; i++)
            {
                UnsafeSPSCQueue.Enqueue(q, 999);
            }


            //Buffer is full, can no longer insert.
            Assert.IsFalse(UnsafeSPSCQueue.TryEnqueue(q, 10));

            UnsafeSPSCQueue.Free(q);
        }
Пример #3
0
 public bool TryEnqueue(T item)
 {
     return(UnsafeSPSCQueue.TryEnqueue <T>(m_inner, item));
 }