/** * Marshalls the give FEEL value into a String. The result is similar to * calling the string() function in a FEEL expression, with the difference * that a null value is returned as the "null" string instead of the null * value itself. * * @param value the FEEL value to be marshalled * * @return the string representation of the value */ @Override public String marshall(Object value) { if( value == null ) { return "null"; } return BuiltInFunctions.getFunction( StringFunction.class ).invoke( value ).cata( justNull(), Function.identity()); }
@Before public void setUp() { stringFunction = new StringFunction(); }
@Test public void invokeDurationMinutes() { FunctionTestUtil.assertResult(stringFunction.invoke(Duration.ofMinutes(9)), "PT9M"); FunctionTestUtil.assertResult(stringFunction.invoke(Duration.ofMinutes(200)), "PT3H20M"); FunctionTestUtil.assertResult(stringFunction.invoke(Duration.ofMinutes(5000)), "P3DT11H20M"); FunctionTestUtil.assertResult(stringFunction.invoke(Duration.ofMinutes(-5000)), "-P3DT11H20M"); }
@Before public void setUp() { dateTimeFunction = new DateAndTimeFunction(); dateFunction = new DateFunction(); timeFunction = new TimeFunction(); stringFunction = new StringFunction(); }
@Test public void invokeDurationSeconds() { FunctionTestUtil.assertResult(stringFunction.invoke(Duration.ofSeconds(9)), "PT9S"); FunctionTestUtil.assertResult(stringFunction.invoke(Duration.ofSeconds(200)), "PT3M20S"); FunctionTestUtil.assertResult(stringFunction.invoke(Duration.ofSeconds(5000)), "PT1H23M20S"); FunctionTestUtil.assertResult(stringFunction.invoke(Duration.ofSeconds(90061)), "P1DT1H1M1S"); FunctionTestUtil.assertResult(stringFunction.invoke(Duration.ofSeconds(-90061)), "-P1DT1H1M1S"); }
@Test public void invokeContextNonEmpty() { final Map<String, Object> childContextMap = new HashMap<>(); childContextMap.put("childKey1", "childValue1"); final Map<String, Object> contextMap = new HashMap<>(); contextMap.put("key1", "value1"); contextMap.put("key2", childContextMap); FunctionTestUtil.assertResult(stringFunction.invoke(contextMap), "{ key1 : value1, key2 : { childKey1 : childValue1 } }"); }
@Test public void invokeListNonEmpty() { final List<Object> values = new ArrayList<>(); values.add(1); values.add(BigDecimal.valueOf(10.5)); values.add("test"); FunctionTestUtil.assertResult(stringFunction.invoke(values), "[ 1, 10.5, test ]"); }
@Test public void invokeLocalDateTime() { final LocalDateTime localDateTime = LocalDateTime.now(); FunctionTestUtil.assertResult(stringFunction.invoke(localDateTime), DateAndTimeFunction.FEEL_DATE_TIME.format(localDateTime)); }
@Test public void invokeZonedDateTime() { final ZonedDateTime zonedDateTime = ZonedDateTime.now(); FunctionTestUtil.assertResult(stringFunction.invoke(zonedDateTime), DateAndTimeFunction.REGION_DATETIME_FORMATTER.format(zonedDateTime)); }
@Test public void invokeDurationNanosMillis() { FunctionTestUtil.assertResult(stringFunction.invoke(Duration.ofNanos(25)), "PT0.000000025S"); FunctionTestUtil.assertResult(stringFunction.invoke(Duration.ofNanos(10000)), "PT0.00001S"); FunctionTestUtil.assertResult(stringFunction.invoke(Duration.ofNanos(10025)), "PT0.000010025S"); FunctionTestUtil.assertResult(stringFunction.invoke(Duration.ofMillis(1500)), "PT1.5S"); FunctionTestUtil.assertResult(stringFunction.invoke(Duration.ofMillis(90061025)), "P1DT1H1M1.025S"); FunctionTestUtil.assertResult(stringFunction.invoke(Duration.ofMillis(-90061025)), "-P1DT1H1M1.025S"); }
@Test public void invokeContextEmpty() { FunctionTestUtil.assertResult(stringFunction.invoke(new HashMap<>()), "{ }"); }
@Test public void invokeBigDecimal() { FunctionTestUtil.assertResult(stringFunction.invoke(BigDecimal.valueOf(10.7)), "10.7"); }
@Test public void invokeListEmpty() { FunctionTestUtil.assertResult(stringFunction.invoke(Collections.emptyList()), "[ ]"); }
@Test public void invokeMaskedFormat() { FunctionTestUtil.assertResult(stringFunction.invoke("%s is here!", new Object[]{"Gorgonzola"}), "Gorgonzola is here!"); } }
@Test public void invokeDurationZero() { FunctionTestUtil.assertResult(stringFunction.invoke(Duration.ZERO), "PT0S"); }
@Test public void invokePeriodZero() { FunctionTestUtil.assertResult(stringFunction.invoke(Period.ZERO), "P0M"); }
@Test public void invokeString() { FunctionTestUtil.assertResult(stringFunction.invoke("test"), "test"); }
@Test public void invokeNull() { FunctionTestUtil.assertResult(stringFunction.invoke(null), null); }
@Test public void invokeLocalDate() { final LocalDate localDate = LocalDate.now(); FunctionTestUtil.assertResult(stringFunction.invoke(localDate), localDate.toString()); }