diff --git a/validators/src/main/java/de/redsix/dmncheck/feel/FeelTypecheck.java b/validators/src/main/java/de/redsix/dmncheck/feel/FeelTypecheck.java index 5c16276b..7f449882 100644 --- a/validators/src/main/java/de/redsix/dmncheck/feel/FeelTypecheck.java +++ b/validators/src/main/java/de/redsix/dmncheck/feel/FeelTypecheck.java @@ -68,7 +68,7 @@ private static Either type } private static Either typecheckUnaryExpression(final Context context, final Operator operator, final FeelExpression operand) { - final Stream allowedOperators = Stream.of(Operator.GT, Operator.GE, Operator.LT, Operator.LE, Operator.NOT); + final Stream allowedOperators = Stream.of(Operator.GT, Operator.GE, Operator.LT, Operator.LE, Operator.NOT, Operator.SUB); return typecheck(context, operand).bind(type -> check(allowedOperators.anyMatch(operator::equals), "Operator is not supported in UnaryExpression.") .orElse(checkOperatorCompatibility(type, operator)) diff --git a/validators/src/test/java/de/redsix/dmncheck/feel/FeelTypecheckTest.java b/validators/src/test/java/de/redsix/dmncheck/feel/FeelTypecheckTest.java index 84815ace..a0d04036 100644 --- a/validators/src/test/java/de/redsix/dmncheck/feel/FeelTypecheckTest.java +++ b/validators/src/test/java/de/redsix/dmncheck/feel/FeelTypecheckTest.java @@ -90,7 +90,7 @@ void unboundVariableHasNoType() { } @ParameterizedTest - @CsvSource({"<5, INTEGER", "<5.2, DOUBLE"}) + @CsvSource({"<5, INTEGER", "<5.2, DOUBLE", "-1, INTEGER"}) void lessThanExpressionHasNumericType(String input, String expectedType) { final FeelExpression expression = FeelParser.PARSER.parse(input); final Either type = FeelTypecheck.typecheck(expression); diff --git a/validators/src/test/java/de/redsix/dmncheck/validators/OutputEntryTypeValidatorTest.java b/validators/src/test/java/de/redsix/dmncheck/validators/OutputEntryTypeValidatorTest.java index 08bf6c47..c4afeb8f 100644 --- a/validators/src/test/java/de/redsix/dmncheck/validators/OutputEntryTypeValidatorTest.java +++ b/validators/src/test/java/de/redsix/dmncheck/validators/OutputEntryTypeValidatorTest.java @@ -21,7 +21,7 @@ class OutputEntryTypeValidatorTest extends WithDecisionTable { private final OutputEntryTypeValidator testee = new OutputEntryTypeValidator(); @ParameterizedTest - @CsvSource({"integer, 42", "long, 42", "double, 42", "integer, "}) + @CsvSource({"integer, 42", "long, 42", "double, 42", "integer, -1", "integer, "}) void shouldAcceptWellTypedOutputExpression(final String typeref, final String textContent) { final Output output = modelInstance.newInstance(Output.class); output.setTypeRef(typeref);