package de.hauschild.gmltracer.gml.impl.control;
import java.util.List;
import org.testng.Assert;
import org.testng.annotations.Test;
import de.hauschild.gmltracer.gml.Environment;
import de.hauschild.gmltracer.gml.Interpreter;
import de.hauschild.gmltracer.gml.Parser;
import de.hauschild.gmltracer.gml.Token;
import de.hauschild.gmltracer.gml.TokenStack;
import de.hauschild.gmltracer.gml.impl.GmlInterpreter;
import de.hauschild.gmltracer.gml.impl.GmlParser;
import de.hauschild.gmltracer.gml.impl.value.bool.BooleanToken;
import de.hauschild.gmltracer.gml.impl.value.integer.IntegerToken;
public class IfTokenTest {
private final String program = "b { 1 } { 2 } if";
private final Parser parser = new GmlParser();
private final Interpreter interpreter = new GmlInterpreter();
private final List<Token> tokenSequence = parser.parse(program);
@Test
public void integrativeTestForFalse() {
final Environment environment = new Environment();
final TokenStack tokenStack = new TokenStack();
environment.put("b", new BooleanToken(false));
interpreter.interpret(environment, tokenStack, tokenSequence);
final IntegerToken intToken = tokenStack.pop(IntegerToken.class);
Assert.assertEquals(intToken.getValue(), Integer.valueOf(2));
}
@Test
public void integrativeTestForTrue() {
final Environment environment = new Environment();
final TokenStack tokenStack = new TokenStack();
environment.put("b", new BooleanToken(true));
interpreter.interpret(environment, tokenStack, tokenSequence);
final IntegerToken intToken = tokenStack.pop(IntegerToken.class);
Assert.assertEquals(intToken.getValue(), Integer.valueOf(1));
}
}
|