private void test(String exp) throws ScriptException {
   Expression el = factory.create(exp);
   Object jsv = se.eval(exp);
   Object elv = el.evaluate();
   // System.out.println(exp +":"+jsv);
   // System.out.println(":"+elv);
   // System.out.println(jsv.getClass());
   assertEquals(jsv, elv);
 }
  private void testLike(String exp, double max) throws ScriptException {
    Expression el = factory.create(exp);
    Number jsv = (Number) se.eval(exp);
    Number elv = (Number) el.evaluate();

    if (Double.isNaN(jsv.doubleValue()) != Double.isNaN(elv.doubleValue())) {
      Assert.fail("误差太大:" + exp + "\n" + jsv + "\n" + elv);
    }
    max *= Math.max(jsv.doubleValue(), elv.doubleValue());
    double offset = Math.abs(jsv.doubleValue() - elv.doubleValue());
    if (offset > max) {
      Assert.fail("误差太大了:" + exp + "\n" + jsv + "\n" + elv);
    }
  }