package test.prefuse.data.expression; import junit.framework.TestCase; import prefuse.data.expression.AndPredicate; import prefuse.data.expression.ArithmeticExpression; import prefuse.data.expression.ColumnExpression; import prefuse.data.expression.ComparisonPredicate; import prefuse.data.expression.Expression; import prefuse.data.expression.FunctionExpression; import prefuse.data.expression.IfExpression; import prefuse.data.expression.ObjectLiteral; import prefuse.data.expression.parser.ExpressionParser; import prefuse.data.expression.parser.ParseException; import prefuse.data.expression.parser.TokenMgrError; public class ExpressionTest extends TestCase { private static String[] expr = { "District <= 0", "IF x < 0 THEN x^2 ELSE x%0", "ABS(3+5*EXP(3)/SIN(5)*SIGN(32.3f)-ROUND(23.2e-1))", "x && y", "x & y", "if x<0 else x^2 then x%0", "((3+6)*(4+1))", "2*3%6", "2+3%6", "2*3^6", "2 + 3 3 + 4", "[One Long Column]", "An Invalid Column", "\"Double Quoted String\"", "'A tab\\t andd\\b a newline \\n'" }; private static Class[] type = { ComparisonPredicate.class, IfExpression.class, FunctionExpression.class, AndPredicate.class, null, null, ArithmeticExpression.class, ArithmeticExpression.class, ArithmeticExpression.class, ArithmeticExpression.class, null, ColumnExpression.class, null, ObjectLiteral.class, ObjectLiteral.class }; public void testExpressionParser() { for ( int i=0; i<expr.length; ++i ) { try { Expression e = ExpressionParser.parse(expr[i], true); assertEquals(true, type[i]!=null); assertEquals(true, type[i].isAssignableFrom(e.getClass())); } catch ( TokenMgrError tme ) { System.out.println(tme); assertEquals(null, type[i]); } catch ( ParseException pe ) { System.out.println(pe); assertEquals(null, type[i]); } } } }