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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to