Esempio n. 1
0
        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());
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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());
        }
Esempio n. 4
0
        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());
        }