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); }
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)); }
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)); }
public void EmptyLastTest() { var queue = RealTimeDeque <string> .Empty; AssertThrows <ArgumentNullException>(() => RealTimeDeque <string> .Last(queue)); }