|
- package parser;
-
- import expression.Addition;
- import expression.Identifier;
- import expression.Number;
- import expression.Subtraction;
- import org.junit.Assert;
- import org.junit.Test;
- import program.Assignment;
- import program.Composition;
- import program.Loop;
- import program.Program;
-
- public class ParserTest {
- @Test
- 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);
- Program actual = parser.parse();
- Assert.assertEquals(expected, actual);
- }
- }
|