@Test public void invokeTimeUnitsParamsNull() { FunctionTestUtil.assertResultError(timeFunction.invoke(null, null, null, null), InvalidParametersEvent.class); FunctionTestUtil.assertResultError(timeFunction.invoke(null, null, 1, null), InvalidParametersEvent.class); FunctionTestUtil.assertResultError(timeFunction.invoke(null, 1, null, null), InvalidParametersEvent.class); FunctionTestUtil.assertResultError(timeFunction.invoke(null, 1, 1, null), InvalidParametersEvent.class); FunctionTestUtil.assertResultError(timeFunction.invoke(1, null, null, null), InvalidParametersEvent.class); FunctionTestUtil.assertResultError(timeFunction.invoke(1, null, 1, null), InvalidParametersEvent.class); FunctionTestUtil.assertResultError(timeFunction.invoke(1, 1, null, null), InvalidParametersEvent.class); }
@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 invokeTimeUnitsParamsOutOfBounds() { FunctionTestUtil.assertResultError(timeFunction.invoke(40, 1, 1, null), InvalidParametersEvent.class); FunctionTestUtil.assertResultError(timeFunction.invoke(1, 900, 1, null), InvalidParametersEvent.class); FunctionTestUtil.assertResultError(timeFunction.invoke(1, 1, 900, null), InvalidParametersEvent.class); }
@Test public void invokeStringParamNull() { FunctionTestUtil.assertResultError(timeFunction.invoke((String) null), InvalidParametersEvent.class); }
@Test public void invokeStringParamNotDateOrTime() { FunctionTestUtil.assertResultError(timeFunction.invoke("test"), InvalidParametersEvent.class); }
@Test public void invokeStringParamTimeWrongFormat() { FunctionTestUtil.assertResultError(timeFunction.invoke("10-15:06"), InvalidParametersEvent.class); }
@Test public void invokeTemporalAccessorParamNull() { FunctionTestUtil.assertResultError(timeFunction.invoke((TemporalAccessor) null), InvalidParametersEvent.class); }
@Test public void invokeWrongIANAformat() { FunctionTestUtil.assertResultError(timeFunction.invoke("13:20:00+02:00@Europe/Paris"), InvalidParametersEvent.class); }
@Test public void invokeTimeUnitsParamsNoOffsetWithNanoseconds() { FunctionTestUtil.assertResult(timeFunction.invoke(10, 43, BigDecimal.valueOf(15.154), null), LocalTime.of(10, 43, 15, 154000000)); }
@Test public void invokeTemporalAccessorParamDateTime() { FunctionTestUtil.assertResult(timeFunction.invoke(LocalDateTime.of(2017, 6, 12, 11, 43)), LocalTime.of(11, 43, 0)); }
@Test public void invokeStringParamNoOffset() { FunctionTestUtil.assertResult(timeFunction.invoke("10:15:06"), LocalTime.of(10,15,6)); }
@Test public void invokeTimeUnitsParamsWithOffsetWithNanoseconds() { FunctionTestUtil.assertResult( timeFunction.invoke(10, 43, BigDecimal.valueOf(15.154), Duration.ofHours(1)), OffsetTime.of(10, 43, 15, 154000000, ZoneOffset.ofHours(1))); FunctionTestUtil.assertResult( timeFunction.invoke(10, 43, BigDecimal.valueOf(15.154), Duration.ofHours(-1)), OffsetTime.of(10, 43, 15, 154000000, ZoneOffset.ofHours(-1))); } }
@Test public void testComposite1() { final FEELFnResult<TemporalAccessor> p1 = dateTimeFunction.invoke("2017-08-10T10:20:00+02:00"); final FEELFnResult<TemporalAccessor> p2 = timeFunction.invoke("23:59:01"); FunctionTestUtil.assertResult(p1, ZonedDateTime.of(2017, 8, 10, 10, 20, 0, 0, ZoneId.of("+02:00"))); FunctionTestUtil.assertResult(p2, LocalTime.of(23, 59, 1)); final FEELFnResult<TemporalAccessor> result = dateTimeFunction.invoke(p1.getOrElse(null), p2.getOrElse(null)); FunctionTestUtil.assertResult(result, LocalDateTime.of(2017, 8, 10, 23, 59, 1)); }
@Test public void invokeTemporalAccessorParamTime() { FunctionTestUtil.assertResult(timeFunction.invoke(LocalTime.of(11, 43)), LocalTime.of(11, 43, 0)); }
@Test public void invokeTimeUnitsParamsWithOffset() { FunctionTestUtil.assertResult(timeFunction.invoke(10, 43, 15, Duration.ofHours(1)), OffsetTime.of(10, 43, 15, 0, ZoneOffset.ofHours(1))); FunctionTestUtil.assertResult(timeFunction.invoke(10, 43, 15, Duration.ofHours(-1)), OffsetTime.of(10, 43, 15, 0, ZoneOffset.ofHours(-1))); }
@Test public void testComposite4() { final FEELFnResult<TemporalAccessor> p1 = dateFunction.invoke("2017-01-01"); final FEELFnResult<TemporalAccessor> p2 = timeFunction.invoke("23:59:01@Europe/Paris"); FunctionTestUtil.assertResult(p1, LocalDate.of(2017, 1, 1)); final TemporalAccessor p2TA = p2.getOrElse(null); assertNotNull(p2TA); assertEquals(LocalTime.of(23, 59, 1), p2TA.query(TemporalQueries.localTime())); assertEquals(ZoneId.of("Europe/Paris"), p2TA.query(TemporalQueries.zone())); final FEELFnResult<TemporalAccessor> result = dateTimeFunction.invoke(p1.getOrElse(null), p2.getOrElse(null)); FunctionTestUtil.assertResult(result, ZonedDateTime.of(2017, 1, 1, 23, 59, 1, 0, ZoneId.of("Europe/Paris"))); }
@Test public void parseWithZone() { final TemporalAccessor parsedResult = timeFunction.invoke("00:01:00@Etc/UTC").getOrElse(null); assertEquals(LocalTime.of(0, 1, 0), parsedResult.query(TemporalQueries.localTime())); assertEquals(ZoneId.of("Etc/UTC"), parsedResult.query(TemporalQueries.zone())); }
@Test public void parseWithZoneIANA() { final TemporalAccessor parsedResult = timeFunction.invoke("00:01:00@Europe/Paris").getOrElse(null); assertEquals(LocalTime.of(0, 1, 0), parsedResult.query(TemporalQueries.localTime())); assertEquals(ZoneId.of("Europe/Paris"), parsedResult.query(TemporalQueries.zone())); }
@Test public void testComposite5() { final FEELFnResult<TemporalAccessor> p1 = dateTimeFunction.invoke("2017-08-10T10:20:00@Europe/Paris"); FunctionTestUtil.assertResult(p1, ZonedDateTime.of(2017, 8, 10, 10, 20, 0, 0, ZoneId.of("Europe/Paris"))); final TemporalAccessor timeOnDateTime = timeFunction.invoke(p1.getOrElse(null)).getOrElse(null); assertNotNull(timeOnDateTime); assertEquals(LocalTime.of(10, 20, 0), timeOnDateTime.query(TemporalQueries.localTime())); assertEquals(ZoneId.of("Europe/Paris"), timeOnDateTime.query(TemporalQueries.zone())); FunctionTestUtil.assertResult(stringFunction.invoke(timeOnDateTime), "10:20:00@Europe/Paris"); } }