package de.fuberlin.projecta; import static org.junit.Assert.assertEquals; import java.util.HashMap; import org.junit.Test; import de.fuberlin.commons.lexer.TokenType; import de.fuberlin.projecta.parser.NonTerminal; import de.fuberlin.projecta.parser.ParseTable; public class ParseTableTest { private ParseTable table = new ParseTable(); @Test public void testSetEntry() { table.setEntry(NonTerminal.program, TokenType.DEF, "program ::= funcs"); String entry = table.getEntry(NonTerminal.program, TokenType.DEF); assertEquals("program ::= funcs", entry); } @Test(expected = IllegalStateException.class) public void testSetEntryTwice() { table.setEntry(NonTerminal.program, TokenType.DEF, "program ::= funcs"); table.setEntry(NonTerminal.program, TokenType.DEF, "program ::= funcs"); } @Test public void testGetInvalidEntry() { String entry = table.getEntry(NonTerminal.program, TokenType.DEF); assertEquals(null, entry); } @Test public void testGetEntries() { // funcs table.setEntry(NonTerminal.funcs, TokenType.DEF, "funcs ::= func funcs"); table.setEntry(NonTerminal.funcs, TokenType.EOF, "funcs ::= EPSILON"); HashMap<TokenType,String> entries = table.getEntries(NonTerminal.funcs); assertEquals(2, entries.size()); assertEquals("funcs ::= func funcs", entries.get(TokenType.DEF)); assertEquals("funcs ::= EPSILON", entries.get(TokenType.EOF)); } }