1   package uk.co.badgersinfoil.metaas;
2   
3   import java.io.StringWriter;
4   import uk.co.badgersinfoil.metaas.dom.ASBinaryExpression;
5   import uk.co.badgersinfoil.metaas.dom.Expression;
6   import uk.co.badgersinfoil.metaas.impl.AS3FragmentParser;
7   import uk.co.badgersinfoil.metaas.impl.ASTExpression;
8   import uk.co.badgersinfoil.metaas.impl.ASTPrinter;
9   import uk.co.badgersinfoil.metaas.impl.antlr.LinkedListTree;
10  import junit.framework.TestCase;
11  
12  public class OperatorPrecedenceTests extends TestCase {
13  	private Expression left;
14  	private Expression right;
15  	private ActionScriptFactory fact = new ActionScriptFactory();
16  	private ASBinaryExpression expr;
17  
18  	public void setUp() {
19  		right = fact.newIntegerLiteral(2);
20  		expr = null;
21  	}
22  
23  	public void tearDown() {
24  		StringWriter buff = new StringWriter();
25  		LinkedListTree ast = ((ASTExpression)expr).getAST();
26  		new ASTPrinter(buff).print(ast);
27  		LinkedListTree parsed = AS3FragmentParser.parseExpr(buff.toString());
28  		CodeMirror.assertASTMatch(ast, parsed);
29  	}
30  	
31  	public void testBasic() {
32  		left = fact.newAddExpression(fact.newIntegerLiteral(1), fact.newIntegerLiteral(1));
33  		// the resulting structure will not be correct unless the
34  		// left-hand expression is parenthesised.  metaas should add
35  		// parenthesis automatically, as required
36  		// i.e. (1 + 1) * 2
37  		expr = fact.newMultiplyExpression(left, right);
38  	}
39  }