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); }
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); }