package table; import static org.junit.Assert.*; import org.junit.*; import sexpression.*; public class SymbolTableTester { private SymbolTable symbolTable; @Before public void setUp() throws Exception { symbolTable = new SymbolTable(); } @Test public void lookupSymbolNotInTable() { assertFalse(symbolTable.contains("symbol")); } @Test public void lookupSymbolInTable() { symbolTable.put("symbol", Symbol.T); assertTrue(symbolTable.contains("symbol")); } @Test public void retrieveSymbolValue() { symbolTable.put("symbol", Symbol.T); assertEquals(Symbol.T, symbolTable.get("symbol")); } @Test public void redefineSymbolValue() { symbolTable.put("symbol", Symbol.T); symbolTable.put("symbol", Nil.getInstance()); assertEquals(Nil.getInstance(), symbolTable.get("symbol")); } @Test public void checkParentTableIsCorrect() { SymbolTable childTable = new SymbolTable(symbolTable); assertEquals(symbolTable, childTable.getParent()); } @Test public void lookupSymbolInParentTable() { symbolTable.put("symbol", Symbol.T); SymbolTable childTable = new SymbolTable(symbolTable); SymbolTable parentTable = childTable.getParent(); assertEquals(Symbol.T, parentTable.get("symbol")); } }