Exemplo n.º 1
0
        public void PromptTimesOut()
        {
            LoggedConsole.SuppressInteractive = false;
            Assert.IsTrue(LoggedConsole.IsInteractive);

            using (var reader = new InfiniteTextStream(random: TestHelpers.Random.GetRandom()))
            {
                Console.SetIn(reader);

                Assert.ThrowsException <TimeoutException>(
                    () => LoggedConsole.Prompt("Enter your name:", timeout: TimeSpan.FromMilliseconds(500)),
                    "Timed out waiting for user input to prompt:");
            }
        }
Exemplo n.º 2
0
        public void InfiniteStreamIsInfinite()
        {
            Debug.WriteLine("Generating output");

            var builder = new StringBuilder(1_000_000);
            var source  = new CancellationTokenSource();
            var token   = source.Token;

            void Generate()
            {
                using (var reader = new InfiniteTextStream(random: TestHelpers.Random.GetRandom()))
                {
                    while (true)
                    {
                        char[] chars = new char[1000];
                        for (int i = 0; i < 1000; i++)
                        {
                            chars[i] = (char)reader.Read();
                        }

                        builder.Append(chars);

                        if (token.IsCancellationRequested)
                        {
                            return;
                        }
                    }
                }
            }

            var work = Task.Run((Action)Generate, token);

            Assert.IsFalse(work.IsCompleted);
            source.CancelAfter(this.timeout);
            work.Wait();
            Assert.IsTrue(work.IsCompleted);

            string s = builder.ToString();

            Debug.WriteLine($"Generation complete (length: {s.Length}):");

            Assert.IsTrue(s.Length > 1_000, $"Length {s.Length} was not greater than expected length of 1000");

            //Debug.WriteLine(s);
        }
Exemplo n.º 3
0
        public void InfiniteStreamCanReadLines()
        {
            Debug.WriteLine("Generating output");

            StringBuilder builder = new StringBuilder(1_000_000);
            var           source  = new CancellationTokenSource();
            var           token   = source.Token;

            void Generate()
            {
                using (var reader = new InfiniteTextStream(1000, random: TestHelpers.Random.GetRandom()))
                {
                    while (true)
                    {
                        if (token.IsCancellationRequested)
                        {
                            return;
                        }

                        builder.Append(reader.ReadLine());
                    }
                }
            }

            var work = Task.Run((Action)Generate, token);

            Assert.IsFalse(work.IsCompleted);
            source.CancelAfter(this.timeout);
            work.Wait();
            Assert.IsTrue(work.IsCompleted);

            string s = builder.ToString();

            Debug.WriteLine($"Generation complete (length: {s.Length}:");

            Assert.IsTrue(s.Length > 10_000);

            //Debug.WriteLine(s);
        }