コード例 #1
0
        public void ReplaceJumpToWhile()
        {
            var cu = new CompilationUnit().AddStatements(new Statement[]
                {
                    new ExpressionStatement(new MethodInvocation("Delay").AddArgument(60)){ StartOffset = 0, EndOffset = 4 },
                    new ExpressionStatement(new BinaryExpression(new ElementAccess("LocalVariables", 0), Operator.Assignment, new MethodInvocation("GetRandomNumber").AddArgument(10))){ StartOffset = 4, EndOffset = 8 },
                    new ExpressionStatement(new BinaryExpression(new ElementAccess("Variables", 103), Operator.Assignment, 0.ToLiteral())){ StartOffset = 8, EndOffset = 13 },
                    new JumpStatement(true.ToLiteral(), 0){ StartOffset = 13, EndOffset = 16 },
                    new ExpressionStatement(new MethodInvocation("StopObjectCode")){ StartOffset = 16, EndOffset = 17 },
                });
            var expectedCu = new CompilationUnit().AddStatements(new Statement[]
                {
                    new DoWhileStatement(true.ToLiteral(), new BlockStatement().AddStatements(
                            new Statement[]
                            {
                                new ExpressionStatement(new MethodInvocation("Delay").AddArgument(60)){ StartOffset = 0, EndOffset = 4 },
                                new ExpressionStatement(new BinaryExpression(new ElementAccess("LocalVariables", 0), Operator.Assignment, new MethodInvocation("GetRandomNumber").AddArgument(10))){ StartOffset = 4, EndOffset = 8 },
                                new ExpressionStatement(new BinaryExpression(new ElementAccess("Variables", 103), Operator.Assignment, 0.ToLiteral())){ StartOffset = 8, EndOffset = 13 },
                            })),
                    new ExpressionStatement(new MethodInvocation("StopObjectCode")){ StartOffset = 16, EndOffset = 17 },
                });

            var actualCu = new ReplaceJumpToWhile().Replace(cu);
            AstHelper.AstEquals(expectedCu, actualCu);
        }
コード例 #2
0
        public void ReplaceJumpToWhile()
        {
            var cu = new CompilationUnit().AddStatements(new Statement[]
            {
                new ExpressionStatement(new MethodInvocation("Delay").AddArgument(60))
                {
                    StartOffset = 0, EndOffset = 4
                },
                new ExpressionStatement(new BinaryExpression(new ElementAccess("LocalVariables", 0), Operator.Assignment, new MethodInvocation("GetRandomNumber").AddArgument(10)))
                {
                    StartOffset = 4, EndOffset = 8
                },
                new ExpressionStatement(new BinaryExpression(new ElementAccess("Variables", 103), Operator.Assignment, 0.ToLiteral()))
                {
                    StartOffset = 8, EndOffset = 13
                },
                new JumpStatement(true.ToLiteral(), 0)
                {
                    StartOffset = 13, EndOffset = 16
                },
                new ExpressionStatement(new MethodInvocation("StopObjectCode"))
                {
                    StartOffset = 16, EndOffset = 17
                },
            });
            var expectedCu = new CompilationUnit().AddStatements(new Statement[]
            {
                new DoWhileStatement(true.ToLiteral(), new BlockStatement().AddStatements(
                                         new Statement[]
                {
                    new ExpressionStatement(new MethodInvocation("Delay").AddArgument(60))
                    {
                        StartOffset = 0, EndOffset = 4
                    },
                    new ExpressionStatement(new BinaryExpression(new ElementAccess("LocalVariables", 0), Operator.Assignment, new MethodInvocation("GetRandomNumber").AddArgument(10)))
                    {
                        StartOffset = 4, EndOffset = 8
                    },
                    new ExpressionStatement(new BinaryExpression(new ElementAccess("Variables", 103), Operator.Assignment, 0.ToLiteral()))
                    {
                        StartOffset = 8, EndOffset = 13
                    },
                })),
                new ExpressionStatement(new MethodInvocation("StopObjectCode"))
                {
                    StartOffset = 16, EndOffset = 17
                },
            });

            var actualCu = new ReplaceJumpToWhile().Replace(cu);

            AstHelper.AstEquals(expectedCu, actualCu);
        }