public void GetReturnType() { // Arrange var method = this.Calculator.MultiplyMethod; // Act var result = SyntaxNodeUtility.TryGetReturnType(method, out TypeSyntax returnType); // Assert Assert.True(result); Assert.NotNull(returnType); }
public void GetOrchestrationFunctionKind() { // Arrange var expectedFunctionKind = DurableFunctionKind.Orchestration; var method = this.Calculator.MultiplyMethod; // Act var result = SyntaxNodeUtility.TryGetFunctionKind(method, out DurableFunctionKind kind); // Assert Assert.True(result); Assert.Equal(expectedFunctionKind, kind); }
public void GetMissingFunctionKind() { // Arrange var expectedFunctionKind = DurableFunctionKind.Unknonwn; var method = this.Calculator.DivideMethod; // Act var result = SyntaxNodeUtility.TryGetFunctionKind(method, out DurableFunctionKind kind); // Assert Assert.False(result); Assert.Equal(expectedFunctionKind, kind); }
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 GetActivityFunctionKind() { // Arrange var expectedFunctionKind = DurableFunctionKind.Activity; var method = this.Calculator.SubtractMethod; // Act var result = SyntaxNodeUtility.TryGetFunctionKind(method, out DurableFunctionKind kind); // Assert Assert.True(result); Assert.Equal(expectedFunctionKind, kind); }
public void GetQualifiedName() { // Arrange var expectedQualifiedName = "WebJobs.Extensions.DurableTask.CodeGen.Example.Calculator.Add"; var model = this.Calculator.Semantic; var method = this.Calculator.AddMethod; // Act var result = SyntaxNodeUtility.TryGetQualifiedTypeName(model, method, out string qualifiedName); // Assert Assert.True(result); Assert.Equal(expectedQualifiedName, qualifiedName); }
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 void GetGenericParameterFromLocalDeclaration() { // Arrange var model = this.Calculator.Semantic; var method = this.Calculator.AddListMethod; // Act var result = SyntaxNodeUtility.TryGetParameters(model, method, out List <TypedParameter> parameters); // Assert Assert.True(result); Assert.Single(parameters); Assert.Equal("List<int>", parameters[0].Type.ToString()); Assert.Equal("nums", parameters[0].Name.ToString()); }
public void GetRequiredNamespaces() { // Arrange var model = this.Calculator.Semantic; var method = this.Calculator.AddComplexMethod; var parameterTypes = SyntaxNodeUtility.TryGetParameters(model, method, out List <TypedParameter> typedParameters); var usedTypes = typedParameters.Select(p => p.Type).ToList(); // Act var result = SyntaxNodeUtility.TryGetRequiredNamespaces(model, usedTypes, out HashSet <string> requiredNamespaces); // Assert Assert.True(result); Assert.Single(requiredNamespaces); Assert.Equal("WebJobs.Extensions.DurableTask.CodeGen.Example.Models", requiredNamespaces.First()); }
public void GetGenericParametersFromAssignment() { // Arrange var model = this.Calculator.Semantic; var method = this.Calculator.AddListsMethod; // Act var result = SyntaxNodeUtility.TryGetParameters(model, method, out List <TypedParameter> parameters); // Assert Assert.True(result); Assert.Equal(2, parameters.Count); Assert.Equal("List<int>", parameters[0].Type.ToString()); Assert.Equal("List<int>", parameters[1].Type.ToString()); Assert.Equal("nums1", parameters[0].Name.ToString()); Assert.Equal("nums2", parameters[1].Name.ToString()); }
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); }
public void GetRequiredNamespacesWithGenerics() { // Arrange var model = this.Calculator.Semantic; var method = this.Calculator.AddListComplexMethod; SyntaxNodeUtility.TryGetParameters(model, method, out List <TypedParameter> typedParameters); var usedTypes = typedParameters.Select(p => p.Type).ToList(); // Act var result = SyntaxNodeUtility.TryGetRequiredNamespaces(model, usedTypes, out HashSet <string> requiredNamespaces); // Assert Assert.True(result); Assert.Equal(2, requiredNamespaces.Count); var requiredNamespaceList = requiredNamespaces.ToList(); Assert.Equal("System.Collections.Generic", requiredNamespaceList[0]); Assert.Equal("WebJobs.Extensions.DurableTask.CodeGen.Example.Models", requiredNamespaceList[1]); }