package uk.co.badgersinfoil.metaas; import java.io.StringWriter; import uk.co.badgersinfoil.metaas.dom.ASArrayAccessExpression; import uk.co.badgersinfoil.metaas.dom.Expression; import uk.co.badgersinfoil.metaas.impl.AS3FragmentParser; import uk.co.badgersinfoil.metaas.impl.ASTExpression; import uk.co.badgersinfoil.metaas.impl.ASTPrinter; import uk.co.badgersinfoil.metaas.impl.antlr.LinkedListTree; import junit.framework.TestCase; public class ArrayAccessExpressionTests extends TestCase { private ActionScriptFactory fact = new ActionScriptFactory(); private ASArrayAccessExpression expr; protected Expression subscript; protected Expression target; public void setUp() { expr = null; } public void tearDown() { if (expr != null) { StringWriter buff = new StringWriter(); LinkedListTree ast = ((ASTExpression)expr).getAST(); new ASTPrinter(buff).print(ast); LinkedListTree parsed = AS3FragmentParser.parseExpr(buff.toString()); CodeMirror.assertASTMatch(ast, parsed); } } public void testBasic() { target = fact.newExpression("foo"); subscript = fact.newIntegerLiteral(1); expr = fact.newArrayAccessExpression(target, subscript); assertEquals(target, expr.getTargetExpression()); assertEquals(subscript,expr.getSubscriptExpression()); } public void testParse() { expr = (ASArrayAccessExpression)fact.newExpression("foo[1]"); target = fact.newExpression("foo"); subscript = fact.newExpression("1"); } public void testTokenBoundries() { expr = (ASArrayAccessExpression)fact.newExpression("a[b][c]"); Expression target = fact.newExpression("foo"); expr.setTargetExpression(target); } public void testSubscript() { expr = (ASArrayAccessExpression)fact.newExpression("foo[1]"); target = fact.newExpression("foo"); subscript = fact.newStringLiteral("bar"); expr.setSubscriptExpression(subscript); } }