package uk.co.badgersinfoil.metaas.antlr; import java.io.IOException; import org.asdt.core.internal.antlr.AS3Parser; import uk.co.badgersinfoil.metaas.impl.ASTUtils; import uk.co.badgersinfoil.metaas.impl.TokenBuilder; import uk.co.badgersinfoil.metaas.impl.antlr.LinkedListToken; import uk.co.badgersinfoil.metaas.impl.antlr.LinkedListTree; import junit.framework.TestCase; public class ASTTest extends TestCase { public void testIt() throws IOException { LinkedListTree switchStmt = ASTUtils.newAST(AS3Parser.SWITCH, "switch"); LinkedListTree defaultStmt1 = ASTUtils.newAST(AS3Parser.DEFAULT, "default"); switchStmt.addChildWithTokens(defaultStmt1); LinkedListToken colon = TokenBuilder.newColon(); defaultStmt1.appendToken(colon); LinkedListTree stmtList = ASTUtils.newImaginaryAST(AS3Parser.SWITCH_STATEMENT_LIST); defaultStmt1.addChildWithTokens(stmtList); assertEquals(":", defaultStmt1.getStopToken().getText()); assertNull(colon.getNext()); LinkedListTree defaultStmt2 = ASTUtils.newAST(AS3Parser.DEFAULT, "default"); switchStmt.addChildWithTokens(defaultStmt2); assertNull(((LinkedListToken)defaultStmt2.token).getNext()); LinkedListTree semi = ASTUtils.newAST(AS3Parser.SEMI, ";"); ASTUtils.addChildWithIndentation(stmtList, semi); assertEquals(semi.token, defaultStmt1.getStopToken()); assertEquals(defaultStmt2.getStartToken(), ((LinkedListToken)semi.token).getNext()); // SEMI should have been inserted somewhere mid-token-stream assertNotNull(((LinkedListToken)semi.token).getNext()); } }