package uk.co.badgersinfoil.metaas;
import uk.co.badgersinfoil.metaas.dom.Expression;
import uk.co.badgersinfoil.metaas.dom.ASPrefixExpression;
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 PrefixExpressionTests extends TestCase {
private ActionScriptFactory fact = new ActionScriptFactory();
private Expression sub;
private ASPrefixExpression expr;
protected void setUp() {
sub = fact.newExpression("i");
}
protected void tearDown() {
if (expr != null) {
assertNotNull(expr.getSubexpression());
}
}
public void testSetOp() {
expr = fact.newPreDecExpression(sub);
assertOp(ASPrefixExpression.Op.PREDEC);
expr.setOperator(ASPrefixExpression.Op.PREINC);
assertOp(ASPrefixExpression.Op.PREINC);
}
public void testPreDec() {
expr = fact.newPreDecExpression(sub);
assertOp(ASPrefixExpression.Op.PREDEC);
}
public void testPreInc() {
expr = fact.newPreIncExpression(sub);
assertOp(ASPrefixExpression.Op.PREINC);
}
public void testPositive() {
expr = fact.newPositiveExpression(sub);
assertOp(ASPrefixExpression.Op.POS);
}
public void testNegative() {
expr = fact.newNegativeExpression(sub);
assertOp(ASPrefixExpression.Op.NEG);
}
public void testNot() {
expr = fact.newNotExpression(sub);
assertOp(ASPrefixExpression.Op.NOT);
}
public void testSetSubexpression() {
expr = fact.newPreIncExpression(sub);
sub = fact.newExpression("j");
expr.setSubexpression(sub);
}
private void assertOp(ASPrefixExpression.Op expected) {
LinkedListTree ast = ((ASTExpression)expr).getAST();
Expression expr = fact.newExpression(ASTUtils.stringifyNode(ast));
assertEquals(expected, ((ASPrefixExpression)expr).getOperator());
}
public void testOpString() throws IllegalArgumentException, IllegalAccessException {
EnumAssert.assertValidEnumConstants(ASPrefixExpression.Op.class);
}
}