You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kie.apache.org by tz...@apache.org on 2025/03/27 08:18:01 UTC
(incubator-kie-drools) branch main updated: Single parameter number function with test cases (#6289)
This is an automated email from the ASF dual-hosted git repository.
tzimanyi pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-drools.git
The following commit(s) were added to refs/heads/main by this push:
new 1cc8bd02eb Single parameter number function with test cases (#6289)
1cc8bd02eb is described below
commit 1cc8bd02eba09fa37ca9fe9250e6e932cdd557be
Author: ChinchuAjith <Ch...@ibm.com>
AuthorDate: Thu Mar 27 13:47:57 2025 +0530
Single parameter number function with test cases (#6289)
---
.../dmn/feel/runtime/functions/NumberFunction.java | 18 ++++++++++++++++++
.../test/java/org/kie/dmn/feel/runtime/BFEELTest.java | 9 +++++++++
.../org/kie/dmn/feel/runtime/FEELFunctionsTest.java | 5 +++++
.../feel/runtime/functions/NumberFunctionTest.java | 19 +++++++++++++++++++
4 files changed, 51 insertions(+)
diff --git a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/NumberFunction.java b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/NumberFunction.java
index c2fd88c1b9..6d0faa8cf2 100644
--- a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/NumberFunction.java
+++ b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/runtime/functions/NumberFunction.java
@@ -65,4 +65,22 @@ public class NumberFunction
}
}
+ /**
+ * Invokes the function to convert an input object into a BigDecimal.
+ * If the input is null or annot be converted to a BigDecimal , an error result is returned.
+ * @param from : the input object to be converted into a BigDecimal.
+ * @return FEELFnResult : containing the BigDecimal value if conversion is successful
+ */
+ public FEELFnResult<BigDecimal> invoke(@ParameterName("from") Object from) {
+ if ( from == null ) {
+ return FEELFnResult.ofError(new InvalidParametersEvent(Severity.ERROR, "from", "cannot be null"));
+ }
+ BigDecimal result = NumberEvalHelper.getBigDecimalOrNull(from);
+ if( result == null ) {
+ return FEELFnResult.ofError( new InvalidParametersEvent(Severity.ERROR, "unable to calculate final number result" ) );
+ } else {
+ return FEELFnResult.ofResult( result );
+ }
+ }
+
}
diff --git a/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/BFEELTest.java b/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/BFEELTest.java
index 3438572913..8f2ce07af8 100644
--- a/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/BFEELTest.java
+++ b/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/BFEELTest.java
@@ -95,6 +95,15 @@ public class BFEELTest extends BaseFEELTest {
{"range(\"[x]\")", new RangeImpl(Range.RangeBoundary.OPEN, BigDecimal.ZERO, BigDecimal.ZERO, Range.RangeBoundary.OPEN), null},
+ {"number(\"test\")", BigDecimal.ZERO, null},
+ {"number(\"1 2 3\")", BigDecimal.ZERO, null},
+ {"number(\"1.1\")", BigDecimal.valueOf(1.1), null},
+
+ {"number(\"test\", null, null)", BigDecimal.ZERO, null},
+ {"number(\"1234\", null, null)", BigDecimal.valueOf(1234), null},
+ {"number(\"1 234 000\", \" \" , null)", BigDecimal.valueOf(1234000), null},
+ {"number(\"1,234\", \",\" , null)", BigDecimal.valueOf(1234), null},
+
};
return addAdditionalParametersForBothProfiles(cases, FEELDialect.BFEEL);
diff --git a/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/FEELFunctionsTest.java b/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/FEELFunctionsTest.java
index 08d3d22cd4..9b015ee264 100644
--- a/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/FEELFunctionsTest.java
+++ b/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/FEELFunctionsTest.java
@@ -314,6 +314,11 @@ public class FEELFunctionsTest extends BaseFEELTest {
{"range(\"[null..null]\")", null, FEELEvent.Severity.ERROR},
{"range(\"[null..2]\")", null, FEELEvent.Severity.ERROR},
{"range(\"[1..null]\")", null, FEELEvent.Severity.ERROR},
+
+ {"number(\"test\")", null, FEELEvent.Severity.ERROR},
+ {"number(\"1 2 3\")", null, FEELEvent.Severity.ERROR},
+ {"number(\"1.1\")", BigDecimal.valueOf(1.1), null},
+ {"number(1947)", BigDecimal.valueOf(1947), null},
};
return addAdditionalParameters(cases, false);
}
diff --git a/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/NumberFunctionTest.java b/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/NumberFunctionTest.java
index 6e8371d0f3..bfeede987d 100644
--- a/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/NumberFunctionTest.java
+++ b/kie-dmn/kie-dmn-feel/src/test/java/org/kie/dmn/feel/runtime/functions/NumberFunctionTest.java
@@ -121,4 +121,23 @@ class NumberFunctionTest {
void invokeGroupEqualsDecimal() {
FunctionTestUtil.assertResultError(numberFunction.invoke("1 000.1", ".", "."), InvalidParametersEvent.class);
}
+ @Test
+ void invokeSingleParamNumberNull() {
+ FunctionTestUtil.assertResultError(numberFunction.invoke(null), InvalidParametersEvent.class);
+ }
+
+ @Test
+ void invokeSingleParamIllegalNumber() {
+ FunctionTestUtil.assertResultError(numberFunction.invoke("test"), InvalidParametersEvent.class);
+ }
+
+ @Test
+ void invokeSingleParamNumberWithLeadingZeros() {
+ FunctionTestUtil.assertResult(numberFunction.invoke("00123"), BigDecimal.valueOf(123));
+ }
+
+ @Test
+ void invokeSingleParamNumberWithoutDecimalPart() {
+ FunctionTestUtil.assertResult(numberFunction.invoke("123"), BigDecimal.valueOf(123));
+ }
}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org