private static InvocationContext CreateContextForMethod(string typeAndMethodName, SnippetCompiler snippet) { var nameParts = typeAndMethodName.Split('.'); var identifierPairs = snippet.IsCSharp() ? GetCSharpNodes() : GetVbNodes(); foreach (var(invocation, methodName) in identifierPairs) { var symbol = snippet.GetSymbol <IMethodSymbol>(invocation); if (symbol.Name == nameParts[1] && symbol.ContainingType.Name == nameParts[0]) { return(new InvocationContext(invocation, methodName, snippet.SemanticModel)); } } Assert.Fail($"Test setup error: could not find method call in test code snippet: {typeAndMethodName}"); return(null); IEnumerable <(SyntaxNode node, string name)> GetCSharpNodes() => snippet.GetNodes <CSharpSyntax.InvocationExpressionSyntax>() .Select(n => ((SyntaxNode)n, n.Expression.GetIdentifier()?.Identifier.ValueText)); IEnumerable <(SyntaxNode node, string name)> GetVbNodes() => snippet.GetNodes <VBSyntax.InvocationExpressionSyntax>() .Select(n => ((SyntaxNode)n, VisualBasicSyntaxHelper.GetIdentifier(n.Expression)?.Identifier.ValueText)); }
protected override TrackerBase <InvocationContext> .Condition HasPkcs1PaddingArgument() => (context) => { var argumentList = ((InvocationExpressionSyntax)context.Node).ArgumentList; var values = VisualBasicSyntaxHelper.ArgumentValuesForParameter(context.SemanticModel, argumentList, "padding"); return(values.Length == 1 && values[0] is ExpressionSyntax valueSyntax && context.SemanticModel.GetSymbolInfo(valueSyntax).Symbol is ISymbol symbol && symbol.Name == "Pkcs1"); };
public void IsNothingLiteral_Null_VB() => VisualBasicSyntaxHelper.IsNothingLiteral(null).Should().BeFalse();