Пример #1
0
        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");
 };
Пример #3
0
 public void IsNothingLiteral_Null_VB() =>
 VisualBasicSyntaxHelper.IsNothingLiteral(null).Should().BeFalse();