public void GetMissingFunctionName() { // Arrange var model = this.Calculator.Semantic; var method = this.Calculator.SubtractMethod; // Act var result = SyntaxNodeUtility.TryGetFunctionName(model, method, out string functionName); // Assert Assert.False(result); Assert.Null(functionName); }
public void GetExistingFunctionName() { // Arrange var expectedFunctionName = "Add"; var model = this.Calculator.Semantic; var method = this.Calculator.AddMethod; // Act var result = SyntaxNodeUtility.TryGetFunctionName(model, method, out string functionName); // Assert Assert.True(result); Assert.Equal(expectedFunctionName, functionName); }
public static bool TryParse(SemanticModel model, MethodDeclarationSyntax method, out DurableFunction function) { function = null; if (!SyntaxNodeUtility.TryGetFunctionName(model, method, out string name)) { return(false); } if (!SyntaxNodeUtility.TryGetFunctionKind(method, out DurableFunctionKind kind)) { return(false); } if (!SyntaxNodeUtility.TryGetReturnType(method, out TypeSyntax returnType)) { return(false); } if (!SyntaxNodeUtility.TryGetParameters(model, method, out List <TypedParameter> parameters)) { return(false); } if (!SyntaxNodeUtility.TryGetQualifiedTypeName(model, method, out string fullTypeName)) { return(false); } var usedTypes = new List <TypeSyntax>(); usedTypes.Add(returnType); usedTypes.AddRange(parameters.Select(p => p.Type)); if (!SyntaxNodeUtility.TryGetRequiredNamespaces(model, usedTypes, out HashSet <string> requiredNamespaces)) { return(false); } requiredNamespaces.UnionWith(GetRequiredGlobalNamespaces()); function = new DurableFunction(fullTypeName, name, kind, parameters, returnType, requiredNamespaces); return(true); }