/** evaluate or throw an exception */ // This post dates a lot of code that uses expr.eval directly. // Placeholder for now. private static NodeValue evalOrException(Expr expr, Binding binding, FunctionEnv functionEnv) { return expr.eval(binding, functionEnv) ; }
/** * Executes the function */ @Override public NodeValue exec(Binding binding, ExprList args, String uri, FunctionEnv env) { //Evaluate the actual expression return this.actualExpr.eval(binding, env); }
/** Special form evaluation (example, don't eval the arguments first) */ @Override protected NodeValue evalSpecial(Binding binding, FunctionEnv env) { NodeValue nv = condition.eval(binding, env) ; if ( condition.isSatisfied(binding, env) ) return thenExpr.eval(binding, env) ; else return elseExpr.eval(binding, env) ; }
@Override public NodeValue evalSpecial(Binding binding, FunctionEnv env) { for ( Expr expr : super.getArgs() ) { try { NodeValue nv = expr.eval(binding, env) ; return nv ; } catch (ExprEvalException ex) {} } throw new ExprEvalException("COALESCE: no value") ; }
@Override public void accumulate(Binding binding, FunctionEnv functionEnv) { ExprList exprList = agg.getExprList() ; for(Expr expr: exprList) { try { NodeValue nv = expr.eval(binding, functionEnv) ; // Evaluation succeeded. if ( nv.isLiteral()) count ++ ; } catch (ExprEvalException ex) {} } }
static NodeValue eval(String exprString) { Expr expr = ExprUtils.parse(exprString, pmap); NodeValue result = expr.eval(null, new FunctionEnvBase()); return result ; }
static void testError(String exprString) { Expr expr = ExprUtils.parse(exprString, pmap); expr.eval(null, new FunctionEnvBase()); } }
private void test(String exprStr, Predicate<NodeValue> test) { Expr expr = ExprUtils.parse(exprStr) ; NodeValue r = expr.eval(null, LibTestExpr.createTest()) ; assertTrue(exprStr, test.test(r)); }
private void test(String exprStr, NodeValue result) { Expr expr = ExprUtils.parse(exprStr) ; NodeValue r = expr.eval(null, LibTestExpr.createTest()) ; assertEquals(result, r) ; }
private void testEvalException(String exprStr) { Expr expr = ExprUtils.parse(exprStr) ; try { NodeValue r = expr.eval(null, LibTestExpr.createTest()) ; fail("No exception raised") ; } catch (ExprEvalException ex) {} } }
private static void testEval(String string) { Expr expr = parse(string) ; NodeValue v = expr.eval( BindingFactory.binding(), new FunctionEnvBase()) ; }
private static void testString(String string) { Expr expr = parse(string) ; NodeValue v = expr.eval( env, new FunctionEnvBase()) ; assertTrue(v.isString()) ; }
static void test(String exprString, Node result) { Expr expr = ExprUtils.parse(exprString, pmap); NodeValue actual = expr.eval(null, new FunctionEnvBase()); NodeValue expected = NodeValue.makeNode(result); assertTrue("Expected = " + expected + " : Actual = " + actual, NodeValue.sameAs(expected, actual)) ; }
private static void eval(String string, String bindingStr, boolean expected) { Binding binding = binding(bindingStr) ; Expr expr = ExprUtils.parse(string) ; NodeValue nv = expr.eval(binding, LibTestExpr.createTest()) ; boolean b = XSDFuncOp.booleanEffectiveValue(nv) ; assertEquals(string, expected, b) ; }
private static void evalExpr(String exprString, String bindingStr, boolean expected) { Binding binding = binding(bindingStr) ; Expr expr = SSE.parseExpr(exprString) ; NodeValue nv = expr.eval(binding, LibTestExpr.createTest()) ; boolean b = XSDFuncOp.booleanEffectiveValue(nv) ; assertEquals(exprString, expected, b) ; }
private static void testNumeric(String string, int i) { Expr expr = parse(string) ; NodeValue v = expr.eval( BindingFactory.binding() , new FunctionEnvBase()) ; assertTrue(v.isInteger()) ; assertEquals(i, v.getInteger().intValue()) ; }
private NodeValue cast(String input$) { Expr input = ExprUtils.parse(input$) ; ARQ.getContext().set(ARQConstants.sysCurrentTime, NodeFactoryExtra.nowAsDateTime()) ; FunctionEnv env = new ExecutionContext(ARQ.getContext(), null, null, null) ; return input.eval(null, env) ; } }
static void testDouble(String exprString, Node result, double delta) { Expr expr = ExprUtils.parse(exprString, pmap); NodeValue actual = expr.eval(null, new FunctionEnvBase()); NodeValue expected = NodeValue.makeNode(result); // Note that we don't test lexical form because we can get mismatches // between how things like doubles are expressed if (NodeValue.sameAs(expected, actual)) return; testDouble(exprString, expected.getDouble(), delta); ; }
private static void testNumeric(String string, BigInteger integer) { Expr expr = parse(string) ; NodeValue v = expr.eval( BindingFactory.binding() , new FunctionEnvBase()) ; assertTrue(v.isInteger()) ; assertEquals(integer, v.getInteger()) ; } private static void testNumeric(String string, double d)
private static void testNumeric(String string, double d) { Expr expr = parse(string) ; NodeValue v = expr.eval( BindingFactory.binding(), new FunctionEnvBase()) ; assertTrue(v.isDouble()) ; assertEquals(d, v.getDouble(),0) ; }