package uk.co.badgersinfoil.metaas; import uk.co.badgersinfoil.metaas.dom.ASAssignmentExpression; import uk.co.badgersinfoil.metaas.dom.Expression; 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 AssignmentExpressionTests extends TestCase { private Expression left; private Expression right; private ActionScriptFactory fact = new ActionScriptFactory(); private ASAssignmentExpression expr; public void setUp() { left = fact.newExpression("a"); right = fact.newIntegerLiteral(2); expr = null; } public void tearDown() { if (expr != null) { assertEquals(left, expr.getLeftSubexpression()); assertEquals(right, expr.getRightSubexpression()); } } public void testAssign() { expr = fact.newAssignExpression(left, right); assertOp(ASAssignmentExpression.Op.ASSIGN); } public void testAdd() { expr = fact.newAddAssignExpression(left, right); assertOp(ASAssignmentExpression.Op.ADD_ASSIGN); } public void testBitAnd() { expr = fact.newBitAndAssignExpression(left, right); assertOp(ASAssignmentExpression.Op.BITAND_ASSIGN); } public void testBitOr() { expr = fact.newBitOrAssignExpression(left, right); assertOp(ASAssignmentExpression.Op.BITOR_ASSIGN); } public void testBitXor() { expr = fact.newBitXorAssignExpression(left, right); assertOp(ASAssignmentExpression.Op.BITXOR_ASSIGN); } public void testDivision() { expr = fact.newDivideAssignExpression(left, right); assertOp(ASAssignmentExpression.Op.DIV_ASSIGN); } public void testModulo() { expr = fact.newModuloAssignExpression(left, right); assertOp(ASAssignmentExpression.Op.MOD_ASSIGN); } public void testMultiply() { expr = fact.newMultiplyAssignExpression(left, right); assertOp(ASAssignmentExpression.Op.MUL_ASSIGN); } public void testShiftLeft() { expr = fact.newShiftLeftAssignExpression(left, right); assertOp(ASAssignmentExpression.Op.SL_ASSIGN); } public void testShiftRight() { expr = fact.newShiftRightAssignExpression(left, right); assertOp(ASAssignmentExpression.Op.SR_ASSIGN); } public void testShiftRightUnsigned() { expr = fact.newShiftRightUnsignedAssignExpression(left, right); assertOp(ASAssignmentExpression.Op.SRU_ASSIGN); } public void testSubtract() { expr = fact.newSubtractAssignExpression(left, right); assertOp(ASAssignmentExpression.Op.SUB_ASSIGN); } private void assertOp(ASAssignmentExpression.Op expected) { LinkedListTree ast = ((ASTExpression)expr).getAST(); Expression expr = fact.newExpression(ASTUtils.stringifyNode(ast)); assertEquals(expected, ((ASAssignmentExpression)expr).getOperator()); } public void testOpString() throws IllegalArgumentException, IllegalAccessException { EnumAssert.assertValidEnumConstants(ASAssignmentExpression.Op.class); } public void testSetOp() { expr = fact.newAddAssignExpression(left, right); assertOp(ASAssignmentExpression.Op.ADD_ASSIGN); expr.setOperator(ASAssignmentExpression.Op.SUB_ASSIGN); assertOp(ASAssignmentExpression.Op.SUB_ASSIGN); } public void testSetLeft() { expr = fact.newAddAssignExpression(left, right); left = fact.newIntegerLiteral(24); expr.setLeftSubexpression(left); } public void testSetRight() { expr = fact.newAddAssignExpression(left, right); right = fact.newIntegerLiteral(24); expr.setRightSubexpression(right); } }