public TestRunResult(string testName, AuditVariablePlaceholder[] auditVariables, string errorMessage, bool assertionFailed) { _assertionFailed = assertionFailed; TestName = testName; AuditVariables = auditVariables; ErrorMessage = errorMessage; }
public void ShouldNot_RemoveOriginalNodeContainingLocalVariable() { const string sourceCode = @"namespace SampleNamespace { class SampleClass { public void SampleMethod() { int a=4; } } }"; var tree = CSharpSyntaxTree.ParseText(sourceCode); AuditVariablePlaceholder[] auditVariablePlaceholders = new AuditVariablePlaceholder[1]; auditVariablePlaceholders[0] = new AuditVariablePlaceholder(null, null, 0); _auditVariablesWalkerMock.Walk(Arg.Any<string>(), Arg.Any<string>(), Arg.Any<SyntaxNode>()).Returns(auditVariablePlaceholders); var rewrittenDoc = _rewriter.Rewrite("projectName", "documentPath", tree.GetRoot()); SyntaxNode originalNode = rewrittenDoc.SyntaxTree. GetRoot(). DescendantNodes().OfType<BlockSyntax>().First().ChildNodes().Last(); Assert.That(originalNode.ToString().Trim(), Is.EqualTo("int a=4;")); }
public void GenerateInitAuditVariableCode_Should_CreateValidCode() { const string expectedSourceCode = "new AuditVariable(){NodePath=\"A.B.C.D\",DocumentPath=@\"HelloWorld.cs\",Span=123, ExecutionCounter=AuditVariablesAutoGenerated941C.ExecutionCounter++}"; var variable = new AuditVariablePlaceholder("HelloWorld.cs", "A.B.C.D", 123); string classSourceCode = variable.GetInitializationCode(); Assert.That(classSourceCode, Is.EqualTo(expectedSourceCode)); }
public void EvaluateAuditVariable_Should_Extract_Span() { // arrange var variable = new AuditVariablePlaceholder(@"c:\HelloWorld.cs", "node_path", 243); var testNode = CSharpSyntaxTree.ParseText(""); // act var coverage = LineCoverage.EvaluateAuditVariable(variable, testNode.GetRoot(), "HelloWorldTestsSample", "HelloWorldTests"); // act Assert.That(coverage.Span, Is.EqualTo(243)); }
public static LineCoverage EvaluateAuditVariable( AuditVariablePlaceholder variableName, SyntaxNode testMethodNode, string testProjectName, string testDocName) { LineCoverage lineCoverage = new LineCoverage { TestPath = NodePathBuilder.BuildPath(testMethodNode, testDocName, testProjectName), NodePath = variableName.NodePath, Span = variableName.SpanStart }; return lineCoverage; }
public void EvaluateAuditVariable_Should_Extract_TestPath() { // arrange var variable = new AuditVariablePlaceholder(null,"HelloWorldSample.HelloWorld.HelloWorld.Method_243",1); var testNode = CSharpSyntaxTree.ParseText("class HelloWorldTests{" + " public void Method()" + "{}" + "}"); var testMethodNode = testNode.GetRoot().DescendantNodes().OfType<MethodDeclarationSyntax>().First(); // act var coverage = LineCoverage.EvaluateAuditVariable(variable, testMethodNode, "HelloWorldTestsSample", "HelloWorldTests"); // act Assert.That(coverage.TestPath,Is.EqualTo("HelloWorldTestsSample.HelloWorldTests.HelloWorldTests.Method")); }
public void GetCoverage_ShouldReturnEmptyCoverage_When_ThereAreNoAuditVariables() { // arrange var variables = new AuditVariablePlaceholder[0]; var testResult = new TestRunResult("test_name", variables, "error", false); var testNode = CSharpSyntaxTree.ParseText("class HelloWorldTests{" + " public void TestMethod()" + "{}" + "}"); var testMethodNode = testNode.GetRoot().DescendantNodes().OfType<MethodDeclarationSyntax>().Single(); // act LineCoverage[] totalCoverage = testResult.GetCoverage(testMethodNode, "SampleHelloWorldTests", @"c:\HelloWorldTests.cs"); // assert Assert.That(totalCoverage.Length, Is.EqualTo(0)); }
public void Should_CallNodeWalker() { const string sourceCode = @"namespace SampleNamespace { class SampleClass { public void SampleMethod() { if(true) { if(true) { } } } } }"; const string documentPath = "documentPath"; const string projectName = "projectName"; var tree = CSharpSyntaxTree.ParseText(sourceCode); AuditVariablePlaceholder[] auditVariablePlaceholders = new AuditVariablePlaceholder[2]; auditVariablePlaceholders[0] = new AuditVariablePlaceholder(null, null, 0); auditVariablePlaceholders[1] = new AuditVariablePlaceholder(null, null, 0); _auditVariablesWalkerMock.Walk(Arg.Any<string>(), Arg.Any<string>(), Arg.Any<SyntaxNode>()) .Returns(auditVariablePlaceholders); SyntaxNode root = tree.GetRoot(); _rewriter.Rewrite(projectName, documentPath, root); _auditVariablesWalkerMock.Received(1).Walk(projectName, documentPath, root); }
public void Should_RewriteInlineWhile_To_BlockStatementWithAuditVariable() { const string sourceCode = @"namespace SampleNamespace { class SampleClass { public void SampleMethod() { while(true) a++; } } }"; var tree = CSharpSyntaxTree.ParseText(sourceCode); AuditVariablePlaceholder[] auditVariablePlaceholders = new AuditVariablePlaceholder[2]; auditVariablePlaceholders[0] = new AuditVariablePlaceholder(null, null, 0); auditVariablePlaceholders[1] = new AuditVariablePlaceholder(null, "WhileNode", 0); _auditVariablesWalkerMock.Walk(Arg.Any<string>(), Arg.Any<string>(), Arg.Any<SyntaxNode>()) .Returns(auditVariablePlaceholders); // act var rewrittenDoc = _rewriter.Rewrite("projectName", "documentPath", tree.GetRoot()); // assert var whileStatement = rewrittenDoc.SyntaxTree.GetRoot(). DescendantNodes().OfType<WhileStatementSyntax>().Single(); var statements = whileStatement.ChildNodes() .OfType<BlockSyntax>() .Single() .DescendantNodes() .OfType<StatementSyntax>() .ToArray(); Assert.That(statements.Length, Is.EqualTo(2)); Assert.That(statements[0].ToFullString(), Is.StringContaining("WhileNode")); }
private void CreateAuditVariable(StatementSyntax statement) { string documentName = Path.GetFileNameWithoutExtension(_documentPath); int span = statement.SpanStart - statement.GetParentMethod().SpanStart; string nodePath = NodePathBuilder.BuildPath(statement, documentName, _projectName); var auditVariablePlaceholder = new AuditVariablePlaceholder(_documentPath, nodePath, span); _auditVariablePlaceholders.Add(auditVariablePlaceholder); }