public void CRLFInOutput()
        {
            string cmd = "\"C:\\Program Files\\Git\\bin\\git.exe\" rebase  -i --autosquash --autostash \"branch_foo\"";

            var outputData = new[]
            {
                cmd,
                Environment.NewLine,
                "Receiving: 10%\r",
                "Receiving: 20%\r",
                "Receiving: 30%\rR",
                "eceiving: 40%\r",
                "Receiving: 100%\nReceived\r\ndata\n"
            };

            var received = new List <string>();

            void FireDataReceived(TextEventArgs e)
            {
                received.Add(e.Text);
            }

            var filter = new ConsoleCommandLineOutputProcessor(cmd.Length, FireDataReceived);

            foreach (string chunk in outputData)
            {
                filter.AnsiStreamChunkReceived(null, new AnsiStreamChunkEventArgs(GitModule.SystemEncoding.GetBytes(chunk)));
            }

            filter.Flush();

            var expectedData = new[]
            {
                "Receiving: 10%\r",
                "Receiving: 20%\r",
                "Receiving: 30%\r",
                "Receiving: 40%\r",
                "Receiving: 100%\n",
                "Received\r",
                "\n",
                "data\n"
            };

            CollectionAssert.AreEqual(expectedData, received);
        }
        public void FilterOutConsoleCommandLine_NoFlush()
        {
            string cmd        = "\"C:\\Program Files\\Git\\bin\\git.exe\" rebase  -i --autosquash --autostash \"branch_foo\"";
            string outputData = "output data";
            string received   = string.Empty;
            Action <TextEventArgs> FireDataReceived = (e) =>
            {
                received += e.Text;
            };
            var filter = new ConsoleCommandLineOutputProcessor(cmd.Length, FireDataReceived);

            string chunk1 = cmd.Substring(0, 10);
            string chunk2 = cmd.Substring(10, cmd.Length - 10) + Environment.NewLine + outputData;

            filter.AnsiStreamChunkReceived(null, new AnsiStreamChunkEventArgs(GitModule.SystemEncoding.GetBytes(chunk1)));
            filter.AnsiStreamChunkReceived(null, new AnsiStreamChunkEventArgs(GitModule.SystemEncoding.GetBytes(chunk2)));

            Assert.AreEqual(string.Empty, received);
        }
        public void PercentageOutput()
        {
            string        cmd        = "\"C:\\Program Files\\Git\\bin\\git.exe\" rebase  -i --autosquash --autostash \"branch_foo\"";
            List <string> outputData = new List <string>();

            outputData.Add(cmd);
            outputData.Add(Environment.NewLine);
            outputData.Add("Receiving: 10%\r");
            outputData.Add("Receiving: 20%\r");
            outputData.Add("Receiving: 30%\rR");
            outputData.Add("eceiving: 40%\r");
            outputData.Add("Receiving: 100%\nReceived data\n");

            List <string>          received         = new List <string>();
            Action <TextEventArgs> FireDataReceived = (e) =>
            {
                received.Add(e.Text);
            };
            var filter = new ConsoleCommandLineOutputProcessor(cmd.Length, FireDataReceived);

            foreach (string chunk in outputData)
            {
                filter.AnsiStreamChunkReceived(null, new AnsiStreamChunkEventArgs(GitModule.SystemEncoding.GetBytes(chunk)));
            }

            filter.Flush();

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

            expectedData.Add("Receiving: 10%\r");
            expectedData.Add("Receiving: 20%\r");
            expectedData.Add("Receiving: 30%\r");
            expectedData.Add("Receiving: 40%\r");
            expectedData.Add("Receiving: 100%\n");
            expectedData.Add("Received data\n");

            CollectionAssert.AreEqual(expectedData, received);
        }