### Question:
JS extends RapidoidThing { public static <T> T eval(String js) throws ScriptException { return eval(js, null); }  static boolean compiles(String js); static T eval(String js); @SuppressWarnings("unchecked") static T eval(String js, Map<String, ?> bindings); static CompiledScript compile(String js);  }### Answer:
@Test public void testEvalJS() throws ScriptException { eq(((Number) JS.eval("1 + 2")).intValue(), 3); eq(JS.eval("1 + 'ab'"), "1ab"); eq(JS.eval("(function (x) { return x.toUpperCase(); })('abc')"), "ABC"); eq(JS.eval("x + y + y.length", U.map("x", "10", "y", "abcd")), "10abcd4"); }