package com.github.jknack.antlr4ide.parsetree; import static org.easymock.EasyMock.createMock; import static org.easymock.EasyMock.expect; import static org.easymock.EasyMock.replay; import static org.easymock.EasyMock.verify; import static org.junit.Assert.assertEquals; import org.junit.Test; import com.github.jknack.antlr4ide.lang.LexerRule; import com.github.jknack.antlr4ide.lang.ParserRule; import com.github.jknack.antlr4ide.lang.Rule; import com.github.jknack.antlr4ide.lang.Terminal; public class ParseTreeNodeTest { @Test public void parserRuleSource() { Rule element = createMock(ParserRule.class); expect(element.getName()).andReturn("rule"); Object[] mocks = {element }; replay(mocks); ParseTreeNode node = new ParseTreeNode(element); assertEquals(element, node.getElement()); assertEquals("rule", node.getText()); verify(mocks); } @Test public void lexerRuleSource() { Rule element = createMock(LexerRule.class); expect(element.getName()).andReturn("WS"); Object[] mocks = {element }; replay(mocks); ParseTreeNode node = new ParseTreeNode(element); assertEquals(element, node.getElement()); assertEquals("WS", node.getText()); verify(mocks); } @Test public void terminalSource() { Terminal element = createMock(Terminal.class); expect(element.getLiteral()).andReturn("'hello'"); Object[] mocks = {element }; replay(mocks); ParseTreeNode node = new ParseTreeNode(element); assertEquals(element, node.getElement()); assertEquals("'hello'", node.getText()); verify(mocks); } @Test public void toStringSource() { Object element = new Object() { @Override public String toString() { return "toString"; } }; ParseTreeNode node = new ParseTreeNode(element); assertEquals(element, node.getElement()); assertEquals("toString", node.getText()); } @Test(expected = NullPointerException.class) public void failOnNullSource() { new ParseTreeNode(null); } }