final String loopCode = "while (a) { r := r + b ; a := a - 1 }";
final Loop loop = new Loop(new Identifier("a"), new Composition(new Assignment(new Identifier("r"), new Addition(new Identifier("r"), new Identifier("b"))), new Assignment(new Identifier("a"), new Subtraction(new Identifier("a"), new Int(1)))));
final String assignmentCode = "a := 2";
final Assignment assignment = new Assignment(new Identifier("a"), new Int(2));
final String compositionCode = assignmentCode + " ; b := bar";
final Composition composition = new Composition(assignment, new Assignment(new Identifier("b"), new Identifier("bar")));
final String conditionalCode = "if (foo - bar) then { x := 5 } else { x := x }";
final Conditional conditional = new Conditional(new Subtraction(new Identifier("foo"), new Identifier("bar")), new Assignment(new Identifier("x"), new Int(5)), new Assignment(new Identifier("x"), new Identifier("x")));
final Program program = new Composition(new Composition(composition, loop), conditional);
@Test
@Test
public void testParse() {
public void testParse() {
String program = "a := 2 ; b := 4 ; r := 0 ; while (a) { r := r + b ; a := a - 1 }";
Parser parser = new Parser(program);
Program initialization = new Composition(new Composition(new Assignment(new Identifier("a"), new Number(2)), new Assignment(new Identifier("b"), new Number(4))), new Assignment(new Identifier("r"), new Number(0)));
Program loop = new Loop(new Identifier("a"), new Composition(new Assignment(new Identifier("r"), new Addition(new Identifier("r"), new Identifier("b"))), new Assignment(new Identifier("a"), new Subtraction(new Identifier("a"), new Number(1)))));
Program expected = new Composition(initialization, loop);
final Expression expression = new Addition(new Subtraction(new Addition(new Identifier("a"), new Identifier("b")), new Subtraction(new Identifier("c"), new Int(56))), new Int(-47));