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);
        }
Beispiel #2
0
 public bool TryPeek(out T item)
 {
     return(UnsafeSPSCQueue.TryPeek <T>(m_inner, out item));
 }