Skip to content

Commit f317383

Browse files
authored
#435 Fix zero with scale to boolean (3.1.x) (#438)
* Fixes number to boolean conversion
1 parent 4449532 commit f317383

File tree

4 files changed

+11
-1
lines changed

4 files changed

+11
-1
lines changed

src/main/java/com/ezylang/evalex/data/EvaluationValue.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,7 @@ public String getStringValue() {
374374
public Boolean getBooleanValue() {
375375
switch (getDataType()) {
376376
case NUMBER:
377-
return !value.equals(BigDecimal.ZERO);
377+
return getNumberValue().compareTo(BigDecimal.ZERO) != 0;
378378
case BOOLEAN:
379379
return (Boolean) value;
380380
case STRING:

src/test/java/com/ezylang/evalex/data/conversion/BooleanConverterTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,4 +56,11 @@ void testCanNotConvert() {
5656
assertThat(converter.canConvert("true")).isFalse();
5757
assertThat(converter.canConvert(new BigDecimal(1))).isFalse();
5858
}
59+
60+
@Test
61+
void testNumberToBoolean() {
62+
EvaluationValue value = EvaluationValue.numberValue(new BigDecimal("0.0"));
63+
64+
assertThat(value.getBooleanValue()).isFalse();
65+
}
5966
}

src/test/java/com/ezylang/evalex/operators/booleans/InfixAndOperatorTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class InfixAndOperatorTest extends BaseEvaluationTest {
3030
"1&&1 : true",
3131
"1&&2 : true",
3232
"0&&1 : false",
33+
"0.0&&1 : false",
3334
"22&&33 : true",
3435
"\"true\"&&\"true\" : true",
3536
"\"true\"&&\"false\" : false",

src/test/java/com/ezylang/evalex/operators/booleans/InfixOrOperatorTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@ class InfixOrOperatorTest extends BaseEvaluationTest {
3030
"1||1 : true",
3131
"1||2 : true",
3232
"0||1 : true",
33+
"0.0||1.0 : true",
3334
"0||0 : false",
35+
"0.0||0.0 : false",
3436
"22||33 : true",
3537
"\"true\"||\"true\" : true",
3638
"\"true\"||\"false\" : true",

0 commit comments

Comments
 (0)