@Test public void invokeListParamSupportedTypesWithNull() { FunctionTestUtil.assertResult(modeFunction.invoke(Arrays.asList(20, 30, null, (long) 20, null, BigDecimal.TEN)), Arrays.asList( BigDecimal.valueOf(20) )); FunctionTestUtil.assertResult(modeFunction.invoke(Arrays.asList(20, 30, null, (long) 20, 30, BigDecimal.TEN)), Arrays.asList( BigDecimal.valueOf(20), BigDecimal.valueOf(30) )); FunctionTestUtil.assertResult(modeFunction.invoke(Arrays.asList(null, null, null)), null); }
@Test public void invokeNegative() { FunctionTestUtil.assertResultBigDecimal(ceilingFunction.invoke(BigDecimal.valueOf(-10.2)), BigDecimal.valueOf(-10)); } }
@Test public void invokePositionOutOfListBounds() { FunctionTestUtil.assertResultError(removeFunction.invoke(Collections.singletonList(1), BigDecimal.valueOf(2)), InvalidParametersEvent.class); FunctionTestUtil.assertResultError(removeFunction.invoke(Collections.singletonList(1), BigDecimal.valueOf(154)), InvalidParametersEvent.class); FunctionTestUtil.assertResultError(removeFunction.invoke(Collections.singletonList(1), BigDecimal.valueOf(-2)), InvalidParametersEvent.class); FunctionTestUtil.assertResultError(removeFunction.invoke(Collections.singletonList(1), BigDecimal.valueOf(-154)), InvalidParametersEvent.class); }
@Test public void invokeParamStringPaddingYearsDate() { FunctionTestUtil.assertResult(dateFunction.invoke("0001-12-31"), LocalDate.of(1, 12, 31)); FunctionTestUtil.assertResult(dateFunction.invoke("0012-12-31"), LocalDate.of(12, 12, 31)); FunctionTestUtil.assertResult(dateFunction.invoke("0123-12-31"), LocalDate.of(123, 12, 31)); FunctionTestUtil.assertResult(dateFunction.invoke("1234-12-31"), LocalDate.of(1234, 12, 31)); FunctionTestUtil.assertResultError(dateFunction.invoke("01211-12-31"), InvalidParametersEvent.class); FunctionTestUtil.assertResultError(dateFunction.invoke("012117-12-31"), InvalidParametersEvent.class); FunctionTestUtil.assertResultError(dateFunction.invoke("001211-12-31"), InvalidParametersEvent.class); }
public static <T> void assertResult(final FEELFnResult<T> result, final T expectedResult) { if (expectedResult == null) { assertResultNull(result); } else { assertResultNotError(result); final T resultValue = result.cata(left -> null, right -> right); Assert.assertThat(resultValue, Matchers.notNullValue()); Assert.assertThat(resultValue, Matchers.equalTo(expectedResult)); } }
@Test public void invokeListTypeHeterogenous() { FunctionTestUtil.assertResultList( reverseFunction.invoke(Arrays.asList(1, "test", BigDecimal.TEN, Collections.emptyList())), Arrays.asList(Collections.emptyList(), BigDecimal.TEN, "test", 1)); FunctionTestUtil.assertResultList( reverseFunction.invoke(Arrays.asList(1, "test", BigDecimal.TEN, Arrays.asList(1, 2, 3))), Arrays.asList(Arrays.asList(1, 2, 3), BigDecimal.TEN, "test", 1)); } }
@Test public void invokeListParamReturnNull() { FunctionTestUtil.assertResultNull(allFunction.invoke(Arrays.asList(Boolean.TRUE, null, Boolean.TRUE))); }
public static <T> void assertResultNull(final FEELFnResult<T> result) { assertResultNotError(result); Assert.assertThat(result.cata(left -> false, right -> right), Matchers.nullValue()); }
public static <T> void assertResultError(final FEELFnResult<T> result, final Class expectedErrorEventClass) { Assert.assertThat(result, Matchers.notNullValue()); Assert.assertThat(result.isLeft(), Matchers.is(true)); final FEELEvent resultEvent = result.cata(left -> left, right -> null); checkErrorEvent(resultEvent, expectedErrorEventClass); }
@Test public void invokeAppendSomething() { FunctionTestUtil.assertResultList(appendFunction.invoke(Collections.emptyList(), new Object[]{"test"}), Arrays.asList("test")); FunctionTestUtil.assertResultList(appendFunction.invoke(Arrays.asList("test"), new Object[]{"test2"}), Arrays.asList("test", "test2")); FunctionTestUtil.assertResultList(appendFunction.invoke(Arrays.asList("test"), new Object[]{"test2", "test3"}), Arrays.asList("test", "test2", "test3")); } }
@Test public void invokeListParamReturnNull() { FunctionTestUtil.assertResultNull(anyFunction.invoke(Arrays.asList(Boolean.FALSE, null, Boolean.FALSE))); }
public static <T> void assertResultList(final FEELFnResult<List<T>> result, final List<Object> expectedResult) { assertResultNotError(result); final List<T> resultList = result.cata(left -> null, right -> right); Assert.assertThat(resultList, Matchers.hasSize(expectedResult.size())); if (expectedResult.isEmpty()) { Assert.assertThat(resultList, Matchers.empty()); } else { Assert.assertThat(resultList, Matchers.contains(expectedResult.toArray(new Object[]{}))); } }
@Test public void invokeParamYearMonthDayNulls() { FunctionTestUtil.assertResultError(dateFunction.invoke(null, null, null), InvalidParametersEvent.class); FunctionTestUtil.assertResultError(dateFunction.invoke(10, null, null), InvalidParametersEvent.class); FunctionTestUtil.assertResultError(dateFunction.invoke(null, 10, null), InvalidParametersEvent.class); FunctionTestUtil.assertResultError(dateFunction.invoke(null, null, 10), InvalidParametersEvent.class); FunctionTestUtil.assertResultError(dateFunction.invoke(10, 10, null), InvalidParametersEvent.class); FunctionTestUtil.assertResultError(dateFunction.invoke(10, null, 10), InvalidParametersEvent.class); FunctionTestUtil.assertResultError(dateFunction.invoke(null, 10, 10), InvalidParametersEvent.class); }
@Test public void invokeListOfIntegers() { FunctionTestUtil.assertResult(maxFunction.invoke(Collections.singletonList(1)), 1); FunctionTestUtil.assertResult(maxFunction.invoke(Arrays.asList(1, 2, 3)), 3); FunctionTestUtil.assertResult(maxFunction.invoke(Arrays.asList(1, 3, 2)), 3); FunctionTestUtil.assertResult(maxFunction.invoke(Arrays.asList(3, 1, 2)), 3); }
@Test public void invokeList() { FunctionTestUtil.assertResultList(sortFunction.invoke(Arrays.asList(10, 4, 5, 12)), Arrays.asList(4, 5, 10, 12)); FunctionTestUtil.assertResultList(sortFunction.invoke(Arrays.asList("a", "c", "b")), Arrays.asList("a", "b", "c")); }
@Test public void invokeNull() { FunctionTestUtil.assertResultNull(notFunction.invoke(null)); }
@Test public void invokeNegative() { FunctionTestUtil.assertResultBigDecimal(floorFunction.invoke(BigDecimal.valueOf(-10.2)), BigDecimal.valueOf(-11)); }
public static void assertResultBigDecimal(final FEELFnResult<BigDecimal> result, final BigDecimal expectedResult) { assertResultNotError(result); final BigDecimal resultValue = result.cata(left -> null, right -> right); Assert.assertThat(resultValue, Matchers.notNullValue()); Assert.assertThat(resultValue, Matchers.comparesEqualTo(expectedResult)); }
@Test public void invokeTimeUnitsParamsUnsupportedNumber() { FunctionTestUtil.assertResultError(timeFunction.invoke(Double.POSITIVE_INFINITY, 1, 1, null), InvalidParametersEvent.class); FunctionTestUtil.assertResultError(timeFunction.invoke(Double.NEGATIVE_INFINITY, 1, 1, null), InvalidParametersEvent.class); FunctionTestUtil.assertResultError(timeFunction.invoke(1, Double.POSITIVE_INFINITY, 1, null), InvalidParametersEvent.class); FunctionTestUtil.assertResultError(timeFunction.invoke(1, Double.NEGATIVE_INFINITY, 1, null), InvalidParametersEvent.class); FunctionTestUtil.assertResultError(timeFunction.invoke(1, 1, Double.POSITIVE_INFINITY, null), InvalidParametersEvent.class); FunctionTestUtil.assertResultError(timeFunction.invoke(1, 1, Double.NEGATIVE_INFINITY, null), InvalidParametersEvent.class); }
@Test public void invokeListOfStrings() { FunctionTestUtil.assertResult(maxFunction.invoke(Collections.singletonList("a")), "a"); FunctionTestUtil.assertResult(maxFunction.invoke(Arrays.asList("a", "b", "c")), "c"); FunctionTestUtil.assertResult(maxFunction.invoke(Arrays.asList("a", "c", "b")), "c"); FunctionTestUtil.assertResult(maxFunction.invoke(Arrays.asList("c", "a", "b")), "c"); }