public void Create_ShouldReturnConsoleOut_WhenOutputIsNull()
        {
            // Arrange
            DefaultTestResultsOutputWriterFactory defaultTestResultsOutputWriterFactory = new DefaultTestResultsOutputWriterFactory();
            string output = null;

            // Act
            using (ITestResultsOutputWriter testResultsOutputWriter = defaultTestResultsOutputWriterFactory.Create(output))
            {
                // Assert
                Assert.AreEqual(true, testResultsOutputWriter is TextWriterTestResultsOutputWriter);
                TextWriter textWriter = ((TextWriterTestResultsOutputWriter)testResultsOutputWriter).Writer;

                Assert.AreSame(Console.Out, textWriter);
            }
        }
        public void Create_ShouldReturnFileStreamWriter_WhenOutputIsNotNull()
        {
            // Arrange
            DefaultTestResultsOutputWriterFactory defaultTestResultsOutputWriterFactory = new DefaultTestResultsOutputWriterFactory();
            string output = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "output.txt");;

            // Act
            using (ITestResultsOutputWriter testResultsOutputWriter = defaultTestResultsOutputWriterFactory.Create(output))
            {
                // Assert
                Assert.AreEqual(true, testResultsOutputWriter is TextWriterTestResultsOutputWriter);
                TextWriter textWriter = ((TextWriterTestResultsOutputWriter)testResultsOutputWriter).Writer;

                Assert.AreEqual(true, textWriter is StreamWriter);
                object baseStream = textWriter.GetType().GetProperty("BaseStream").GetValue(textWriter);
                Assert.AreEqual(true, baseStream is FileStream);
                Assert.AreEqual(output, ((FileStream)baseStream).Name);
            }
        }
        // ReSharper disable once UnusedMember.Local
        private int OnExecute()
        {
            ITestResultsOutputWriterFactory outputWriterFactory = new DefaultTestResultsOutputWriterFactory();

            using (ITestResultsOutputWriter outputWriter = outputWriterFactory.Create(Output))
            {
                OutputTemplateManager  outputTemplateManager = new OutputTemplateManager(Path, new TestRunResultParser(Format), new DefaultFileSystemManager());
                IOutputTemplateFactory outputTemplateFactory = outputTemplateManager.CreateOutputTemplateFactory();
                IOutputTemplate        outputTemplate        = OutputTemplateManager.CreateOutputTemplate(outputTemplateFactory, Template);
                outputTemplate.Write(outputWriter);

                if (FailWhenResultIsFailed && !outputTemplateFactory.IsSuccess)
                {
                    return(-1);
                }
            }

            return(0);
        }