transcendental-lisp/test/table/ExecutionContextTester.java

85 lines
2.2 KiB
Java
Raw Normal View History

package table;
import static org.junit.Assert.*;
import org.junit.*;
import sexpression.*;
public class ExecutionContextTester {
private ExecutionContext executionContext;
public ExecutionContextTester() {
this.executionContext = ExecutionContext.getInstance();
}
@Before
public void setUp() {
executionContext.clearContext();
}
@After
public void tearDown() {
executionContext.clearContext();
}
@Test
public void assignANewScope() {
SymbolTable scope = new SymbolTable();
executionContext.setScope(scope);
assertEquals(scope, executionContext.getScope());
}
@Test
public void clearContext() {
SymbolTable scope = new SymbolTable();
executionContext.setScope(scope);
assertEquals(scope, executionContext.getScope());
executionContext.clearContext();
assertNotEquals(scope, executionContext.getScope());
assertNull(executionContext.getScope().getParent());
}
@Test
public void lookupVariable() {
executionContext.getScope().put("test", Symbol.T);
assertEquals(Symbol.T, executionContext.lookupSymbolValue("test"));
}
@Test
public void lookupLocalVariable() {
SymbolTable scope = new SymbolTable(executionContext.getScope());
scope.put("local", Symbol.T);
executionContext.setScope(scope);
assertEquals(Symbol.T, executionContext.lookupSymbolValue("local"));
}
@Test
public void lookupGlobalVariable() {
SymbolTable scope = new SymbolTable(executionContext.getScope());
executionContext.getScope().put("global", Symbol.T);
executionContext.setScope(scope);
assertEquals(Symbol.T, executionContext.lookupSymbolValue("global"));
}
@Test
public void lookupShadowedVariable() {
SymbolTable scope = new SymbolTable(executionContext.getScope());
scope.put("shadowed", Nil.getInstance());
executionContext.getScope().put("shadowed", Symbol.T);
executionContext.setScope(scope);
assertEquals(Nil.getInstance(), executionContext.lookupSymbolValue("shadowed"));
}
}