public void ShouldTrackRunningProcesses()
 {
     using (var spawner = new Spawner())
     {
         spawner.Spawn(
             new StartInfo
                 {
                     ProgramName = _spawnerTestExe,
                     Arguments = "--wait",
                 });
         spawner.Spawn(
             new StartInfo
                 {
                     ProgramName = _spawnerTestExe,
                     Arguments = "--wait",
                 });
         Assert.That(spawner.Tracked.Count(), Is.EqualTo(2));
         Assert.That(spawner.Wait(TimeSpan.MaxValue, spawner.Tracked.First()), Is.True);
         Assert.That(spawner.Tracked.Count(), Is.EqualTo(1));
         Assert.That(spawner.Wait(TimeSpan.MaxValue, spawner.Tracked.First()), Is.True);
         Assert.That(spawner.Tracked.Count(), Is.EqualTo(0));
     }
 }
        public void ShouldCaptureOutputFromProcess()
        {
            var stringWriter = new StringWriter();
            using (var spawner = new Spawner())
            {
                var processInfo =
                    spawner.Spawn(
                        new StartInfo
                            {
                                ProgramName = _spawnerTestExe,
                                Arguments = "--large-output",
                                StdOut = stringWriter,
                            });
                Assert.That(spawner.Wait(TimeSpan.MaxValue, processInfo), Is.True);
            }
            var outputLine = stringWriter.ToString().Split(new[] {Environment.NewLine},
                                                           StringSplitOptions.RemoveEmptyEntries);

            Assert.That(outputLine.Length, Is.EqualTo(10000));
        }