コード例 #1
0
        public void InvalidTypeTest()
        {
            var q = UnsafeRingBuffer.Allocate <int>(10);

            Assert.Catch <AssertException>(() => { UnsafeRingBuffer.Push <float>(q, 162); });

            UnsafeRingBuffer.Free(q);
        }
コード例 #2
0
        public void ConstructorTest()
        {
            var q = UnsafeRingBuffer.Allocate <int>(10);

            Assert.AreEqual(0, UnsafeRingBuffer.GetCount(q));
            Assert.AreEqual(10, UnsafeRingBuffer.GetCapacity(q));

            UnsafeRingBuffer.Free(q);
        }
コード例 #3
0
        public void Contains()
        {
            var q = UnsafeRingBuffer.Allocate <int>(10);

            //Wrap tail around
            SplitRingBuffer(q);


            //Check tail and head end of the queue
            Assert.IsTrue(UnsafeRingBuffer.Contains(q, 1));
            Assert.IsTrue(UnsafeRingBuffer.Contains(q, 9));
            Assert.False(UnsafeRingBuffer.Contains(q, 11));

            UnsafeRingBuffer.Free(q);
        }
コード例 #4
0
        public void DequeueTest()
        {
            var q = UnsafeRingBuffer.Allocate <int>(10);

            for (int i = 0; i < 10; i++)
            {
                UnsafeRingBuffer.Push(q, i * i);
            }


            for (int i = 0; i < 10; i++)
            {
                UnsafeRingBuffer.Pop <int>(q, out int num);
                Assert.AreEqual(i * i, num);
            }

            UnsafeRingBuffer.Free(q);
        }
コード例 #5
0
        public void CopyToTest()
        {
            var q = UnsafeRingBuffer.Allocate <int>(10);

            SplitRingBuffer(q);

            var arr = new int[10];

            fixed(void *ptr = arr)
            {
                UnsafeRingBuffer.CopyTo <int>(q, ptr, 0);
            }

            for (int i = 0; i < 10; i++)
            {
                Assert.AreEqual(i, arr[i]);
            }
        }
コード例 #6
0
        public void PushTest()
        {
            var q = UnsafeRingBuffer.Allocate <int>(10);

            for (int i = 0; i < 10; i++)
            {
                UnsafeRingBuffer.Push(q, i * i);
            }

            Assert.AreEqual(10, UnsafeRingBuffer.GetCount(q));
            Assert.AreEqual(10, UnsafeRingBuffer.GetCapacity(q));

            UnsafeRingBuffer.Clear(q);

            Assert.AreEqual(0, UnsafeRingBuffer.GetCount(q));
            Assert.AreEqual(10, UnsafeRingBuffer.GetCapacity(q));

            UnsafeRingBuffer.Free(q);
        }
コード例 #7
0
        public void PeekTest()
        {
            var q = UnsafeRingBuffer.Allocate <int>(10);

            for (int i = 0; i < 10; i++)
            {
                UnsafeRingBuffer.Push(q, (int)Math.Pow(i + 2, 2));
            }

            for (int i = 0; i < 10; i++)
            {
                UnsafeRingBuffer.Peek <int>(q, out int num);
                Assert.AreEqual(4, num);
            }

            //Verify no items are dequeued
            Assert.AreEqual(10, UnsafeRingBuffer.GetCount(q));

            UnsafeRingBuffer.Free(q);
        }
コード例 #8
0
        public void IteratorTest()
        {
            var q = UnsafeRingBuffer.Allocate <int>(10);

            //Wrap tail around
            SplitRingBuffer(q);

            //Iterator should start from the head.
            int num = 0;

            foreach (int i in UnsafeRingBuffer.GetEnumerator <int>(q))
            {
                Assert.AreEqual(num, i);
                num++;
            }

            Assert.AreEqual(num, UnsafeRingBuffer.GetCount(q));

            UnsafeRingBuffer.Free(q);
        }
コード例 #9
0
 public NativeRingBuffer(int capacity, bool overwrite)
 {
     m_inner = UnsafeRingBuffer.Allocate <T>(capacity, overwrite);
 }
コード例 #10
0
 public NativeRingBuffer(int capacity)
 {
     m_inner = UnsafeRingBuffer.Allocate <T>(capacity);
 }