public void TestGetItemKey() { var q = new PunisherQueue <string>(item => { switch (item) { case "a": case "x": return("ax"); case "b": case "y": return("by"); case "c": case "z": return("cz"); default: return(item); } }); q.Enqueue("a"); q.Enqueue("b"); q.Enqueue("c"); q.Enqueue("x"); q.Enqueue("z"); q.Enqueue("w"); Assert.IsTrue(string.Join("", q) == "bxzw"); }
public void TestConcurrency() { var q = new PunisherQueue <string>(); int n = 0; _ = Task.Run(() => { for (int i = 0; i < 10000; ++i) { q.Enqueue(Path.GetRandomFileName()); ++n; Thread.Yield(); } }); for (int i = 0; i < 10000; ++i) { if (!q.TryDequeue(out _)) { --i; } --n; Thread.Yield(); } if (n == 0) { Assert.Inconclusive(); } Assert.IsTrue(q.Count() == 0); }
public void TestRemove() { var q = new PunisherQueue <string>(); q.Enqueue("a"); q.Enqueue("b"); q.Enqueue("c"); q.Remove("b"); Assert.IsTrue(string.Join("", q) == "ac"); }
public void TestPeek() { var q = new PunisherQueue <string>(); q.Enqueue("a"); q.Enqueue("b"); q.Enqueue("c"); Assert.IsTrue(q.Peek() == "a"); Assert.IsTrue(string.Join("", q) == "abc"); }
public void TestTryPeek() { var q = new PunisherQueue <string>(); Assert.IsTrue(!q.TryPeek(out _)); q.Enqueue("a"); q.Enqueue("b"); q.Enqueue("c"); Assert.IsTrue(q.TryPeek(out string s) && s == "a"); Assert.IsTrue(string.Join("", q) == "abc"); }
public void TestEnqueueContains() { var q = new PunisherQueue <string>(); q.Enqueue("a"); q.Enqueue("b"); q.Enqueue("c"); Assert.IsTrue(q.Contains("a")); Assert.IsTrue(q.Contains("b")); Assert.IsTrue(q.Contains("c")); Assert.IsTrue(string.Join("", q) == "abc"); }
public void TestClear() { var q = new PunisherQueue <string>(); q.Enqueue("a"); q.Enqueue("b"); q.Enqueue("c"); q.Clear(); q.Enqueue("x"); q.Enqueue("y"); q.Enqueue("z"); Assert.IsTrue(string.Join("", q) == "xyz"); }
public void TestDequeueEmpty() { var q = new PunisherQueue <string>(); q.Dequeue(); }
public void TestPeekEmpty() { var q = new PunisherQueue <string>(); q.Peek(); }