package uk.co.badgersinfoil.metaas; import java.io.StringWriter; import uk.co.badgersinfoil.metaas.dom.ASBinaryExpression; 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 TokenBoundryTests extends TestCase { private ActionScriptFactory fact = new ActionScriptFactory(); private ASBinaryExpression expr; 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); } } // TODO: expression list // //TODO: public void testAssignment() { // expr = (ASBinaryExpression)fact.newExpression("a = b = c"); // ASExpression left = fact.newExpression("foo"); // expr.setLeftSubexpression(left); // } // TODO: conditional expression public void testLogicalOr() { expr = (ASBinaryExpression)fact.newExpression("a || b || c"); Expression left = fact.newExpression("foo"); expr.setLeftSubexpression(left); } public void testLogicalAnd() { expr = (ASBinaryExpression)fact.newExpression("a && b && c"); Expression left = fact.newExpression("foo"); expr.setLeftSubexpression(left); } public void testBitOr() { expr = (ASBinaryExpression)fact.newExpression("a | b | c"); Expression left = fact.newExpression("foo"); expr.setLeftSubexpression(left); } public void testXor() { expr = (ASBinaryExpression)fact.newExpression("a ^ b ^ c"); Expression left = fact.newExpression("foo"); expr.setLeftSubexpression(left); } public void testBitAnd() { expr = (ASBinaryExpression)fact.newExpression("a & b & c"); Expression left = fact.newExpression("foo"); expr.setLeftSubexpression(left); } public void testEquality() { expr = (ASBinaryExpression)fact.newExpression("a == b == c"); Expression left = fact.newExpression("foo"); expr.setLeftSubexpression(left); } public void testRelational() { // not strictly possible (I wonder if the grammar should forbid?) expr = (ASBinaryExpression)fact.newExpression("a < b < c"); Expression left = fact.newExpression("foo"); expr.setLeftSubexpression(left); } public void testShift() { expr = (ASBinaryExpression)fact.newExpression("a << b << c"); Expression left = fact.newExpression("foo"); expr.setLeftSubexpression(left); } public void testAdditive() { expr = (ASBinaryExpression)fact.newExpression("1 + 2 + 2"); Expression left = fact.newIntegerLiteral(1); expr.setLeftSubexpression(left); } public void testMultiplicative() { expr = (ASBinaryExpression)fact.newExpression("1 * 2 * 2"); Expression left = fact.newIntegerLiteral(1); expr.setLeftSubexpression(left); } }