public async Task TryGet_Blocks_The_Call_If_Close_Not_Called_Returns_Added_Element_If_Available() { var instance = new PpcBuffer <object>(ConcurrentBuffer.Unbounded, CancellationToken.None); #if !NETFRAMEWORK && !NETCOREAPP2_2 await using (instance.ConfigureAwait(false)) #else using (instance) #endif { var obj = new object(); object outObj = null; var tryGetTask = Task.Run(() => instance.TryGet(Timeout.Infinite, CancellationToken.None, out outObj)); Assert.True(tryGetTask.Status != TaskStatus.RanToCompletion); instance.Add(obj, CancellationToken.None); Assert.True(await tryGetTask.ConfigureAwait(false) && ReferenceEquals(outObj, obj)); tryGetTask = Task.Run(() => instance.TryGet(Timeout.Infinite, CancellationToken.None, out outObj)); Assert.True(tryGetTask.Status != TaskStatus.RanToCompletion); instance.Close(); Assert.False(await tryGetTask.ConfigureAwait(false)); Assert.True(instance.Finished); } await Task.CompletedTask; }
public void Add_Throws_Error_When_Called_After_Close() { using (var instance = new PpcBuffer <object>(ConcurrentBuffer.Unbounded, CancellationToken.None)) { instance.Close(); Assert.Throws <InvalidOperationException>(() => instance.Add(new object(), CancellationToken.None)); } }
public void TryGet_Returns_False_After_Close() { using (var instance = new PpcBuffer <object>(ConcurrentBuffer.Unbounded, CancellationToken.None)) { instance.Close(); Assert.False(instance.TryGet(Timeout.Infinite, CancellationToken.None, out var _)); } }
public void TryGet_And_Add_Harmonize() { using (var instance = new PpcBuffer <object>(ConcurrentBuffer.Unbounded, CancellationToken.None)) { var obj = new object(); instance.Add(obj, CancellationToken.None); Assert.True(instance.TryGet(Timeout.Infinite, CancellationToken.None, out var newObj) && ReferenceEquals(newObj, obj)); instance.Close(); } }
public async Task TryGet_Returns_False_After_Close() { var instance = new PpcBuffer <object>(ConcurrentBuffer.Unbounded, CancellationToken.None); #if !NETFRAMEWORK && !NETCOREAPP2_2 await using (instance.ConfigureAwait(false)) #else using (instance) #endif { instance.Close(); Assert.False(instance.TryGet(Timeout.Infinite, CancellationToken.None, out _)); } await Task.CompletedTask; }
public async Task Add_Throws_Error_When_Called_After_Close() { var instance = new PpcBuffer <object>(ConcurrentBuffer.Unbounded, CancellationToken.None); #if !NETFRAMEWORK && !NETCOREAPP2_2 await using (instance.ConfigureAwait(false)) #else using (instance) #endif { instance.Close(); Assert.Throws <InvalidOperationException>(() => instance.Add(new object(), CancellationToken.None)); } await Task.CompletedTask; }
public async Task TryGet_And_Add_Harmonize() { var instance = new PpcBuffer <object>(ConcurrentBuffer.Unbounded, CancellationToken.None); #if !NETFRAMEWORK && !NETCOREAPP2_2 await using (instance.ConfigureAwait(false)) #else using (instance) #endif { var obj = new object(); instance.Add(obj, CancellationToken.None); Assert.True(instance.TryGet(Timeout.Infinite, CancellationToken.None, out var newObj) && ReferenceEquals(newObj, obj)); instance.Close(); } await Task.CompletedTask; }