Skip to content

Commit 0d46502

Browse files
committed
Align PMML tests with BigDecimal usage.
1 parent 2ad1e85 commit 0d46502

File tree

6 files changed

+40
-29
lines changed

6 files changed

+40
-29
lines changed

kie-server-parent/kie-server-tests/kie-server-integ-tests-drools/src/test/java/org/kie/server/integrationtests/drools/pmml/ApplyPmmlMultipleTimesIntegrationTest.java

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package org.kie.server.integrationtests.drools.pmml;
1818

19+
import java.math.BigDecimal;
20+
import java.math.MathContext;
1921
import java.util.HashMap;
2022
import java.util.Map;
2123

@@ -58,8 +60,8 @@ public static void buildAndDeployArtifacts() {
5860

5961
@Test
6062
public void testMultipleRegressionEvaluation() {
61-
double fld1 = 12.0;
62-
double fld2 = 25.0;
63+
BigDecimal fld1 = BigDecimal.valueOf(12.0);
64+
BigDecimal fld2 = BigDecimal.valueOf(25.0);
6365
String fld3 = "x";
6466
PMMLRequestData request = new PMMLRequestData("123", "LinReg");
6567
request.setSource("test_regression.pmml");
@@ -77,13 +79,13 @@ public void testMultipleRegressionEvaluation() {
7779
Object obj = resultHolder.getResultValue("Fld4", null);
7880
Assertions.assertThat(obj).isNotNull();
7981

80-
Double targetValue = resultHolder.getResultValue("Fld4", "value", Double.class)
82+
BigDecimal targetValue = resultHolder.getResultValue("Fld4", "value", BigDecimal.class)
8183
.orElse(null);
8284
Assertions.assertThat(targetValue).isNotNull();
8385
Assertions.assertThat(targetValue).isEqualTo(simpleRegressionResult(fld1, fld2, fld3));
8486

85-
fld1 = 5;
86-
fld2 = 8;
87+
fld1 = BigDecimal.valueOf(5);
88+
fld2 = BigDecimal.valueOf(8);
8789
fld3 = "y";
8890
request = new PMMLRequestData("123", "LinReg");
8991
request.addRequestParam("fld1", fld1);
@@ -100,24 +102,27 @@ public void testMultipleRegressionEvaluation() {
100102
obj = resultHolder.getResultValue("Fld4", null);
101103
Assertions.assertThat(obj).isNotNull();
102104

103-
targetValue = resultHolder.getResultValue("Fld4", "value", Double.class)
105+
targetValue = resultHolder.getResultValue("Fld4", "value", BigDecimal.class)
104106
.orElse(null);
105107
Assertions.assertThat(targetValue).isNotNull();
106108
Assertions.assertThat(targetValue).isEqualTo(simpleRegressionResult(fld1, fld2, fld3));
107109
}
108110

109-
private static double simpleRegressionResult(double fld1, double fld2, String fld3) {
110-
double result = 0.5 + 5 * fld1 * fld1 + 2 * fld2 + fld3Coefficient(fld3) + 0.4 * fld1 * fld2;
111-
result = 1.0 / (1.0 + Math.exp(-result));
112-
111+
private static BigDecimal simpleRegressionResult(BigDecimal fld1, BigDecimal fld2, String fld3) {
112+
BigDecimal result = fld1.multiply(fld1).multiply(BigDecimal.valueOf(5))
113+
.add(BigDecimal.valueOf(0.5))
114+
.add(fld2.multiply(BigDecimal.valueOf(2)))
115+
.add(fld3Coefficient(fld3))
116+
.add(fld1.multiply(fld2).multiply(BigDecimal.valueOf(0.4)));
117+
result = BigDecimal.ONE.divide(BigDecimal.ONE.add(BigDecimal.valueOf(Math.exp(-result.doubleValue()))));
113118
return result;
114119
}
115120

116-
private static double fld3Coefficient(String fld3) {
121+
private static BigDecimal fld3Coefficient(String fld3) {
117122
final Map<String, Double> fld3ValueMap = new HashMap<>();
118123
fld3ValueMap.put("x", -3.0);
119124
fld3ValueMap.put("y", 3.0);
120125

121-
return fld3ValueMap.getOrDefault(fld3, 0.0);
126+
return BigDecimal.valueOf(fld3ValueMap.getOrDefault(fld3, 0.0));
122127
}
123128
}

kie-server-parent/kie-server-tests/kie-server-integ-tests-drools/src/test/java/org/kie/server/integrationtests/drools/pmml/ApplyRegressionModelIntegrationTest.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333
import org.kie.server.integrationtests.shared.KieServerAssert;
3434
import org.kie.server.integrationtests.shared.KieServerDeployer;
3535

36+
import java.math.BigDecimal;
37+
3638
public class ApplyRegressionModelIntegrationTest extends PMMLApplyModelBaseTest {
3739

3840
private static final ReleaseId releaseId =
@@ -57,8 +59,8 @@ public static void buildAndDeployArtifacts() {
5759
public void testApplyPmmlRegressionModel() {
5860
final PMMLRequestData request = new PMMLRequestData("123", "LinReg");
5961
request.setSource("test_regression.pmml");
60-
request.addRequestParam("fld1", 12.0);
61-
request.addRequestParam("fld2", 25.0);
62+
request.addRequestParam("fld1", BigDecimal.valueOf(12.0));
63+
request.addRequestParam("fld2", BigDecimal.valueOf(25.0));
6264
request.addRequestParam("fld3", "x");
6365

6466
final ApplyPmmlModelCommand command = (ApplyPmmlModelCommand) ((CommandFactoryServiceImpl) commandsFactory)
@@ -71,9 +73,9 @@ public void testApplyPmmlRegressionModel() {
7173
final Object obj = resultHolder.getResultValue("Fld4", null);
7274
Assertions.assertThat(obj).isNotNull();
7375

74-
final Double targetValue = resultHolder.getResultValue("Fld4", "value", Double.class)
76+
final BigDecimal targetValue = resultHolder.getResultValue("Fld4", "value", BigDecimal.class)
7577
.orElse(null);
7678
Assertions.assertThat(targetValue).isNotNull();
77-
Assertions.assertThat(targetValue).isEqualTo(1.0);
79+
Assertions.assertThat(targetValue).isEqualTo(BigDecimal.valueOf(1.0));
7880
}
7981
}

kie-server-parent/kie-server-tests/kie-server-integ-tests-drools/src/test/java/org/kie/server/integrationtests/drools/pmml/ApplyScorecardModelIntegrationTest.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package org.kie.server.integrationtests.drools.pmml;
1717

1818
import java.io.File;
19+
import java.math.BigDecimal;
1920
import java.net.MalformedURLException;
2021
import java.net.URL;
2122
import java.util.ArrayList;
@@ -90,8 +91,8 @@ public void testApplyPmmlScorecard() {
9091
Thread.currentThread().setContextClassLoader(classLoader);
9192
PMMLRequestData request = new PMMLRequestData("123", "SimpleScorecard");
9293
request.setSource("test_scorecard_simple.pmml");
93-
request.addRequestParam("param1", 10.0);
94-
request.addRequestParam("param2", 15.0);
94+
request.addRequestParam("param1", BigDecimal.valueOf(10.0));
95+
request.addRequestParam("param2", BigDecimal.valueOf(15.0));
9596

9697
ApplyPmmlModelCommand command = (ApplyPmmlModelCommand) ((CommandFactoryServiceImpl) commandsFactory).newApplyPmmlModel(request);
9798

@@ -102,9 +103,9 @@ public void testApplyPmmlScorecard() {
102103
assertNotNull(resultHolder);
103104
assertEquals("OK", resultHolder.getResultCode());
104105

105-
double score = resultHolder.getResultValue("ScoreCard", "score", Double.class).get();
106-
Assertions.assertThat(score).isEqualTo(40.8);
107-
Map<String, Double> rankingMap = (Map<String, Double>) resultHolder.getResultValue("ScoreCard", "ranking");
106+
BigDecimal score = resultHolder.getResultValue("ScoreCard", "score", BigDecimal.class).get();
107+
Assertions.assertThat(score).isEqualTo(BigDecimal.valueOf(40.8));
108+
Map<String, BigDecimal> rankingMap = (Map<String, BigDecimal>) resultHolder.getResultValue("ScoreCard", "ranking");
108109
Assertions.assertThat(rankingMap.get("reasonCh1")).isEqualTo(5);
109110
Assertions.assertThat(rankingMap.get("reasonCh2")).isEqualTo(-6);
110111
logger.info("ApplyScorecardModelIntegrationTest#testApplyPmmlScorecard completed successfully");
@@ -115,8 +116,8 @@ public void testApplyPmmlScorecardInBatch() {
115116
Thread.currentThread().setContextClassLoader(classLoader);
116117
PMMLRequestData request = new PMMLRequestData("123", "SimpleScorecard");
117118
request.setSource("test_scorecard_simple.pmml");
118-
request.addRequestParam("param1", 10.0);
119-
request.addRequestParam("param2", 15.0);
119+
request.addRequestParam("param1", BigDecimal.valueOf(10.0));
120+
request.addRequestParam("param2", BigDecimal.valueOf(15.0));
120121

121122
List<Command<?>> cmds = new ArrayList<>();
122123
ApplyPmmlModelCommand command = (ApplyPmmlModelCommand) ((CommandFactoryServiceImpl) commandsFactory).newApplyPmmlModel(request);
@@ -129,9 +130,9 @@ public void testApplyPmmlScorecardInBatch() {
129130
assertNotNull(resultHolder);
130131
assertEquals("OK", resultHolder.getResultCode());
131132

132-
double score = resultHolder.getResultValue("ScoreCard", "score", Double.class).get();
133-
Assertions.assertThat(score).isEqualTo(40.8);
134-
Map<String, Double> rankingMap = (Map<String, Double>) resultHolder.getResultValue("ScoreCard", "ranking");
133+
BigDecimal score = resultHolder.getResultValue("ScoreCard", "score", BigDecimal.class).get();
134+
Assertions.assertThat(score).isEqualTo(BigDecimal.valueOf(40.8));
135+
Map<String, BigDecimal> rankingMap = (Map<String, BigDecimal>) resultHolder.getResultValue("ScoreCard", "ranking");
135136
Assertions.assertThat(rankingMap.get("reasonCh1")).isEqualTo(5);
136137
Assertions.assertThat(rankingMap.get("reasonCh2")).isEqualTo(-6);
137138
logger.info("ApplyScorecardModelIntegrationTest#testApplyPmmlScorecardInBatch completed successfully");

kie-server-parent/kie-server-tests/kie-server-integ-tests-pmml/src/test/java/org/kie/server/integrationtests/pmml/ApplyMiningModelIntegrationTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
package org.kie.server.integrationtests.pmml;
1717

18+
import java.math.BigDecimal;
1819
import java.util.HashMap;
1920
import java.util.Map;
2021

@@ -28,7 +29,7 @@ public class ApplyMiningModelIntegrationTest extends PMMLApplyModelBaseTest {
2829
private static final String MODEL_NAME = "MixedMining";
2930
private static final String FILE_NAME = "MiningModelMixed.pmml";
3031
private static final String TARGET_FIELD = "categoricalResult";
31-
private static final Object EXPECTED_RESULT = 2.3724999999999987;
32+
private static final BigDecimal EXPECTED_RESULT = BigDecimal.valueOf(2.3724999999999987);
3233
private static final Map<String, Object> INPUT_DATA;
3334
private static final long EXTENDED_TIMEOUT = 90000000L;
3435
// Test setup

kie-server-parent/kie-server-tests/kie-server-integ-tests-pmml/src/test/java/org/kie/server/integrationtests/pmml/ApplyRegressionModelIntegrationTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
package org.kie.server.integrationtests.pmml;
1717

18+
import java.math.BigDecimal;
1819
import java.util.HashMap;
1920
import java.util.Map;
2021

@@ -28,7 +29,7 @@ public class ApplyRegressionModelIntegrationTest extends PMMLApplyModelBaseTest
2829
private static final String MODEL_NAME = "LinReg";
2930
private static final String FILE_NAME = "test_regression.pmml";
3031
private static final String TARGET_FIELD = "fld4";
31-
private static final Object EXPECTED_RESULT = 1.0;
32+
private static final BigDecimal EXPECTED_RESULT = BigDecimal.valueOf(1.0);
3233
private static final Map<String, Object> INPUT_DATA;
3334
private static final long EXTENDED_TIMEOUT = 30000000L;
3435
// Test setup

kie-server-parent/kie-server-tests/kie-server-integ-tests-pmml/src/test/java/org/kie/server/integrationtests/pmml/ApplyScorecardModelIntegrationTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
package org.kie.server.integrationtests.pmml;
1717

18+
import java.math.BigDecimal;
1819
import java.util.HashMap;
1920
import java.util.Map;
2021

@@ -31,7 +32,7 @@ public class ApplyScorecardModelIntegrationTest extends PMMLApplyModelBaseTest {
3132
private static final String MODEL_NAME = "CompoundPredicateScorecard";
3233
private static final String FILE_NAME = "CompoundPredicateScorecard.pmml";
3334
private static final String TARGET_FIELD = "score";
34-
private static final Object EXPECTED_RESULT = -93.0;
35+
private static final BigDecimal EXPECTED_RESULT = BigDecimal.valueOf(-93.0);
3536
private static final Map<String, Object> INPUT_DATA;
3637
private static final long EXTENDED_TIMEOUT = 30000000L;
3738
// Test setup

0 commit comments

Comments
 (0)