package uk.co.badgersinfoil.metaas;
import java.io.IOException;
import uk.co.badgersinfoil.metaas.dom.ASClassType;
import uk.co.badgersinfoil.metaas.dom.ASCompilationUnit;
import uk.co.badgersinfoil.metaas.dom.ASConditionalExpression;
import uk.co.badgersinfoil.metaas.dom.Expression;
import uk.co.badgersinfoil.metaas.dom.ASFieldAccessExpression;
import uk.co.badgersinfoil.metaas.dom.ASIntegerLiteral;
import uk.co.badgersinfoil.metaas.dom.ASMethod;
import uk.co.badgersinfoil.metaas.dom.Visibility;
import junit.framework.TestCase;
public class ConditionalExpressionTests extends TestCase {
private ASConditionalExpression conditionalExpr = null;
private ActionScriptFactory fact = new ActionScriptFactory();
private ASCompilationUnit unit;
private ASCompilationUnit reflect;
protected void setUp() {
unit = fact.newClass("Test");
reflect = null;
conditionalExpr = null;
}
protected void tearDown() throws IOException {
if (reflect == null) {
ASClassType clazz = (ASClassType)unit.getType();
ASMethod meth = clazz.newMethod("test", Visibility.PUBLIC, null);
meth.newExprStmt(conditionalExpr);
reflect = assertReflection();
}
}
private ASCompilationUnit assertReflection() throws IOException {
return CodeMirror.assertReflection(fact, unit);
}
public void testBasic() {
Expression conditionExpr = fact.newExpression("a.b");
Expression thenExpr = fact.newExpression("1");
Expression elseExpr = fact.newExpression("2");
conditionalExpr = fact.newConditionalExpression(conditionExpr, thenExpr, elseExpr);
ExtraAssertions.assertInstanceof(conditionalExpr.getConditionExpression(), ASFieldAccessExpression.class);
ExtraAssertions.assertInstanceof(conditionalExpr.getThenExpression(), ASIntegerLiteral.class);
ExtraAssertions.assertInstanceof(conditionalExpr.getElseExpression(), ASIntegerLiteral.class);
}
public void testParse() {
conditionalExpr = (ASConditionalExpression)fact.newExpression("a.b ? 1 : 2");
ExtraAssertions.assertInstanceof(conditionalExpr.getConditionExpression(), ASFieldAccessExpression.class);
ExtraAssertions.assertInstanceof(conditionalExpr.getThenExpression(), ASIntegerLiteral.class);
ExtraAssertions.assertInstanceof(conditionalExpr.getElseExpression(), ASIntegerLiteral.class);
}
public void testSetters() {
Expression conditionExpr = fact.newExpression("a.b");
Expression thenExpr = fact.newExpression("1");
Expression elseExpr = fact.newExpression("2");
conditionalExpr = fact.newConditionalExpression(conditionExpr, thenExpr, elseExpr);
conditionalExpr.setConditionExpression(fact.newBooleanLiteral(true));
conditionalExpr.setThenExpression(fact.newIntegerLiteral(3));
conditionalExpr.setElseExpression(fact.newIntegerLiteral(4));
}
}