private static boolean filterEBV(NodeValue nv) { try { return XSDFuncOp.booleanEffectiveValue(nv); } catch (ExprEvalException ex) { return false; } }
/** {@literal F&O} fn:not */ public static NodeValue not(NodeValue nv) { boolean b = XSDFuncOp.booleanEffectiveValue(nv) ; return NodeValue.booleanReturn(!b) ; }
@Override public boolean isSatisfied(Binding binding, FunctionEnv funcEnv) { try { NodeValue v = eval(binding, funcEnv) ; boolean b = XSDFuncOp.booleanEffectiveValue(v) ; return b ; } catch (ExprEvalException ex) { return false ; } }
/** {@literal F&O} fn:boolean */ public static NodeValue booleanEffectiveValueAsNodeValue(NodeValue nv) { if ( nv.isBoolean() ) // "Optimization" (saves on object churn) return nv ; return NodeValue.booleanReturn(booleanEffectiveValue(nv)) ; }
NodeValue x = getArg1().eval(binding, env) ; if ( XSDFuncOp.booleanEffectiveValue(x) ) return NodeValue.TRUE ; } catch (ExprEvalException eee) NodeValue y = getArg2().eval(binding, env) ; if ( XSDFuncOp.booleanEffectiveValue(y) ) return NodeValue.TRUE ;
NodeValue x = getArg1().eval(binding, env) ; if ( ! XSDFuncOp.booleanEffectiveValue(x) ) return NodeValue.FALSE ; } catch (ExprEvalException eee) NodeValue y = getArg2().eval(binding, env) ; if ( ! XSDFuncOp.booleanEffectiveValue(y) ) return NodeValue.FALSE ;
@Test public void testEBV8() { Node x = NodeFactory.createLiteral("not empty", "en"); NodeValue v = NodeValue.makeNode(x); assertTrue("Not EBV true: " + v, XSDFuncOp.booleanEffectiveValue(v)); }
/*package*/ static void eval(String string, boolean result) { Expr expr = ExprUtils.parse(string) ; NodeValue nv = expr.eval(null, LibTestExpr.createTest()) ; boolean b = XSDFuncOp.booleanEffectiveValue(nv) ; assertEquals(string, result, b) ; } }
@Test public void testEBV7() { Node x = NodeFactory.createLiteral("", "en"); NodeValue v = NodeValue.makeNode(x); assertFalse("Not EBV false: " + v, XSDFuncOp.booleanEffectiveValue(v)); }
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) ; }
@Test public void testEBV3() { NodeValue v = NodeValue.makeInteger(1); assertFalse("It's a boolean: " + v, v.isBoolean()); assertTrue("Not EBV true: " + v, XSDFuncOp.booleanEffectiveValue(v)); }
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) ; }
@Test public void testEBV1() { assertTrue("Not a boolean", NodeValue.TRUE.isBoolean()); assertTrue("Not true", NodeValue.TRUE.getBoolean()); assertTrue("Not true", XSDFuncOp.booleanEffectiveValue(NodeValue.TRUE)); }
@Test public void testEBV2() { assertTrue("Not a boolean", NodeValue.FALSE.isBoolean()); assertFalse("Not false", NodeValue.FALSE.getBoolean()); assertFalse("Not false", XSDFuncOp.booleanEffectiveValue(NodeValue.FALSE)); }
@Test public void testNodeBool3() { NodeValue v = NodeValue.makeBoolean(true); assertTrue("Not a boolean: " + v, v.isBoolean()); // assertTrue("Not a node: "+v, v.hasNode()) ; assertTrue("Not true: " + v, v.getBoolean()); assertTrue("Not true: " + v, XSDFuncOp.booleanEffectiveValue(v)); }
@Test public void testNodeBool4() { NodeValue v = NodeValue.makeBoolean(false); assertTrue("Not a boolean: " + v, v.isBoolean()); // assertTrue("Not a node: "+v, v.hasNode()) ; assertFalse("Not false: " + v, v.getBoolean()); assertFalse("Not false: " + v, XSDFuncOp.booleanEffectiveValue(v)); }
@Test public void testEBV4() { NodeValue v = NodeValue.makeInteger(0); assertFalse("It's a boolean: " + v, v.isBoolean()); try { v.getBoolean(); fail("getBoolean should fail"); } catch (ExprEvalException e) {} assertFalse("Not EBV false: " + v, XSDFuncOp.booleanEffectiveValue(v)); }
@Test public void testEBV5() { NodeValue v = NodeValue.makeString("xyz"); assertFalse("It's a boolean: " + v, v.isBoolean()); // assertTrue("Not a node: "+v, v.hasNode()) ; try { v.getBoolean(); fail("getBoolean should fail"); } catch (ExprEvalException e) {} assertTrue("Not EBV true: " + v, XSDFuncOp.booleanEffectiveValue(v)); }
@Test public void testEBV6() { NodeValue v = NodeValue.makeString(""); assertFalse("It's a boolean: " + v, v.isBoolean()); try { v.getBoolean(); fail("getBoolean should fail"); } catch (ExprEvalException e) {} assertFalse("Not EBV false: " + v, XSDFuncOp.booleanEffectiveValue(v)); }