public void RunMultipleArgs()
        {
            var testFileWithPath = Path.Combine(_testDir, @"test4.txt");

            var args = new[]
            {
                new Argument {
                    Name = "/C", Value = "set"
                },
                new Argument {
                    Name = "/A", Value = "(1+10)"
                },
                new Argument {
                    Name = ">>", Value = testFileWithPath
                }
            };

            var input = new RunProcessParameters {
                FileName = _process, Arguments = args
            };
            var options = new RunProcessOptions {
                KillProcessAfterTimeout = false, TimeoutSeconds = 30, RedirectStandardInput = false
            };

            ExecuteProcessCommand.RunProcess(input, options);

            Assert.AreEqual(File.ReadAllText(testFileWithPath), "11");
        }
        private ActualValueDelegate <object> TestBaseTimeoutKill(bool optionsKillProcess)
        {
            var args = new[]
            {
                new Argument {
                    Name = "/C", Value = "timeout 10 /nobreak >NUL"
                }
            };

            var input = new RunProcessParameters {
                FileName = _process, Arguments = args
            };
            var options = new RunProcessOptions {
                KillProcessAfterTimeout = optionsKillProcess, TimeoutSeconds = 5, RedirectStandardInput = false
            };

            return(() => ExecuteProcessCommand.RunProcess(input, options));
        }
        private ActualValueDelegate <object> TestBufferTimeoutKill()
        {
            var testFileWithPath = Path.Combine(_testDir, _inputFile);

            var args = new[]
            {
                new Argument {
                    Name = "/C", Value = $"type {testFileWithPath} && timeout 60 /nobreak >NUL"
                },
            };

            var input = new RunProcessParameters {
                FileName = _process, Arguments = args
            };
            var options = new RunProcessOptions {
                KillProcessAfterTimeout = true, TimeoutSeconds = 30, RedirectStandardInput = false
            };

            return(() => ExecuteProcessCommand.RunProcess(input, options));
        }
        // Test possible STDOUT buffer sync problems
        public void FillSTDOUT()
        {
            var testFileWithPath = Path.Combine(_testDir, _inputFile);

            var args = new[]
            {
                new Argument {
                    Name = "/C", Value = $"type {testFileWithPath}"
                }
            };

            var input = new RunProcessParameters {
                FileName = _process, Arguments = args
            };
            var options = new RunProcessOptions {
                KillProcessAfterTimeout = false, TimeoutSeconds = 30, RedirectStandardInput = false
            };

            var output = ExecuteProcessCommand.RunProcess(input, options);

            Assert.IsTrue(output.Output.Length >= 8096 + 5);
            Assert.IsTrue(output.Output[1234] == 'a');
        }