@Test public void testManualContext() { CompiledFEELExpression compiledExpression = new ManualFilterExpression(); LOG.debug("{}", compiledExpression); EvaluationContext emptyContext = CodegenTestUtil.newEmptyEvaluationContext(); Object result = compiledExpression.apply(emptyContext); LOG.debug("{}", result); assertThat(result, is(Arrays.asList(BigDecimal.valueOf(10), BigDecimal.valueOf(20), BigDecimal.valueOf(30), BigDecimal.valueOf(20), BigDecimal.valueOf(40), BigDecimal.valueOf(60), BigDecimal.valueOf(30), BigDecimal.valueOf(60), BigDecimal.valueOf(90)))); }
private Object parseCompileEvaluate(String feelLiteralExpression) { CompiledFEELExpression compiledExpression = parse( feelLiteralExpression ); LOG.debug("{}", compiledExpression); EvaluationContext emptyContext = CodegenTestUtil.newEmptyEvaluationContext(); Object result = compiledExpression.apply(emptyContext); LOG.debug("{}", result); return result; }
@Test public void testManualContext() { CompiledFEELExpression compiledExpression = new ManualFilterExpression(); LOG.debug("{}", compiledExpression); EvaluationContext emptyContext = CodegenTestUtil.newEmptyEvaluationContext(); Object result = compiledExpression.apply(emptyContext); LOG.debug("{}", result); assertThat(result, is(Arrays.asList(BigDecimal.valueOf(3), BigDecimal.valueOf(4)))); }
@Test public void testManualContext() { CompiledFEELExpression compiledExpression = new ManualFilterExpression(); LOG.debug("{}", compiledExpression); EvaluationContext emptyContext = CodegenTestUtil.newEmptyEvaluationContext(); Object result = compiledExpression.apply(emptyContext); LOG.debug("{}", result); assertThat(result, is(BigDecimal.valueOf(3))); }
@Test public void testManualUnaryTests() { Object left = EvalHelper.coerceNumber(7); CompiledFEELUnaryTests compiledUnaryTests = new ManualImpl1(); LOG.debug("{}", compiledUnaryTests); EvaluationContext emptyContext = CodegenTestUtil.newEmptyEvaluationContext(); List<Boolean> result = compiledUnaryTests.getUnaryTests().stream().map(ut -> ut.apply(emptyContext, left)).collect(Collectors.toList()); LOG.debug("{}", result); assertThat(result, is(Arrays.asList(true, false))); }
@Test public void testManualContext() { CompiledFEELExpression compiledExpression = new ManualContext(); LOG.debug("{}", compiledExpression); EvaluationContext emptyContext = CodegenTestUtil.newEmptyEvaluationContext(); Object result = compiledExpression.apply(emptyContext); LOG.debug("{}", result); assertThat(result, is(instanceOf(Map.class))); assertThat(((Map) result).get("street"), is("broadway st")); }
@Test public void test_filterPath_tricky2() { CompiledFEELExpression nameRef = parse("[ {x:1, y:2}, {x:2, y:3} ][x]"); LOG.debug("{}", nameRef); EvaluationContext context = CodegenTestUtil.newEmptyEvaluationContext(); context.setValue("x", false); Object result = nameRef.apply(context); LOG.debug("{}", result); assertThat(result, is(Collections.emptyList())); }
@Test public void testManualContext() { CompiledFEELExpression compiledExpression = new ManualFilterExpression(); LOG.debug("{}", compiledExpression); EvaluationContext emptyContext = CodegenTestUtil.newEmptyEvaluationContext(); Object result = compiledExpression.apply(emptyContext); LOG.debug("{}", result); assertThat(result, is(true)); }
@Test public void testManualContext() { CompiledFEELExpression compiledExpression = new NamedFunctionExample(); LOG.debug("{}", compiledExpression); EvaluationContext emptyContext = CodegenTestUtil.newEmptyEvaluationContext(); Object result = compiledExpression.apply(emptyContext); LOG.debug("{}", result); assertThat(result, is("OOBAR")); }
@Test public void testQualifiedName3() { String inputExpression = "a date.year"; Type dateType = BuiltInType.DATE; CompiledFEELExpression qualRef = parse(inputExpression, mapOf(entry("a date", dateType))); LOG.debug("{}", qualRef); EvaluationContext context = CodegenTestUtil.newEmptyEvaluationContext(); context.setValue("a date", LocalDate.of(2016, 8, 2)); Object result = qualRef.apply(context); LOG.debug("{}", result); assertThat(result, is(BigDecimal.valueOf(2016))); }
@Test public void test_filterPath_tricky1() { CompiledFEELExpression nameRef = parse( "[ {x:1, y:2}, {x:2, y:3} ][x]"); LOG.debug("{}", nameRef); EvaluationContext context = CodegenTestUtil.newEmptyEvaluationContext(); context.setValue("x", 2); Object result = nameRef.apply(context); LOG.debug("{}", result); assertThat(result, is(mapOf(entry("x", new BigDecimal(2)), entry("y", new BigDecimal(3))))); }
@Test public void testNameReference() { String inputExpression = "someSimpleName"; CompiledFEELExpression nameRef = parse( inputExpression, mapOf( entry("someSimpleName", BuiltInType.STRING) ) ); LOG.debug("{}", nameRef); EvaluationContext context = CodegenTestUtil.newEmptyEvaluationContext(); context.setValue("someSimpleName", 123L); Object result = nameRef.apply(context); LOG.debug("{}", result); assertThat(result, is( BigDecimal.valueOf(123) )); }
private List<Boolean> parseCompileEvaluate(String feelLiteralExpression, Object l) { Object left = EvalHelper.coerceNumber(l); FEELEventListenersManager mgr = new FEELEventListenersManager(); CompiledFEELSupport.SyntaxErrorListener listener = new CompiledFEELSupport.SyntaxErrorListener(); mgr.addListener(listener); EvaluationContext emptyContext = CodegenTestUtil.newEmptyEvaluationContext(mgr); CompiledFEELUnaryTests compiledUnaryTests = parse(feelLiteralExpression, mgr, listener); LOG.debug("{}", compiledUnaryTests); List<Boolean> result = compiledUnaryTests.getUnaryTests() .stream() .map(ut -> ut.apply(emptyContext, left)) .collect(Collectors.toList()); if (listener.isError()) { LOG.debug("{}", listener.event()); return Collections.emptyList(); } LOG.debug("{}", result); return result; }
@Test public void testQualifiedName2() { String inputExpression = "My Person.Full Name"; Type personType = JavaBackedType.of(MyPerson.class); CompiledFEELExpression qualRef = parse( inputExpression, mapOf( entry("My Person", personType) ) ); LOG.debug("{}", qualRef); EvaluationContext context = CodegenTestUtil.newEmptyEvaluationContext(); context.setValue("My Person", new MyPerson()); Object result = qualRef.apply(context); LOG.debug("{}", result); assertThat(result, is( "John Doe" )); }
@Test public void testQualifiedName() { String inputExpression = "My Person.Full Name"; Type personType = new MapBackedType("Person", mapOf( entry("Full Name", BuiltInType.STRING), entry("Age", BuiltInType.NUMBER) ) ); CompiledFEELExpression qualRef = parse( inputExpression, mapOf( entry("My Person", personType) ) ); LOG.debug("{}", qualRef); EvaluationContext context = CodegenTestUtil.newEmptyEvaluationContext(); context.setValue("My Person", mapOf( entry("Full Name", "John Doe"), entry("Age", 47) )); Object result = qualRef.apply(context); LOG.debug("{}", result); assertThat(result, is( "John Doe" )); // check number coercion for qualified name CompiledFEELExpression personAgeExpression = parse("My Person.Age", mapOf(entry("My Person", personType))); LOG.debug("{}", personAgeExpression); Object resultPersonAge = personAgeExpression.apply(context); // Please notice input variable in context is a Map containing and entry value for int 47. LOG.debug("{}", resultPersonAge); assertThat(resultPersonAge, is(BigDecimal.valueOf(47))); }