public FEELFnResult<BigDecimal> invoke(@ParameterName("n") Object[] list) { if ( list == null ) { // Arrays.asList does not accept null as parameter return FEELFnResult.ofError(new InvalidParametersEvent(Severity.ERROR, "n", "the single value list cannot be null")); } return invoke( Arrays.asList( list ) ); } }
@Test public void invokeNumberParamSupportedNumber() { FunctionTestUtil.assertResult(sumFunction.invoke(BigDecimal.TEN), BigDecimal.TEN); FunctionTestUtil.assertResult(sumFunction.invoke(10), BigDecimal.TEN); FunctionTestUtil.assertResult(sumFunction.invoke(-10), BigDecimal.valueOf(-10)); FunctionTestUtil.assertResult(sumFunction.invoke(10.12), BigDecimal.valueOf(10.12)); }
@Test public void invokeListParamSupportedTypes() { FunctionTestUtil.assertResult(sumFunction.invoke(Arrays.asList(4, -1, 12.1, (long) 5, BigDecimal.TEN)), BigDecimal.valueOf(30.1)); }
@Test public void invokeListParamContainsUnsupportedType() { FunctionTestUtil.assertResultError(sumFunction.invoke(Arrays.asList(10, "test", 2)), InvalidParametersEvent.class); }
@Test public void invokeArrayParamSupportedTypes() { FunctionTestUtil.assertResult(sumFunction.invoke(new Object[]{4, -1, 12.1, (long) 5, BigDecimal.TEN}), BigDecimal.valueOf(30.1)); } }
@Test public void invokeListParamContainsUnsupportedNumber() { FunctionTestUtil.assertResultError(sumFunction.invoke(Arrays.asList(10, 2, Double.NaN)), InvalidParametersEvent.class); }
@Test public void invokeNumberParamUnsupportedNumber() { FunctionTestUtil.assertResultError(sumFunction.invoke(Double.NaN), InvalidParametersEvent.class); }
public FEELFnResult<BigDecimal> invoke(@ParameterName( "list" ) List list) { if ( list == null ) { return FEELFnResult.ofError(new InvalidParametersEvent(Severity.ERROR, "list", "cannot be null")); } FEELFnResult<BigDecimal> s = sum.invoke( list ); Function<FEELEvent, FEELFnResult<BigDecimal>> ifLeft = (event) -> { return FEELFnResult.ofError(new InvalidParametersEvent(Severity.ERROR, "list", "unable to sum the elements which is required to calculate the mean")); }; Function<BigDecimal, FEELFnResult<BigDecimal>> ifRight = (sum) -> { try { return FEELFnResult.ofResult( sum.divide( BigDecimal.valueOf( list.size() ), MathContext.DECIMAL128 ) ); } catch (Exception e) { return FEELFnResult.ofError( new InvalidParametersEvent(Severity.ERROR, "unable to perform division to calculate the mean", e) ); } }; return s.cata(ifLeft, ifRight); }
@Test public void invokeArrayParam() { FunctionTestUtil.assertResultError(sumFunction.invoke((Object[]) null), InvalidParametersEvent.class); }
@Test public void invokeArrayParamContainsUnsupportedType() { FunctionTestUtil.assertResultError(sumFunction.invoke(new Object[]{10, "test", 2}), InvalidParametersEvent.class); }
@Test public void invokeNumberParamNull() { FunctionTestUtil.assertResultError(sumFunction.invoke((Number) null), InvalidParametersEvent.class); }
@Test public void invokeListParam() { FunctionTestUtil.assertResultError(sumFunction.invoke((List) null), InvalidParametersEvent.class); }
@Test public void invokeArrayParamContainsUnsupportedNumber() { FunctionTestUtil.assertResultError(sumFunction.invoke(new Object[]{10, 2, Double.NaN}), InvalidParametersEvent.class); }