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 OperatorPrecedenceTests extends TestCase {
private Expression left;
private Expression right;
private ActionScriptFactory fact = new ActionScriptFactory();
private ASBinaryExpression expr;
public void setUp() {
right = fact.newIntegerLiteral(2);
expr = null;
}
public void tearDown() {
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() {
left = fact.newAddExpression(fact.newIntegerLiteral(1), fact.newIntegerLiteral(1));
// the resulting structure will not be correct unless the
// left-hand expression is parenthesised. metaas should add
// parenthesis automatically, as required
// i.e. (1 + 1) * 2
expr = fact.newMultiplyExpression(left, right);
}
}