JexlNumericFunctions implements ExpressionContextVisitor { public String subtract(Object... values) { double result = FunctionHandler.getDouble(values[0]); for (int i = 1; i < values.length; i++) { result -= FunctionHandler.getDouble(values[i]); } return Double.toString(result); }  @Override void visit(JexlContext context); String mod(Object num, Object mod); String add(Object... values); String subtract(Object... values); String random(Object omin, Object omax); String random(Object omax); String randomPositiveWhole(Object olength); String randomNegativeWhole(Object olength); String randomPositiveFloat(Object owhole, Object odecimal); String randomNegativeFloat(Object owhole, Object odecimal); String toInt(String num);  }
@Test @Tag(TestGroups.FUNCTIONAL) public void testSubtract() { String result = variables.evaluate("#{numericFunctions.subtract(9, 3)}"); assertNotNull(result); assertEquals("6.0", result); result = variables.evaluate("#{numericFunctions.subtract(two_int, three_float)}"); assertNotNull(result); assertEquals("-1.0", result); }