From 042dfc9a1b8f4fc5878e00fd84658d04ccf8a0c6 Mon Sep 17 00:00:00 2001 From: Alexandr Nikitin Date: Tue, 23 Jan 2018 14:44:54 +0200 Subject: [PATCH] Add a repro from issue #2 --- .../Issue2_TryDequeueTrueButGetNull.cs | 34 +++++++++++++++++++ .../MPMCQueue.NET.Tests.csproj | 1 + 2 files changed, 35 insertions(+) create mode 100644 tests/MPMCQueue.NET.Tests/FieldReports/Issue2_TryDequeueTrueButGetNull.cs diff --git a/tests/MPMCQueue.NET.Tests/FieldReports/Issue2_TryDequeueTrueButGetNull.cs b/tests/MPMCQueue.NET.Tests/FieldReports/Issue2_TryDequeueTrueButGetNull.cs new file mode 100644 index 0000000..8417545 --- /dev/null +++ b/tests/MPMCQueue.NET.Tests/FieldReports/Issue2_TryDequeueTrueButGetNull.cs @@ -0,0 +1,34 @@ +using System; +using System.Threading.Tasks; +using Xunit; + +namespace MPMCQueue.NET.Tests.FieldReports +{ + public class Issue2_TryDequeueTrueButGetNull + { + static MPMCQueue queue { get; } = new MPMCQueue(2); + static void Enqueue() + { + while (true) { queue.TryEnqueue(1); } + } + + static void Dequeue() + { + while (true) + { + if (queue.TryDequeue(out object t) && t == null) + { + throw new Exception("Dequeue null"); + } + } + } + + [Fact] + public void Test() + { + var t1 = Task.Run(() => Enqueue()); + var t2 = Task.Run(() => Dequeue()); + t2.Wait(TimeSpan.FromSeconds(10)); + } + } +} \ No newline at end of file diff --git a/tests/MPMCQueue.NET.Tests/MPMCQueue.NET.Tests.csproj b/tests/MPMCQueue.NET.Tests/MPMCQueue.NET.Tests.csproj index 708d8ed..35e75a5 100644 --- a/tests/MPMCQueue.NET.Tests/MPMCQueue.NET.Tests.csproj +++ b/tests/MPMCQueue.NET.Tests/MPMCQueue.NET.Tests.csproj @@ -60,6 +60,7 @@ +