public void Write_ShouldThrowArgumentNull_WhenOutputWriterIsNull()
        {
            // Arrange
            TestRunResultOutputTemplate testRunResultOutputTemplate = new TestRunResultOutputTemplate();


            // Act
            ArgumentNullException argumentNullException = Assert.Throws <ArgumentNullException>(() => testRunResultOutputTemplate.Write(null));

            // Assert
            Assert.AreEqual($"Value cannot be null.{Environment.NewLine}Parameter name: outputWriter", argumentNullException.Message);
        }
        public void Write_ShouldWritePassed_WhenTestRunListIsEmpty()
        {
            // Arrange
            TestRunResultOutputTemplate testRunResultOutputTemplate = new TestRunResultOutputTemplate(Array.Empty <TestRun>());
            ITestResultsOutputWriter    testResultsOutputWriter     = Substitute.For <ITestResultsOutputWriter>();

            // Act
            testRunResultOutputTemplate.Write(testResultsOutputWriter);

            // Assert
            testResultsOutputWriter.Received(1).Write(TestRunResult.Passed);
        }
        public void Write_ShoulWritePassed_WhenAllTestRunsUnSuccessful()
        {
            // Arrange
            TestRunResultOutputTemplate testRunResultOutputTemplate = new TestRunResultOutputTemplate(Enumerable.Repeat(new TestRun {
                IsSuccess = false
            }, 3).ToArray());
            ITestResultsOutputWriter testResultsOutputWriter = Substitute.For <ITestResultsOutputWriter>();

            // Act
            testRunResultOutputTemplate.Write(testResultsOutputWriter);

            // Assert
            testResultsOutputWriter.Received(1).Write(TestRunResult.Failed);
        }
        public void Write_ShoulWritePassed_WhenOneTestRunsUnSuccessful()
        {
            // Arrange
            TestRunResultOutputTemplate testRunResultOutputTemplate = new TestRunResultOutputTemplate(new TestRun {
                IsSuccess = true
            }, new TestRun {
                IsSuccess = false
            }, new TestRun {
                IsSuccess = true
            });
            ITestResultsOutputWriter testResultsOutputWriter = Substitute.For <ITestResultsOutputWriter>();

            // Act
            testRunResultOutputTemplate.Write(testResultsOutputWriter);

            // Assert
            testResultsOutputWriter.Received(1).Write(TestRunResult.Failed);
        }