@Override public boolean evaluate(Object rawExpression, Object resultValue, Class<?> resultClass) { if (rawExpression != null && !(rawExpression instanceof String)) { throw new IllegalArgumentException("Raw expression should be a string"); } EvaluationContext evaluationContext = newEvaluationContext(); List<UnaryTest> unaryTests = feel.evaluateUnaryTests((String) rawExpression); if(unaryTests.size() < 1) { throw new IllegalArgumentException("Impossible to parse the expression '" + rawExpression + "'"); } return unaryTests.stream().allMatch(unaryTest -> unaryTest.apply(evaluationContext, resultValue)); }
@Test public void testAllowedValuesForASimpleTypeCollection() { // DROOLS-2357 final String testNS = "testDROOLS2357"; final FEEL feel = FEEL.newInstance(); final DMNType tDecision1 = typeRegistry.registerType(new SimpleTypeImpl(testNS, "tListOfVowels", null, true, feel.evaluateUnaryTests("\"a\",\"e\",\"i\",\"o\",\"u\""), FEEL_STRING, BuiltInType.STRING)); assertTrue(tDecision1.isAssignableValue("a")); assertTrue(tDecision1.isAssignableValue(Collections.singletonList("a"))); assertFalse(tDecision1.isAssignableValue("z")); assertTrue(tDecision1.isAssignableValue(Arrays.asList("a", "e"))); assertFalse(tDecision1.isAssignableValue(Arrays.asList("a", "e", "zzz"))); }