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); }
public bool TryEnqueue(T item) { return(UnsafeSPSCQueue.TryEnqueue <T>(m_inner, item)); }