@Override public List<FEELFunction> getFEELFunctions() { return Arrays.asList(KieExtendedDMNFunctions.getFunctions()); }
/** * Marshalls the given value into FEEL code that can be executed to * reconstruct the value. For instance, here are some examples of the marshalling process: * * * number 10 marshalls as: 10 * * string foo marshalls as: "foo" * * duration P1D marshalls as: duration( "P1D" ) * * context { x : 10, y : foo } marshalls as: { x : 10, y : "foo" } * * @param value the FEEL value to be marshalled * * @return a string representing the FEEL code that needs to be executed to reconstruct the value */ @Override public String marshall(Object value) { if( value == null ) { return "null"; } return KieExtendedDMNFunctions.getFunction(CodeFunction.class).invoke(value).cata(justNull(), Function.identity()); }
public FEELFnResult<List<String>> invoke(@ParameterName("string") String string, @ParameterName("delimiter") String delimiter) { return invoke(string, delimiter, null); }
@Test public void invokeDurationMinutes() { FunctionTestUtil.assertResult(codeFunction.invoke(Duration.ofMinutes(9)), "duration( \"PT9M\" )"); FunctionTestUtil.assertResult(codeFunction.invoke(Duration.ofMinutes(200)), "duration( \"PT3H20M\" )"); FunctionTestUtil.assertResult(codeFunction.invoke(Duration.ofMinutes(5000)), "duration( \"P3DT11H20M\" )"); FunctionTestUtil.assertResult(codeFunction.invoke(Duration.ofMinutes(-5000)), "duration( \"-P3DT11H20M\" )"); }
@Before public void setUp() { nowFunction = new NowFunction(); }
@Before public void setUp() { todayFunction = new TodayFunction(); }
@Before public void setUp() { codeFunction = new CodeFunction(); }
@Test public void testDateFunction_invokeExtended() { assertResult(dateFunction.invoke("2016-12-20T14:30:22"), DateTimeFormatter.ISO_DATE.parse( "2016-12-20", LocalDate::from )); assertResult(dateFunction.invoke("2016-12-20T14:30:22-05:00"), DateTimeFormatter.ISO_DATE.parse( "2016-12-20", LocalDate::from )); assertResult(dateFunction.invoke("2016-12-20T14:30:22z"), DateTimeFormatter.ISO_DATE.parse( "2016-12-20", LocalDate::from )); }
@Test public void invokeDurationNanosMillis() { FunctionTestUtil.assertResult(codeFunction.invoke(Duration.ofNanos(25)), "duration( \"PT0.000000025S\" )"); FunctionTestUtil.assertResult(codeFunction.invoke(Duration.ofNanos(10000)), "duration( \"PT0.00001S\" )"); FunctionTestUtil.assertResult(codeFunction.invoke(Duration.ofNanos(10025)), "duration( \"PT0.000010025S\" )"); FunctionTestUtil.assertResult(codeFunction.invoke(Duration.ofMillis(1500)), "duration( \"PT1.5S\" )"); FunctionTestUtil.assertResult(codeFunction.invoke(Duration.ofMillis(90061025)), "duration( \"P1DT1H1M1.025S\" )"); FunctionTestUtil.assertResult(codeFunction.invoke(Duration.ofMillis(-90061025)), "duration( \"-P1DT1H1M1.025S\" )"); }
@Test public void invokeNull() { FunctionTestUtil.assertResult(codeFunction.invoke(null), "null"); }
@Test public void invokeDurationZero() { FunctionTestUtil.assertResult(codeFunction.invoke(Duration.ZERO), "duration( \"PT0S\" )"); }
@Test public void invokeString() { FunctionTestUtil.assertResult(codeFunction.invoke("test"), "\"test\""); }
@Test public void invokePeriodZero() { FunctionTestUtil.assertResult(codeFunction.invoke(Period.ZERO), "duration( \"P0M\" )"); }
@Test public void invokeDurationHours() { FunctionTestUtil.assertResult(codeFunction.invoke(Duration.ofHours(9)), "duration( \"PT9H\" )"); FunctionTestUtil.assertResult(codeFunction.invoke(Duration.ofHours(200)), "duration( \"P8DT8H\" )"); FunctionTestUtil.assertResult(codeFunction.invoke(Duration.ofHours(-200)), "duration( \"-P8DT8H\" )"); }
@Test public void invokeRangeOpenOpen() { FunctionTestUtil.assertResult( codeFunction.invoke(new RangeImpl(Range.RangeBoundary.OPEN, 12, 15, Range.RangeBoundary.OPEN)), "( 12 .. 15 )"); }