25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

26 lines
1.1 KiB

  1. package parser;
  2. import expression.Addition;
  3. import expression.Identifier;
  4. import expression.Number;
  5. import expression.Subtraction;
  6. import org.junit.Assert;
  7. import org.junit.Test;
  8. import program.Assignment;
  9. import program.Composition;
  10. import program.Loop;
  11. import program.Program;
  12. public class ParserTest {
  13. @Test
  14. public void testParse() {
  15. String program = "a := 2 ; b := 4 ; r := 0 ; while (a) { r := r + b ; a := a - 1 }";
  16. Parser parser = new Parser(program);
  17. 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)));
  18. 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)))));
  19. Program expected = new Composition(initialization, loop);
  20. Program actual = parser.parse();
  21. Assert.assertEquals(expected, actual);
  22. }
  23. }