public void TailTest() { const string data = "One Two Three One Three"; var queue = data.Split().Aggregate(HoodMelvilleQueue <string> .Empty, HoodMelvilleQueue <string> .Snoc); var tail = HoodMelvilleQueue <string> .Tail(queue); Assert.AreEqual("[2, [Two, Three], 2, [Three, One]]", DumpQueue(tail)); }
public void HeadTest() { const string data = "One Two Three One Three"; var queue = data.Split().Aggregate(HoodMelvilleQueue <string> .Empty, HoodMelvilleQueue <string> .Snoc); var head = HoodMelvilleQueue <string> .Head(queue); Assert.AreEqual("One", head); }
public void EmptyTest() { var queue = HoodMelvilleQueue <string> .Empty; Assert.IsTrue(HoodMelvilleQueue <string> .IsEmpty(queue)); queue = HoodMelvilleQueue <string> .Snoc(queue, "Item"); Assert.IsFalse(HoodMelvilleQueue <string> .IsEmpty(queue)); queue = HoodMelvilleQueue <string> .Tail(queue); Assert.IsTrue(HoodMelvilleQueue <string> .IsEmpty(queue)); }
public void PushPopTest() { const string data = "One Two Three One Three"; var queue = data.Split().Aggregate(HoodMelvilleQueue <string> .Empty, HoodMelvilleQueue <string> .Snoc); foreach (var expected in data.Split()) { var actual = HoodMelvilleQueue <string> .Head(queue); Assert.AreEqual(expected, actual); queue = HoodMelvilleQueue <string> .Tail(queue); } Assert.IsTrue(HoodMelvilleQueue <string> .IsEmpty(queue)); }
public void SnocTest() { var queue = HoodMelvilleQueue <string> .Empty; queue = HoodMelvilleQueue <string> .Snoc(queue, "One"); Assert.AreEqual("[1, [One], 0, null]", DumpQueue(queue)); queue = HoodMelvilleQueue <string> .Snoc(queue, "Two"); Assert.AreEqual("[1, [One], 1, [Two]]", DumpQueue(queue)); queue = HoodMelvilleQueue <string> .Snoc(queue, "Three"); Assert.AreEqual("[3, [One], 0, null]", DumpQueue(queue)); }
private static string DumpQueue <T>(HoodMelvilleQueue <T> .Queue queue) { if (queue == null) { return("null"); } var result = new StringBuilder(); result.Append("["); result.Append(queue.LenF); result.Append(", "); result.Append(queue.F?.ToReadableString() ?? "null"); // result.Append(", "); // result.Append(queue.State.GetType()); result.Append(", "); result.Append(queue.LenR); result.Append(", "); result.Append(queue.R?.ToReadableString() ?? "null"); result.Append("]"); return(result.ToString()); }
public void SnocEmptyTest() { AssertThrows <NullReferenceException>(() => HoodMelvilleQueue <string> .Snoc(null, "Item")); }
public void EmptyTailTest() { var queue = HoodMelvilleQueue <string> .Empty; AssertThrows <ArgumentNullException>(() => HoodMelvilleQueue <string> .Tail(queue)); }