package uk.co.badgersinfoil.metaas; import uk.co.badgersinfoil.metaas.dom.Expression; import uk.co.badgersinfoil.metaas.dom.ASPostfixExpression; import uk.co.badgersinfoil.metaas.impl.ASTExpression; import uk.co.badgersinfoil.metaas.impl.ASTUtils; import uk.co.badgersinfoil.metaas.impl.antlr.LinkedListTree; import junit.framework.TestCase; public class PostfixExpressionTests extends TestCase { private ActionScriptFactory fact = new ActionScriptFactory(); private Expression sub; private ASPostfixExpression expr; protected void setUp() { sub = fact.newExpression("i"); } protected void tearDown() { if (expr != null) { assertEquals(sub, expr.getSubexpression()); } } public void testSetOp() { expr = fact.newPostDecExpression(sub); assertOp(ASPostfixExpression.Op.POSTDEC); expr.setOperator(ASPostfixExpression.Op.POSTINC); assertOp(ASPostfixExpression.Op.POSTINC); } public void testPostDec() { expr = fact.newPostDecExpression(sub); assertOp(ASPostfixExpression.Op.POSTDEC); } public void testPostInc() { expr = fact.newPostIncExpression(sub); assertOp(ASPostfixExpression.Op.POSTINC); } public void testSetSubexpression() { expr = fact.newPostIncExpression(sub); sub = fact.newExpression("j"); expr.setSubexpression(sub); } private void assertOp(ASPostfixExpression.Op expected) { LinkedListTree ast = ((ASTExpression)expr).getAST(); Expression expr = fact.newExpression(ASTUtils.stringifyNode(ast)); assertEquals(expected, ((ASPostfixExpression)expr).getOperator()); } public void testOpString() throws IllegalArgumentException, IllegalAccessException { EnumAssert.assertValidEnumConstants(ASPostfixExpression.Op.class); } }