您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

36 行
1.3 KiB

  1. package interpreter;
  2. import expression.Addition;
  3. import expression.Identifier;
  4. import expression.Int;
  5. import expression.Subtraction;
  6. import org.junit.Test;
  7. import program.Assignment;
  8. import program.Composition;
  9. import program.Loop;
  10. import program.Program;
  11. import java.util.Map;
  12. import static org.junit.Assert.assertEquals;
  13. public class InterpreterTest {
  14. @Test
  15. public void testSem() {
  16. Program initialization = new Composition(
  17. new Composition(
  18. new Assignment(new Identifier("a"), new Int(2)),
  19. new Assignment(new Identifier("b"), new Int(4))),
  20. new Assignment(new Identifier("r"), new Int(0)));
  21. Program body = new Composition(
  22. new Assignment(new Identifier("r"), new Addition(new Identifier("r"), new Identifier("b"))),
  23. new Assignment(new Identifier("a"), new Subtraction(new Identifier("a"), new Int(1))));
  24. Program loop = new Loop(new Identifier("a"), body);
  25. Program program = new Composition(initialization, loop);
  26. Interpreter interpreter = new Interpreter(program);
  27. Map<String, Integer> valuation = interpreter.getValuation();
  28. assertEquals(8, valuation.get("r").intValue());
  29. assertEquals(0, valuation.get("a").intValue());
  30. assertEquals(4, valuation.get("b").intValue());
  31. }
  32. }