@Test public void testSimpleScriptTyped() { Class returnType = Long.class; String[] names = new String[]{"a", "b"}; Class[] types = new Class[]{long.class, int.class}; assertEquals( 3l, evaluate( "return a + b;", returnType, getEntry( names, types, 1L, 2 ) ) ); returnType = Double.class; types = new Class[]{double.class, int.class}; assertEquals( 3d, evaluate( "return a + b;", returnType, getEntry( names, types, 1.0d, 2 ) ) ); returnType = Boolean.TYPE; names = new String[]{"a", "b"}; types = new Class[]{String.class, float.class}; assertEquals( true, evaluate( "return (a != null) && (b > 0);", returnType, getEntry( names, types, "1", 2.0 ) ) ); names = new String[]{"$0", "$1"}; types = new Class[]{String.class, float.class}; assertEquals( true, evaluate( "return ($0 != null) && ($1 > 0);", returnType, getEntry( names, types, "1", 2.0 ) ) ); names = new String[]{"a", "b", "c"}; types = new Class[]{float.class, String.class, String.class}; assertEquals( true, evaluate( "return b.equals(\"1\") && (a == 2.0) && c.equals(\"2\");", returnType, getEntry( names, types, 2.0, "1", "2" ) ) ); names = new String[]{"a", "b", "$2"}; types = new Class[]{float.class, String.class, String.class}; assertEquals( true, evaluate( "return b.equals(\"1\") && (a == 2.0) && $2.equals(\"2\");", returnType, getEntry( names, types, 2.0, "1", "2" ) ) ); String script = ""; script += "boolean first = b.equals(\"1\");\n"; script += "return first && (a == 2.0) && $2.equals(\"2\");\n"; assertEquals( true, evaluate( script, returnType, getEntry( names, types, 2.0, "1", "2" ) ) ); }
@Test public void testSimpleScriptTyped() { Class returnType = Long.class; String[] names = new String[]{"a", "b"}; Class[] types = new Class[]{long.class, int.class}; assertEquals( 3l, evaluate( "return a + b;", returnType, getEntry( names, types, 1L, 2 ) ) ); returnType = Double.class; types = new Class[]{double.class, int.class}; assertEquals( 3d, evaluate( "return a + b;", returnType, getEntry( names, types, 1.0d, 2 ) ) ); returnType = Boolean.TYPE; names = new String[]{"a", "b"}; types = new Class[]{String.class, float.class}; assertEquals( true, evaluate( "return (a != null) && (b > 0);", returnType, getEntry( names, types, "1", 2.0 ) ) ); names = new String[]{"$0", "$1"}; types = new Class[]{String.class, float.class}; assertEquals( true, evaluate( "return ($0 != null) && ($1 > 0);", returnType, getEntry( names, types, "1", 2.0 ) ) ); names = new String[]{"a", "b", "c"}; types = new Class[]{float.class, String.class, String.class}; assertEquals( true, evaluate( "return b.equals(\"1\") && (a == 2.0) && c.equals(\"2\");", returnType, getEntry( names, types, 2.0, "1", "2" ) ) ); names = new String[]{"a", "b", "$2"}; types = new Class[]{float.class, String.class, String.class}; assertEquals( true, evaluate( "return b.equals(\"1\") && (a == 2.0) && $2.equals(\"2\");", returnType, getEntry( names, types, 2.0, "1", "2" ) ) ); String script = ""; script += "boolean first = b.equals(\"1\");\n"; script += "return first && (a == 2.0) && $2.equals(\"2\");\n"; assertEquals( true, evaluate( script, returnType, getEntry( names, types, 2.0, "1", "2" ) ) ); }
Class[] types = new Class[]{long.class, int.class}; assertEquals( 3l, evaluate( "return a + b;", returnType, names, types, getEntry( 1, 2 ) ) ); assertEquals( 3l, evaluate( "return a + b;", returnType, names, types, getEntry( 1.0, 2.0 ) ) ); assertEquals( 3l, evaluate( "return a + b;", returnType, names, types, getEntry( "1", 2.0 ) ) ); assertEquals( 3d, evaluate( "return a + b;", returnType, names, types, getEntry( 1, 2 ) ) ); assertEquals( 3d, evaluate( "return a + b;", returnType, names, types, getEntry( 1.0, 2.0 ) ) ); assertEquals( 3d, evaluate( "return a + b;", returnType, names, types, getEntry( "1", 2.0 ) ) ); assertEquals( true, evaluate( "return (a != null) && (b > 0);", returnType, names, types, getEntry( "1", 2.0 ) ) ); assertEquals( true, evaluate( "return ($0 != null) && ($1 > 0);", returnType, names, types, getEntry( "1", 2.0 ) ) ); assertEquals( true, evaluate( "return b.equals(\"1\") && (a == 2.0) && c.equals(\"2\");", returnType, names, types, getEntry( 2.0, "1", "2" ) ) ); assertEquals( true, evaluate( "return b.equals(\"1\") && (a == 2.0) && $2.equals(\"2\");", returnType, names, types, getEntry( 2.0, "1", "2" ) ) ); assertEquals( true, evaluate( script, returnType, names, types, getEntry( 2.0, "1", "2" ) ) );
Class[] types = new Class[]{long.class, int.class}; assertEquals( 3l, evaluate( "return a + b;", returnType, names, types, getEntry( 1, 2 ) ) ); assertEquals( 3l, evaluate( "return a + b;", returnType, names, types, getEntry( 1.0, 2.0 ) ) ); assertEquals( 3l, evaluate( "return a + b;", returnType, names, types, getEntry( "1", 2.0 ) ) ); assertEquals( 3d, evaluate( "return a + b;", returnType, names, types, getEntry( 1, 2 ) ) ); assertEquals( 3d, evaluate( "return a + b;", returnType, names, types, getEntry( 1.0, 2.0 ) ) ); assertEquals( 3d, evaluate( "return a + b;", returnType, names, types, getEntry( "1", 2.0 ) ) ); assertEquals( true, evaluate( "return (a != null) && (b > 0);", returnType, names, types, getEntry( "1", 2.0 ) ) ); assertEquals( true, evaluate( "return ($0 != null) && ($1 > 0);", returnType, names, types, getEntry( "1", 2.0 ) ) ); assertEquals( true, evaluate( "return b.equals(\"1\") && (a == 2.0) && c.equals(\"2\");", returnType, names, types, getEntry( 2.0, "1", "2" ) ) ); assertEquals( true, evaluate( "return b.equals(\"1\") && (a == 2.0) && $2.equals(\"2\");", returnType, names, types, getEntry( 2.0, "1", "2" ) ) ); assertEquals( true, evaluate( script, returnType, names, types, getEntry( 2.0, "1", "2" ) ) );