예제 #1
0
        public void ValidateItemOrdering()
        {
            const int MaxSize = 5;

            var queue = new HashedFixedSizeQueue <int>(MaxSize);

            queue.Enqueue(1);
            queue.Enqueue(2);
            queue.Enqueue(3);
            queue.Enqueue(4);
            queue.Enqueue(5);

            // Just because it's easy, validate the count is accurate before continuing.
            Assert.AreEqual(queue.Count, MaxSize);

            queue.Enqueue(6);
            queue.Enqueue(7);

            // Make sure there are still only 5 elements.
            Assert.AreEqual(queue.Count, MaxSize);

            // Now "1" and "2" should have been popped off,
            // so the next item should be "3."

            int currentItemShouldBe = 3;

            foreach (var item in queue.Items)
            {
                Assert.AreEqual(item, currentItemShouldBe);
                currentItemShouldBe++;
            }
        }
예제 #2
0
        public void AddItemsAndValidateCount()
        {
            const int MaxSize = 3;

            // Create a queue with 3 items to simplify test.
            var queue = new HashedFixedSizeQueue <int>(MaxSize);

            Assert.AreEqual(queue.Count, 0);

            queue.Enqueue(1);
            Assert.AreEqual(queue.Count, 1);

            queue.Enqueue(2);
            Assert.AreEqual(queue.Count, 2);

            queue.Enqueue(3);
            Assert.AreEqual(queue.Count, 3);

            // We've passed the max limit at this point.

            queue.Enqueue(4);
            Assert.AreEqual(queue.Count, MaxSize);

            queue.Enqueue(5);
            Assert.AreEqual(queue.Count, MaxSize);
        }
예제 #3
0
        public void MaxCountMaintained()
        {
            const int TestSize = 50;

            var queue = new HashedFixedSizeQueue <int>(TestSize);

            Assert.AreEqual(queue.MaxSize, TestSize);
        }
예제 #4
0
        public void ContainsWorksAsExpected()
        {
            var queue = new HashedFixedSizeQueue <string>(3);

            const string Word1 = "Out of ideas.";
            const string Word2 = "Life";
            const string Word3 = "Tired.";
            const string Word4 = " <pointless text>";
            const string Word5 = "... is this enough?";

            queue.Enqueue(Word1);
            Assert.IsTrue(queue.Contains(Word1));

            queue.Enqueue(Word2);
            Assert.IsTrue(queue.Contains(Word2));

            queue.Enqueue(Word3);
            Assert.IsTrue(queue.Contains(Word3));

            // Making sure somehow nothing got modified...
            Assert.IsTrue(queue.Contains(Word1));
            Assert.IsTrue(queue.Contains(Word2));
            Assert.IsTrue(queue.Contains(Word3));

            // Here, things should start getting deleted.

            queue.Enqueue(Word4);
            Assert.IsTrue(queue.Contains(Word4));
            Assert.IsFalse(queue.Contains(Word1));

            queue.Enqueue(Word5);
            Assert.IsTrue(queue.Contains(Word5));
            Assert.IsFalse(queue.Contains(Word2));

            // Wrap it up. Yeah, it's a little redundant, but also extra safe.
            Assert.IsTrue(queue.Contains(Word3));
            Assert.IsTrue(queue.Contains(Word4));
            Assert.IsTrue(queue.Contains(Word5));

            Assert.IsFalse(queue.Contains(Word1));
            Assert.IsFalse(queue.Contains(Word2));
        }
예제 #5
0
        public void QueueInitializesToEmpty()
        {
            var queue = new HashedFixedSizeQueue <int>(4);

            Assert.AreEqual(queue.Count, 0);
        }