public void GetAnalysisResult_GivenOneEdgeCasePassedWithNoEdgeCaseHintAttribute_ShouldReturnListWithEdgeCaseAndEdgeCaseMessageSetToNull() { //---------------Set up test pack------------------- var playerTestsLevelAnalyser = Substitute.For <IPlayerTestsLevelAnalyser>(); var analyser = new PlayerTestsEdgeCaseCoverageAnalyser(playerTestsLevelAnalyser); var goldenImplementation1 = new GoldenImplementation(new ClassWithShouldFailEdgeCaseTestAttributesWithNoHint().GetType()); var goldenImplementation2 = new GoldenImplementation(new ClassWithAttributes().GetType()); var implementationTestResults = CreateImplementationTestResults(goldenImplementation1, CreateTestResult(true)); implementationTestResults.Add(goldenImplementation2, new ITestResult[] { CreateTestResult(true) }); playerTestsLevelAnalyser.GetAnalysisResult(implementationTestResults) .Returns(new PlayerTestsLevelResult { FirstGoldenImplementationPassingAllTests = goldenImplementation1 }); //---------------Assert Precondition---------------- //---------------Execute Test ---------------------- var results = analyser.GetAnalysisResult(implementationTestResults); //---------------Test Result ----------------------- Assert.AreEqual(1, results.Count); Assert.IsNull(results[0].EdgeCaseMessage); Assert.AreEqual(2, results[0].Level); Assert.AreEqual(false, results[0].IsCovered); }
public void GetAnalysisResult_GivenPassingTestInNextLevelAndEdgeCaseFailingInPreviousLevel_ShouldReturnListWithEdgeCase() { //---------------Set up test pack------------------- var playerTestsLevelAnalyser = Substitute.For <IPlayerTestsLevelAnalyser>(); var analyser = new PlayerTestsEdgeCaseCoverageAnalyser(playerTestsLevelAnalyser); var goldenImplementation2 = new GoldenImplementation(new ClassWithAttributes().GetType()); var implementationTestResults = CreateImplementationTestResults(goldenImplementation2, CreateTestResult(true)); implementationTestResults.Add(new GoldenImplementation(new AnotherClassWithAttributes().GetType()), new ITestResult[] { CreateTestResult(true) }); implementationTestResults.Add(new GoldenImplementation(new AnotherClassWithShouldFailEdgeCaseTestAttributes().GetType()), new ITestResult[] { CreateTestResult(true) }); playerTestsLevelAnalyser.GetAnalysisResult(implementationTestResults) .Returns(new PlayerTestsLevelResult { FirstGoldenImplementationPassingAllTests = goldenImplementation2 }); //---------------Assert Precondition---------------- //---------------Execute Test ---------------------- var results = analyser.GetAnalysisResult(implementationTestResults); //---------------Test Result ----------------------- Assert.AreEqual(1, results.Count); Assert.AreEqual("This is a another hint", results[0].EdgeCaseMessage); Assert.AreEqual(1, results[0].Level); Assert.AreEqual(false, results[0].IsCovered); }
public void GetAnalysisResult_GivenNoEdgeCases_ShouldReturnEmptyList() { //---------------Set up test pack------------------- var playerTestsLevelAnalyser = Substitute.For <IPlayerTestsLevelAnalyser>(); var analyser = new PlayerTestsEdgeCaseCoverageAnalyser(playerTestsLevelAnalyser); var goldenImplementation = new GoldenImplementation(new ClassWithAttributes().GetType()); var implementationTestResults = CreateImplementationTestResults(goldenImplementation, CreateTestResult(true)); playerTestsLevelAnalyser.GetAnalysisResult(implementationTestResults) .Returns(new PlayerTestsLevelResult { FirstGoldenImplementationPassingAllTests = goldenImplementation }); //---------------Assert Precondition---------------- //---------------Execute Test ---------------------- var results = analyser.GetAnalysisResult(implementationTestResults); //---------------Test Result ----------------------- CollectionAssert.IsEmpty(results); }
public void GetAnalysisResult_GivenPassingTestInCurrentLevelAndEdgeCaseFailingInNextLevel_ShouldReturnEmptyList() { //---------------Set up test pack------------------- var playerTestsLevelAnalyser = Substitute.For <IPlayerTestsLevelAnalyser>(); var analyser = new PlayerTestsEdgeCaseCoverageAnalyser(playerTestsLevelAnalyser); var goldenImplementation2 = new GoldenImplementation(new ClassWithAttributes().GetType()); var implementationTestResults = CreateImplementationTestResults(goldenImplementation2, CreateTestResult(true)); implementationTestResults.Add(new GoldenImplementation(new Step3WithAttributes().GetType()), new ITestResult[] { CreateTestResult(false) }); implementationTestResults.Add(new GoldenImplementation(new Step3WithShouldFailEdgeCaseTestAttributes().GetType()), new ITestResult[] { CreateTestResult(true) }); playerTestsLevelAnalyser.GetAnalysisResult(implementationTestResults) .Returns(new PlayerTestsLevelResult { FirstGoldenImplementationPassingAllTests = goldenImplementation2 }); //---------------Assert Precondition---------------- //---------------Execute Test ---------------------- var results = analyser.GetAnalysisResult(implementationTestResults); //---------------Test Result ----------------------- CollectionAssert.IsEmpty(results); }
/// <summary> /// Runs the player's tests against the golden sut implementations and determines /// golden implementation with the highest test step attribute which passes all the /// player tests (amongst other things) /// </summary> public PlayerTestsRunResult Run() { var testMethods = _testMethodsRetriever.GetTestMethods(_playerTestFixtureType); var goldenImplementationTestResults = GetGoldenImplementationTestResults(testMethods); var testLevelAnalyser = new PlayerTestsLevelAnalyser(); var playerTestsLevelResult = testLevelAnalyser.GetAnalysisResult(goldenImplementationTestResults); var edgeCaseCoverageAnalyser = new PlayerTestsEdgeCaseCoverageAnalyser(testLevelAnalyser); var testsEdgeCoverageResults = edgeCaseCoverageAnalyser.GetAnalysisResult(goldenImplementationTestResults, _implementationLevel); var numberOfTestsImplemented = testMethods.Count(); var hasTestCaseAttribute = testMethods.Any(method => method.HasTestCaseAttribute); var hasExpectedExceptionAttribute = testMethods.Any(method => method.HasExpectedExceptionAttribute); return(new PlayerTestsRunResult { Level = playerTestsLevelResult.Level, NumberOfTestsImplemented = numberOfTestsImplemented, PlayerTestsEdgeCoverageResults = testsEdgeCoverageResults, HasTestCaseAttribute = hasTestCaseAttribute, HasExpectedExceptionAttribute = hasExpectedExceptionAttribute }); }