Skip to content

Commit 82e3dde

Browse files
fixes implicit multiplication test (#548)
1 parent 2879927 commit 82e3dde

File tree

3 files changed

+23
-25
lines changed

3 files changed

+23
-25
lines changed

src/main/java/com/ezylang/evalex/functions/basic/CoalesceFunction.java

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@
1515
*/
1616
package com.ezylang.evalex.functions.basic;
1717

18+
import static java.util.Arrays.stream;
19+
import static java.util.stream.Stream.of;
20+
1821
import com.ezylang.evalex.Expression;
1922
import com.ezylang.evalex.data.EvaluationValue;
2023
import com.ezylang.evalex.functions.AbstractFunction;
@@ -27,22 +30,15 @@
2730
*/
2831
@FunctionParameter(name = "value", isVarArg = true)
2932
public class CoalesceFunction extends AbstractFunction {
33+
3034
@Override
3135
public EvaluationValue evaluate(
3236
Expression expression, Token functionToken, EvaluationValue... parameterValues) {
33-
for (EvaluationValue parameter : parameterValues) {
34-
if (parameter.isArrayValue()) {
35-
for (EvaluationValue element : parameter.getArrayValue()) {
36-
if (!element.isNullValue()) {
37-
return element;
38-
}
39-
}
40-
} else {
41-
if (!parameter.isNullValue()) {
42-
return parameter;
43-
}
44-
}
45-
}
46-
return EvaluationValue.NULL_VALUE;
37+
38+
return stream(parameterValues)
39+
.flatMap(v -> v.isArrayValue() ? v.getArrayValue().stream() : of(v))
40+
.filter(v -> !v.isNullValue())
41+
.findFirst()
42+
.orElse(EvaluationValue.NULL_VALUE);
4743
}
4844
}

src/test/java/com/ezylang/evalex/config/TestConfigurationProvider.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ public class TestConfigurationProvider {
3939
Map.entry("++", new PrefixPlusPlusOperator()),
4040
Map.entry("++", new PostfixPlusPlusOperator()),
4141
Map.entry("?", new PostfixQuestionOperator()))
42-
.withAdditionalFunctions(Map.entry("TEST", new DummyFunction()));
42+
.withAdditionalFunctions(
43+
Map.entry("TEST", new DummyFunction()), Map.entry("F", new DummyFunction()));
4344

4445
public static final ExpressionConfiguration GermanConfiguration =
4546
ExpressionConfiguration.builder()

src/test/java/com/ezylang/evalex/functions/basic/BasicFunctionsTest.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -390,17 +390,18 @@ void testCoalesce(String expression, String expectedResult)
390390
}
391391

392392
@Test
393-
void testCoalesceWithArray()
394-
throws EvaluationException, ParseException {
395-
EvaluationValue evaluationValue = new Expression("COALESCE(A, B, C)",
396-
TestConfigurationProvider.StandardConfigurationWithAdditionalTestOperators)
397-
.with("A", null)
398-
.with("B", Arrays.asList(null, "8", null, null))
399-
.with("C", "7")
400-
.evaluate();
393+
void testCoalesceWithArray() throws EvaluationException, ParseException {
394+
EvaluationValue evaluationValue =
395+
new Expression(
396+
"COALESCE(A, B, C)",
397+
TestConfigurationProvider.StandardConfigurationWithAdditionalTestOperators)
398+
.with("A", null)
399+
.with("B", Arrays.asList(null, "8", null, null))
400+
.with("C", "7")
401+
.evaluate();
401402

402-
assertThat(evaluationValue.isNullValue()).isFalse();
403-
assertThat(evaluationValue.getStringValue()).isEqualTo("8");
403+
assertThat(evaluationValue.isNullValue()).isFalse();
404+
assertThat(evaluationValue.getStringValue()).isEqualTo("8");
404405
}
405406

406407
@ParameterizedTest

0 commit comments

Comments
 (0)