protected override EvaluationResult EvaluateImpl(SyntaxNode node)
{
var methodDeclaration = (MethodDeclarationSyntax)node;
if (methodDeclaration.AttributeLists.Any(l => l.Attributes.Any(a => a.Name is SimpleNameSyntax && ((SimpleNameSyntax)a.Name).Identifier.ValueText == "TestMethod")))
{
var accessExpressionSyntaxes = methodDeclaration.DescendantNodes()
.OfType<MemberAccessExpressionSyntax>()
.AsArray();
var assertsFound = accessExpressionSyntaxes
.Select(x => x.Expression as SimpleNameSyntax)
.Where(x => x != null)
.Count(x => x.Identifier.ValueText == "Assert" || x.Identifier.ValueText == "ExceptionAssert");
var mockVerifyFound = accessExpressionSyntaxes
.Count(x => x.Name.Identifier.ValueText == "Verify" || x.Name.Identifier.ValueText == "VerifySet" || x.Name.Identifier.ValueText == "VerifyGet");
var expectedExceptions =
methodDeclaration.AttributeLists.Count(
l =>
l.Attributes.Any(a => a.Name is SimpleNameSyntax && ((SimpleNameSyntax)a.Name).Identifier.ValueText == "ExpectedException"));
var total = assertsFound + mockVerifyFound + expectedExceptions;
return total != 1
? new EvaluationResult
{
Snippet = node.ToFullString(),
ErrorCount = total
}
: null;
}
return null;
}
}