| | |
| | | public void TestTryPeek()
|
| | | {
|
| | | var q = new PunisherQueue<string>();
|
| | | string s;
|
| | | Assert.IsTrue(!q.TryPeek(out s));
|
| | | Assert.IsTrue(!q.TryPeek(out _));
|
| | | q.Enqueue("a");
|
| | | q.Enqueue("b");
|
| | | q.Enqueue("c");
|
| | | Assert.IsTrue(q.TryPeek(out s) && s == "a");
|
| | | Assert.IsTrue(q.TryPeek(out string s) && s == "a");
|
| | | Assert.IsTrue(string.Join("", q) == "abc");
|
| | | }
|
| | |
|
| | |
| | | public void TestTryDequeue()
|
| | | {
|
| | | var q = new PunisherQueue<string>();
|
| | | string s;
|
| | | Assert.IsTrue(!q.TryDequeue(out s));
|
| | | Assert.IsTrue(!q.TryDequeue(out _));
|
| | | q.Enqueue("a");
|
| | | q.Enqueue("b");
|
| | | q.Enqueue("c");
|
| | | Assert.IsTrue(q.TryDequeue(out s) && s == "a");
|
| | | Assert.IsTrue(q.TryDequeue(out string s) && s == "a");
|
| | | Assert.IsTrue(string.Join("", q) == "bc");
|
| | | }
|
| | |
|
| | |
| | | {
|
| | | var q = new PunisherQueue<string>();
|
| | | int n = 0;
|
| | | Task.Run(() =>
|
| | | _ = Task.Run(() =>
|
| | | {
|
| | | for (int i = 0; i < 10000; ++i) {
|
| | | q.Enqueue(Path.GetRandomFileName());
|
| | |
| | | }
|
| | | });
|
| | | for (int i = 0; i < 10000; ++i) {
|
| | | string s;
|
| | | if (!q.TryDequeue(out s))
|
| | | if (!q.TryDequeue(out _))
|
| | | --i;
|
| | | --n;
|
| | | Thread.Yield();
|