public void ThrowsWhenNoOperationProvided() { var input = CreateTestBag(); int[] expected = input.ToArray(); var consumer = new ConcurrentConsumer <int, int>() { Collection = input, ResultCollection = new ConcurrentQueue <int>(), }; Assert.Throws <NotImplementedException>(() => consumer.Consume()); }
public void FIFOAsync() { var input = CreateTestBag(); int[] expected = input.ToArray(); var consumer = new ConcurrentConsumer <int, int>() { Collection = input, ResultCollection = new ConcurrentQueue <int>(), Operation = (x) => x }; consumer.ConsumeAsync().Wait(); (bool actual, string result) = Helpers.VerifyCollection(expected, consumer.ResultCollection.ToArray()); Assert.True(actual, result); }
public void CancelThrowsWhenAttemptingToCancelWhenCancelTokenIsManagedByOtherObject() { var input = CreateTestBag(200000); int[] expected = input.ToArray(); var consumer = new ConcurrentConsumer <int, int>() { Collection = input, ResultCollection = new ConcurrentQueue <int>() }; CancellationTokenSource TokenSource = new CancellationTokenSource(); Task consumerTask = consumer.ConsumeAsync(TokenSource.Token); TaskStatus status = consumerTask.Status; Assert.Throws <NotSupportedException>(() => consumer.Cancel()); }
public void CancelDoesNotThrowWhenNoManagedToken() { var input = CreateTestBag(200000); var consumer = new ConcurrentConsumer <int, int>() { Collection = input, ResultCollection = new ConcurrentQueue <int>() }; _ = consumer.ConsumeAsync(); int?VerifyMethodWorks() { consumer.Cancel(); // this only reaches here if no error is thrown in the above functions return(null); } Assert.Null(VerifyMethodWorks()); }