Example #1
0
        public void Normal()
        {
            var q = new MpscLinkedArrayQueue <int>(4);

            int item;

            Assert.IsTrue(q.IsEmpty());
            Assert.IsFalse(q.Poll(out item));


            q.Offer(1);
            Assert.IsFalse(q.IsEmpty());
            q.Offer(2);
            Assert.IsFalse(q.IsEmpty());
            q.Offer(3);
            Assert.IsFalse(q.IsEmpty());
            q.Offer(4);
            Assert.IsFalse(q.IsEmpty());
            q.Offer(5);
            Assert.IsFalse(q.IsEmpty());
            q.Offer(6);
            Assert.IsFalse(q.IsEmpty());

            Assert.IsTrue(q.Poll(out item));
            Assert.IsFalse(q.IsEmpty());
            Assert.AreEqual(1, item);

            Assert.IsTrue(q.Poll(out item));
            Assert.IsFalse(q.IsEmpty());
            Assert.AreEqual(2, item);

            Assert.IsTrue(q.Poll(out item));
            Assert.IsFalse(q.IsEmpty());
            Assert.AreEqual(3, item);

            Assert.IsTrue(q.Poll(out item));
            Assert.IsFalse(q.IsEmpty());
            Assert.AreEqual(4, item);

            Assert.IsTrue(q.Poll(out item));
            Assert.IsFalse(q.IsEmpty());
            Assert.AreEqual(5, item);

            Assert.IsTrue(q.Poll(out item));
            Assert.IsTrue(q.IsEmpty());
            Assert.AreEqual(6, item);

            Assert.IsFalse(q.Poll(out item));
            Assert.IsTrue(q.IsEmpty());

            q.Offer(7);
            Assert.IsTrue(q.Poll(out item));
            Assert.IsTrue(q.IsEmpty());
            Assert.AreEqual(7, item);
        }