public void Write()
        {
            var service = new InMemoryInteractiveService();

            service.Write("Hello");

            Assert.Equal("Hello", service.StdOutReader.ReadToEnd());

            service.Write("World");

            Assert.Equal("World", service.StdOutReader.ReadToEnd());
        }
        public void WriteDebugLine()
        {
            var service = new InMemoryInteractiveService();

            service.WriteDebugLine("Debug Line 1");
            service.WriteDebugLine("Debug Line 2");
            service.WriteDebugLine("Debug Line 3");

            Assert.Equal("Debug Line 1", service.StdDebugReader.ReadLine());
            Assert.Equal("Debug Line 2", service.StdDebugReader.ReadLine());
            Assert.Equal("Debug Line 3", service.StdDebugReader.ReadLine());

            service.WriteDebugLine("Debug Line 4");
            service.WriteDebugLine("Debug Line 5");
            service.WriteDebugLine("Debug Line 6");

            Assert.Equal("Debug Line 4", service.StdDebugReader.ReadLine());
            Assert.Equal("Debug Line 5", service.StdDebugReader.ReadLine());
            Assert.Equal("Debug Line 6", service.StdDebugReader.ReadLine());
        }
        public void ReadLine()
        {
            var service = new InMemoryInteractiveService();

            service.StdInWriter.WriteLine("Line 1");
            service.StdInWriter.WriteLine("Line 2");
            service.StdInWriter.WriteLine("Line 3");
            service.StdInWriter.Flush();

            Assert.Equal("Line 1", service.ReadLine());
            Assert.Equal("Line 2", service.ReadLine());
            Assert.Equal("Line 3", service.ReadLine());

            service.StdInWriter.WriteLine("Line 4");
            service.StdInWriter.WriteLine("Line 5");
            service.StdInWriter.WriteLine("Line 6");
            service.StdInWriter.Flush();

            Assert.Equal("Line 4", service.ReadLine());
            Assert.Equal("Line 5", service.ReadLine());
            Assert.Equal("Line 6", service.ReadLine());
        }
        public void ReadKey()
        {
            var service = new InMemoryInteractiveService();

            service.StdInWriter.Write(ConsoleKey.A);
            service.StdInWriter.Write(ConsoleKey.B);
            service.StdInWriter.Write(ConsoleKey.C);
            service.StdInWriter.Flush();

            Assert.Equal(ConsoleKey.A, service.ReadKey(false).Key);
            Assert.Equal(ConsoleKey.B, service.ReadKey(false).Key);
            Assert.Equal(ConsoleKey.C, service.ReadKey(false).Key);

            service.StdInWriter.Write(ConsoleKey.D);
            service.StdInWriter.Write(ConsoleKey.E);
            service.StdInWriter.Write(ConsoleKey.F);
            service.StdInWriter.Flush();

            Assert.Equal(ConsoleKey.D, service.ReadKey(false).Key);
            Assert.Equal(ConsoleKey.E, service.ReadKey(false).Key);
            Assert.Equal(ConsoleKey.F, service.ReadKey(false).Key);
        }
        public void ReadLineSetToNull()
        {
            var service = new InMemoryInteractiveService();

            Assert.Throws <InvalidOperationException>(() => service.ReadLine());
        }