Example #1
0
        public void LastTest()
        {
            const string data  = "One Two Three One Three";
            var          queue = data.Split().Aggregate(RealTimeDeque <string> .Empty, RealTimeDeque <string> .Snoc);
            var          last  = RealTimeDeque <string> .Last(queue);

            Assert.AreEqual("Three", last);
        }
Example #2
0
        public void IncrementalLastTest()
        {
            const string data  = "One Two Three Four Five";
            var          queue = data.Split().Aggregate(RealTimeDeque <string> .Empty, RealTimeDeque <string> .Snoc);

            Assert.AreEqual("[3, {$}, {$}, 2, {$}, {$}]", DumpQueue(queue, false));

            // After looking at the last element, the rest of the queue should be not created.
            var last = RealTimeDeque <string> .Last(queue);

            Assert.AreEqual("Five", last);
            Assert.AreEqual("[3, {$}, {$}, 2, {Five, $}, {Five, $}]", DumpQueue(queue, false));
        }
Example #3
0
        public void SnocLastInitTest()
        {
            const string data  = "One Two Three One Three";
            var          queue = data.Split().Aggregate(RealTimeDeque <string> .Empty, RealTimeDeque <string> .Snoc);

            var dat = data.Split().Reverse();

            foreach (var expected in dat)
            {
                var actual = RealTimeDeque <string> .Last(queue);

                Assert.AreEqual(expected, actual);
                queue = RealTimeDeque <string> .Init(queue);
            }

            Assert.IsTrue(RealTimeDeque <string> .IsEmpty(queue));
        }
Example #4
0
        public void EmptyLastTest()
        {
            var queue = RealTimeDeque <string> .Empty;

            AssertThrows <ArgumentNullException>(() => RealTimeDeque <string> .Last(queue));
        }