|
- package interpreter;
-
- import expression.Addition;
- import expression.Identifier;
- import expression.Int;
- import expression.Subtraction;
- import org.junit.Test;
- import program.Assignment;
- import program.Composition;
- import program.Loop;
- import program.Program;
- import java.util.Map;
-
- import static org.junit.Assert.assertEquals;
-
- public class InterpreterTest {
- @Test
- public void testSem() {
- Program initialization = new Composition(
- new Composition(
- new Assignment(new Identifier("a"), new Int(2)),
- new Assignment(new Identifier("b"), new Int(4))),
- new Assignment(new Identifier("r"), new Int(0)));
- Program body = 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))));
- Program loop = new Loop(new Identifier("a"), body);
- Program program = new Composition(initialization, loop);
- Interpreter interpreter = new Interpreter(program);
- Map<String, Integer> valuation = interpreter.getValuation();
- assertEquals(8, valuation.get("r").intValue());
- assertEquals(0, valuation.get("a").intValue());
- assertEquals(4, valuation.get("b").intValue());
- }
- }
|