Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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 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);
        }