public void WaitForExitBlocksWhenStillReading()
        {
            var blockingStream = new BlockingStream();
            var sr = new StreamReader(blockingStream);
            var sw = new StringWriter();

            var handler = new AsyncTwoWayStreamsHandler(sr, sw);

            var stopWatch = new Stopwatch();
            stopWatch.Start();

            new Task(() =>
            {
                Thread.Sleep(100);
                blockingStream.Unblock();
            }).Start();
            handler.WaitForExit();

            stopWatch.Stop();

            if (stopWatch.ElapsedMilliseconds < 100)
                Assert.Fail("WaitForExit returned before the timer finished");
            else
                Assert.Pass("Successfully waited for the stream to end");
        }
        public void ReadUntilTimeoutThrows()
        {
            var stream = new BlockingStream();
            var sr = new StreamReader(stream);
            var sw = new StringWriter();

            var handler = new AsyncTwoWayStreamsHandler(sr, sw);

            Assert.That(handler.ReadUntil(0.1, "MARKER"), Is.EqualTo("This line should be taken because it includes MARKER in it"));
        }