assertEquals( true, invokeFilter( new ExpressionFilter( "a < b", int.class ), getEntry( 1, 2 ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "a < b", int.class ), getEntry( 1.0, 2.0 ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "a < b", int.class ), getEntry( "1", 2.0 ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "a < b", names, types ), getEntry( 1, 2 ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "a < b", names, types ), getEntry( 1.0, 2.0 ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "a < b", names, types ), getEntry( "1", 2.0 ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "a < b", names, types ), getEntry( 1, 2 ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "a < b", names, types ), getEntry( 1.0, 2.0 ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "a < b", names, types ), getEntry( "1", 2.0 ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "a < b" ), getEntry( arguments, 1, 2 ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "a < b" ), getEntry( arguments, 1.0, 2.0 ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "a < b" ), getEntry( arguments, "1", 2.0 ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "$0 < $1", int.class ), getEntry( 1, 2 ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "$0 < $1", int.class ), getEntry( 1.0, 2.0 ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "$0 < $1", int.class ), getEntry( "1", 2.0 ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "(a != null) && (b > 0)", names, types ), getEntry( "1", 2.0 ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "($0 != null) && ($1 > 0)", names, types ), getEntry( "1", 2.0 ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "b.equals(\"1\") && (a == 2.0) && c.equals(\"2\")", names, types ), getEntry( 2.0, "1", "2" ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "b.equals(\"1\") && (a == 2.0) && $2.equals(\"2\")", names, types ), getEntry( 2.0, "1", "2" ) ) );
assertEquals( true, invokeFilter( new ExpressionFilter( "a < b", int.class ), getEntry( 1, 2 ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "a < b", int.class ), getEntry( 1.0, 2.0 ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "a < b", int.class ), getEntry( "1", 2.0 ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "a < b", names, types ), getEntry( 1, 2 ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "a < b", names, types ), getEntry( 1.0, 2.0 ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "a < b", names, types ), getEntry( "1", 2.0 ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "a < b", names, types ), getEntry( 1, 2 ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "a < b", names, types ), getEntry( 1.0, 2.0 ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "a < b", names, types ), getEntry( "1", 2.0 ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "a < b" ), getEntry( arguments, 1, 2 ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "a < b" ), getEntry( arguments, 1.0, 2.0 ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "a < b" ), getEntry( arguments, "1", 2.0 ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "$0 < $1", int.class ), getEntry( 1, 2 ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "$0 < $1", int.class ), getEntry( 1.0, 2.0 ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "$0 < $1", int.class ), getEntry( "1", 2.0 ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "(a != null) && (b > 0)", names, types ), getEntry( "1", 2.0 ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "($0 != null) && ($1 > 0)", names, types ), getEntry( "1", 2.0 ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "b.equals(\"1\") && (a == 2.0) && c.equals(\"2\")", names, types ), getEntry( 2.0, "1", "2" ) ) ); assertEquals( true, invokeFilter( new ExpressionFilter( "b.equals(\"1\") && (a == 2.0) && $2.equals(\"2\")", names, types ), getEntry( 2.0, "1", "2" ) ) );
assertEquals( 3, evaluate( new ExpressionFunction( new Fields( "result" ), "a + b", int.class ), getEntry( 1, 2 ) ) ); assertEquals( 3, evaluate( new ExpressionFunction( new Fields( "result" ), "a + b", int.class ), getEntry( 1.0, 2.0 ) ) ); assertEquals( 3, evaluate( new ExpressionFunction( new Fields( "result" ), "a + b", int.class ), getEntry( "1", 2.0 ) ) ); assertEquals( 3l, evaluate( new ExpressionFunction( new Fields( "result" ), "a + b", names, types ), getEntry( 1, 2 ) ) ); assertEquals( 3l, evaluate( new ExpressionFunction( new Fields( "result" ), "a + b", names, types ), getEntry( 1.0, 2.0 ) ) ); assertEquals( 3l, evaluate( new ExpressionFunction( new Fields( "result" ), "a + b", names, types ), getEntry( "1", 2.0 ) ) ); assertEquals( 3d, evaluate( new ExpressionFunction( new Fields( "result" ), "a + b", names, types ), getEntry( 1, 2 ) ) ); assertEquals( 3d, evaluate( new ExpressionFunction( new Fields( "result" ), "a + b", names, types ), getEntry( 1.0, 2.0 ) ) ); assertEquals( 3d, evaluate( new ExpressionFunction( new Fields( "result" ), "a + b", names, types ), getEntry( "1", 2.0 ) ) ); assertEquals( 3d, evaluate( new ExpressionFunction( new Fields( "result" ), "a + b" ), getEntry( arguments, 1, 2 ) ) ); assertEquals( 3d, evaluate( new ExpressionFunction( new Fields( "result" ), "a + b" ), getEntry( arguments, 1.0, 2.0 ) ) ); assertEquals( 3d, evaluate( new ExpressionFunction( new Fields( "result" ), "a + b" ), getEntry( arguments, "1", 2.0 ) ) ); assertEquals( 3, evaluate( new ExpressionFunction( new Fields( "result" ), "$0 + $1", int.class ), getEntry( 1, 2 ) ) ); assertEquals( 3, evaluate( new ExpressionFunction( new Fields( "result" ), "$0 + $1", int.class ), getEntry( 1.0, 2.0 ) ) ); assertEquals( 3, evaluate( new ExpressionFunction( new Fields( "result" ), "$0 + $1", int.class ), getEntry( "1", 2.0 ) ) ); assertEquals( true, evaluate( new ExpressionFunction( new Fields( "result" ), "(a != null) && (b > 0)", names, types ), getEntry( "1", 2.0 ) ) ); assertEquals( true, evaluate( new ExpressionFunction( new Fields( "result" ), "($0 != null) && ($1 > 0)", names, types ), getEntry( "1", 2.0 ) ) ); assertEquals( true, evaluate( new ExpressionFunction( new Fields( "result" ), "b.equals(\"1\") && (a == 2.0) && c.equals(\"2\")", names, types ), getEntry( 2.0, "1", "2" ) ) ); assertEquals( true, evaluate( new ExpressionFunction( new Fields( "result" ), "b.equals(\"1\") && (a == 2.0) && $2.equals(\"2\")", names, types ), getEntry( 2.0, "1", "2" ) ) );
assertEquals( 3, evaluate( new ExpressionFunction( new Fields( "result" ), "a + b", int.class ), getEntry( 1, 2 ) ) ); assertEquals( 3, evaluate( new ExpressionFunction( new Fields( "result" ), "a + b", int.class ), getEntry( 1.0, 2.0 ) ) ); assertEquals( 3, evaluate( new ExpressionFunction( new Fields( "result" ), "a + b", int.class ), getEntry( "1", 2.0 ) ) ); assertEquals( 3l, evaluate( new ExpressionFunction( new Fields( "result" ), "a + b", names, types ), getEntry( 1, 2 ) ) ); assertEquals( 3l, evaluate( new ExpressionFunction( new Fields( "result" ), "a + b", names, types ), getEntry( 1.0, 2.0 ) ) ); assertEquals( 3l, evaluate( new ExpressionFunction( new Fields( "result" ), "a + b", names, types ), getEntry( "1", 2.0 ) ) ); assertEquals( 3d, evaluate( new ExpressionFunction( new Fields( "result" ), "a + b", names, types ), getEntry( 1, 2 ) ) ); assertEquals( 3d, evaluate( new ExpressionFunction( new Fields( "result" ), "a + b", names, types ), getEntry( 1.0, 2.0 ) ) ); assertEquals( 3d, evaluate( new ExpressionFunction( new Fields( "result" ), "a + b", names, types ), getEntry( "1", 2.0 ) ) ); assertEquals( 3d, evaluate( new ExpressionFunction( new Fields( "result" ), "a + b" ), getEntry( arguments, 1, 2 ) ) ); assertEquals( 3d, evaluate( new ExpressionFunction( new Fields( "result" ), "a + b" ), getEntry( arguments, 1.0, 2.0 ) ) ); assertEquals( 3d, evaluate( new ExpressionFunction( new Fields( "result" ), "a + b" ), getEntry( arguments, "1", 2.0 ) ) ); assertEquals( 3, evaluate( new ExpressionFunction( new Fields( "result" ), "$0 + $1", int.class ), getEntry( 1, 2 ) ) ); assertEquals( 3, evaluate( new ExpressionFunction( new Fields( "result" ), "$0 + $1", int.class ), getEntry( 1.0, 2.0 ) ) ); assertEquals( 3, evaluate( new ExpressionFunction( new Fields( "result" ), "$0 + $1", int.class ), getEntry( "1", 2.0 ) ) ); assertEquals( true, evaluate( new ExpressionFunction( new Fields( "result" ), "(a != null) && (b > 0)", names, types ), getEntry( "1", 2.0 ) ) ); assertEquals( true, evaluate( new ExpressionFunction( new Fields( "result" ), "($0 != null) && ($1 > 0)", names, types ), getEntry( "1", 2.0 ) ) ); assertEquals( true, evaluate( new ExpressionFunction( new Fields( "result" ), "b.equals(\"1\") && (a == 2.0) && c.equals(\"2\")", names, types ), getEntry( 2.0, "1", "2" ) ) ); assertEquals( true, evaluate( new ExpressionFunction( new Fields( "result" ), "b.equals(\"1\") && (a == 2.0) && $2.equals(\"2\")", names, types ), getEntry( 2.0, "1", "2" ) ) );
@Test public void testNoParamExpression() { Fields fields = new Fields( "a", "b" ).applyTypes( String.class, double.class ); String expression = "(int) (Math.random() * Integer.MAX_VALUE)"; Number integer = (Number) evaluate( new ExpressionFunction( new Fields( "result" ), expression ), getEntry( fields, "1", 2.0 ) ); assertNotNull( integer ); // Fields.NONE as argument selector integer = (Number) evaluate( new ExpressionFunction( new Fields( "result" ), expression ), TupleEntry.NULL ); assertNotNull( integer ); try { evaluate( new ExpressionFunction( new Fields( "result" ), "(int) (Math.random() * Integer.MAX_VALUE) + parameter" ), getEntry( fields, "1", 2.0 ) ); fail( "should throw exception" ); } catch( Exception exception ) { // ignore } }
@Test public void testNoParamExpression() { Fields fields = new Fields( "a", "b" ).applyTypes( String.class, double.class ); String expression = "(int) (Math.random() * Integer.MAX_VALUE)"; Number integer = (Number) evaluate( new ExpressionFunction( new Fields( "result" ), expression ), getEntry( fields, "1", 2.0 ) ); assertNotNull( integer ); // Fields.NONE as argument selector integer = (Number) evaluate( new ExpressionFunction( new Fields( "result" ), expression ), TupleEntry.NULL ); assertNotNull( integer ); try { evaluate( new ExpressionFunction( new Fields( "result" ), "(int) (Math.random() * Integer.MAX_VALUE) + parameter" ), getEntry( fields, "1", 2.0 ) ); fail( "should throw exception" ); } catch( Exception exception ) { // ignore } }