Example #1
0
        public void BufferWorks()
        {
            FaultyConcurrentQueue <int> output = new FaultyConcurrentQueue <int>();

            output.RandomlyFail = true;

            var bag = CreateTestBag();

            var consumer = Factory.CreateConsumer(bag, output);

            consumer.Operation = (x) => x;

            consumer.Consume();

            Assert.True(consumer.ResultCollection.Count > 0);
        }
        public void WritesLinesCorrectlyEvenWithFaultyCollection()
        {
            string path = $"{PathBase}.{nameof(WritesLinesCorrectlyEvenWithFaultyCollection)}.txt";


            CancellationTokenSource tokenSource = new CancellationTokenSource();

            try
            {
                FaultyConcurrentQueue <string> queue = new FaultyConcurrentQueue <string>
                {
                    RandomlyFail = false
                };

                List <string> expected = new List <string>();

                for (int i = 100; i-- > 0;)
                {
                    string num = i.ToString();

                    expected.Add(num);

                    queue.TryAdd(num);
                }

                queue.RandomlyFail = true;

                using (var writer = Factory.CreateWriter(path, queue))
                {
                    Task.WaitAll(writer.WriteLinesAsync(true, tokenSource.Token));
                }

                List <string> actual = ReadFileLines(path);

                var result = Helpers.VerifyCollection(expected, actual);

                Assert.True(result.result, result.message);
            }
            finally
            {
                tokenSource?.Dispose();
                File.Delete(path);
            }
        }
        public void WritesCorrectlyEvenWithFaultyCollection()
        {
            string path = $"{PathBase}.{nameof(WritesLinesCorrectlyEvenWithFaultyCollection)}.txt";


            CancellationTokenSource tokenSource = new CancellationTokenSource();

            try
            {
                FaultyConcurrentQueue <string> queue = new FaultyConcurrentQueue <string>
                {
                    RandomlyFail = false
                };

                string expected = "";

                for (int i = 100; i-- > 0;)
                {
                    string num = i.ToString();

                    expected += num;

                    queue.TryAdd(num);
                }

                queue.RandomlyFail = true;

                using (var writer = Factory.CreateWriter(path, queue))
                {
                    Task.WaitAll(writer.WriteAsync(true, tokenSource.Token));
                }

                string actual = ReadFile(path);

                Assert.Equal(expected, actual);
            }
            finally
            {
                tokenSource?.Dispose();
                File.Delete(path);
            }
        }