Esempio n. 1
0
        private MethodElementFinder BuildFinder(string methodDef)
        {
            var classDef = PythonCodeGenerator.GenerateClass("ParentClass", new string[] { }, methodDef);
            var parser   = TestParser.GetParser(classDef);

            return(new MethodElementFinder(GetFunctionTree(parser), parser));
        }
Esempio n. 2
0
        private string GenerateMethod()
        {
            var statement  = PythonCodeGenerator.GenerateDefaultVariableDeclaration();
            var methodBody = PythonCodeGenerator.GenerateFunctionBody(new[] { statement });

            return(PythonCodeGenerator.GenerateFunction(MethodName, _parameters, methodBody));
        }
Esempio n. 3
0
        private MethodBodyElementFinder BuildFinder(string methodBody)
        {
            var methodDef = PythonCodeGenerator.GenerateFunction("ParentMethod", new string[] { }, methodBody, 0);
            var parser    = TestParser.GetParser(methodDef);

            return(new MethodBodyElementFinder(GetFunctionBodyTree(parser), parser));
        }
        public void FindMethodInvocationsInSingleStatement()
        {
            var methodInvocation = PythonCodeGenerator.GenerateDefaultMethodInvocation(0);
            var finder           = BuildFinder(methodInvocation);

            var invokedMethods = finder.FindMethodInvocations();

            Assert.AreEqual(1, invokedMethods.Count());
        }
Esempio n. 5
0
        public void FindReturnStatementsTest()
        {
            var methodBody = GenerateMethodBody(PythonCodeGenerator.GenerateDefaultReturnStatement());
            var finder     = BuildFinder(methodBody);

            var returnStatements = finder.FindReturnStatements();

            Assert.AreEqual(1, returnStatements.Count());
        }
Esempio n. 6
0
        public string BuildSummaryAndDescriptionString()
        {
            string summaryString = string.IsNullOrWhiteSpace(this.Summary) &&
                                   string.IsNullOrWhiteSpace(this.Documentation)
                ? this.Name
                : this.Summary;

            return(PythonCodeGenerator.BuildSummaryAndDescriptionString(summaryString, this.Documentation));
        }
Esempio n. 7
0
        public void FindEmbeddedStatementsTest()
        {
            var methodBody = GenerateMethodBody(PythonCodeGenerator.GenerateDefaultCompoundStatement(2));
            var finder     = BuildFinder(methodBody);

            var embeddedStatements = finder.FindEmbeddedStatements();

            Assert.AreEqual(1, embeddedStatements.Count());
        }
        public void FindVariablesInReturnStatement()
        {
            var variableId      = "variable1";
            var returnStatement = PythonCodeGenerator.GenerateReturnStatement(variableId, 0);
            var finder          = BuildFinder(returnStatement);

            var variables = finder.FindVariables();

            Assert.AreEqual(1, variables.Count());
        }
        public void FindNestedStatement()
        {
            var secondLevel = PythonCodeGenerator.GenerateDefaultCompoundStatement(2);
            var firstLevel  = PythonCodeGenerator.GenerateDefaultNestedCompoundStatement(new[] { secondLevel });
            var finder      = BuildFinder(firstLevel);

            var nestedLevels = finder.FindNestedEmbeddedStatements();

            Assert.AreEqual(1, nestedLevels.Count());
        }
Esempio n. 10
0
        public void FindMethodInvocation()
        {
            const string variableId       = "newVariable";
            var          methodInvocation = PythonCodeGenerator.GenerateDefaultMethodInvocation(0);
            var          statement        = PythonCodeGenerator.GenerateAssignStatement(variableId, methodInvocation, 0);
            var          finder           = BuildFinder(statement);

            var invokedMethods = finder.FindMethodInvocations();

            Assert.AreEqual(1, invokedMethods.Count());
        }
Esempio n. 11
0
        private string GenerateMethodBody(int statementsCount)
        {
            var statements = new List <string>();

            for (var i = 0; i < statementsCount; i++)
            {
                statements.Add(PythonCodeGenerator.GenerateDefaultAssignmentStatement());
            }

            return(PythonCodeGenerator.GenerateFunctionBody(statements));
        }
Esempio n. 12
0
        public void FindVariables()
        {
            const string leftPartVariableId  = "newVariable";
            var          rightPartVariableId = "variable1";
            var          statement           = PythonCodeGenerator.GenerateAssignStatement(leftPartVariableId, rightPartVariableId, 0);
            var          finder = BuildFinder(statement);

            var leftVariables  = finder.FindVariablesInLeftPart();
            var rightVariables = finder.FindVariablesInRightPart();

            Assert.AreEqual(1, leftVariables.Count());
            Assert.AreEqual(1, rightVariables.Count());
        }
        public void FindCountOfDirectStatements()
        {
            var simpleStatement = PythonCodeGenerator.GenerateDefaultVariableDeclaration();
            var secondLevel     = PythonCodeGenerator.GenerateDefaultCompoundStatement(2);
            var firstLevel      =
                PythonCodeGenerator.GenerateDefaultNestedCompoundStatement(new[] { simpleStatement },
                                                                           new[] { secondLevel });
            var finder = BuildFinder(firstLevel);

            var countOfDirectStatements = finder.CountOfDirectStatementsInBody();

            Assert.AreEqual(2, countOfDirectStatements);
        }
Esempio n. 14
0
        public void FindMethodInvocation_With_EmptyArguments()
        {
            const string methodName       = "invokedMethod1";
            var          methodInvocation = PythonCodeGenerator.GenerateMethodInvocation(methodName, new string[] { }, 0);

            var finder = BuildFinder(methodInvocation);
            var argumentsWithWithMethodInvocationType =
                finder.FindArgumentCollection().FindArgumentsWithMethodInvocationType();
            var argumentsWithWithVariableType = finder.FindArgumentCollection().FindArgumentsWithVariableType();

            Assert.AreEqual(0, argumentsWithWithMethodInvocationType.Count());
            Assert.AreEqual(0, argumentsWithWithVariableType.Count());
        }
Esempio n. 15
0
        public void FindMethodInvocationWithVariableArguments()
        {
            const string methodName       = "invokedMethod1";
            var          arguments        = new[] { "arg1", "arg2" };
            var          methodInvocation = PythonCodeGenerator.GenerateMethodInvocation(methodName, arguments, 0);

            var finder                    = BuildFinder(methodInvocation);
            var invokedMethodName         = finder.FindIdentifier().FindIdentifier().FirstOrDefault();
            var argumentsWithVariableType = finder.FindArgumentCollection().FindArgumentsWithVariableType();


            Assert.AreEqual(methodName, invokedMethodName);
            Assert.AreEqual(2, argumentsWithVariableType.Count());
        }
Esempio n. 16
0
        public void CountOfDirectStatementsInBodyTest()
        {
            var assignmentStatement = PythonCodeGenerator.GenerateDefaultAssignmentStatement();
            var embeddedStatement   = PythonCodeGenerator.GenerateDefaultCompoundStatement(2);
            var returnStatement     = PythonCodeGenerator.GenerateDefaultReturnStatement();

            string[] statements = { assignmentStatement, embeddedStatement, returnStatement };
            var      methodBody = GenerateMethodBody(statements);

            var finder = BuildFinder(methodBody);

            var statementsCount = finder.CountOfDirectStatementsInBody();

            Assert.AreEqual(3, statementsCount);
        }
        public void ShouldDetectAllClassesInCode()
        {
            string[] classNames = { "class1", "class2" };
            var      code       = PythonCodeGenerator.GenerateRoot(classNames);

            var parserBuilder = new ParserBuilder();

            parserBuilder.Build(code);

            var finder  = parserBuilder.GetParseElementFinder();
            var classes = finder.FindClasses();
            var actualDetectedClasses = classes.Count();

            Assert.AreEqual(classNames.Length, actualDetectedClasses);
        }
Esempio n. 18
0
        public void FindMethodInvocation_WithMethodInvocation_Arguments()
        {
            const string nestedInvokedMethodName = "argInvokedMethod";
            var          nestedArguments         = new[] { "arg1", "arg2" };
            var          mainArgument            =
                PythonCodeGenerator.GenerateMethodInvocation(nestedInvokedMethodName, nestedArguments, 0);

            const string mainInvokedMethodName = "invokedMethod1";
            var          methodInvocation      =
                PythonCodeGenerator.GenerateMethodInvocation(mainInvokedMethodName, new[] { mainArgument }, 0);

            var finder = BuildFinder(methodInvocation);
            var argumentsWithWithMethodInvocationType =
                finder.FindArgumentCollection().FindArgumentsWithMethodInvocationType();
            var argumentsWithWithVariableType = finder.FindArgumentCollection().FindArgumentsWithVariableType();

            Assert.AreEqual(1, argumentsWithWithMethodInvocationType.Count());
            Assert.AreEqual(0, argumentsWithWithVariableType.Count());
        }
Esempio n. 19
0
 private string GenerateMethodBody(string statement)
 {
     return(PythonCodeGenerator.GenerateFunctionBody(new[] { statement }));
 }
Esempio n. 20
0
 public string BuildSummaryAndDescriptionString()
 {
     return(PythonCodeGenerator.BuildSummaryAndDescriptionString(this.Summary, this.Description));
 }
Esempio n. 21
0
 private string GenerateMethodBody(string[] statements)
 {
     return(PythonCodeGenerator.GenerateFunctionBody(statements));
 }
Esempio n. 22
0
        private string GenerateMethod(int statementsCount)
        {
            var methodBody = GenerateMethodBody(statementsCount);

            return(PythonCodeGenerator.GenerateFunction("ParentMethod", new string[] { }, methodBody, 0));
        }