Skip to content

Commit

Permalink
fix(engine): transform big number values (#133)
Browse files Browse the repository at this point in the history
* transform a number that is greater than Long.MaxValue into a Double instead of a Long

closes #90
  • Loading branch information
saig0 authored Jun 5, 2020
1 parent c6a3ae9 commit dd62332
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ class JavaValueMapper extends CustomValueMapper {

case ValNumber(number) =>
Some(
if (number.isWhole) {
if (number.isWhole && number.isValidLong) {
number.longValue: java.lang.Long
} else {
number.doubleValue: java.lang.Double
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,38 @@ class JavaValueMapperTest extends FlatSpec with Matchers {
ValueMapper.CompositeValueMapper(
List(DefaultValueMapper.instance, new JavaValueMapper()))

"The JavaValueMapper" should "return number as Java Double" in {
"The JavaValueMapper" should "return whole number as java.lang.Long" in {

valueMapper.unpackVal(ValNumber(2)) should be(new java.lang.Long(2))
}

it should "return floating point number as java.lang.Double" in {

valueMapper.unpackVal(ValNumber(2.4)) should be(new java.lang.Double(2.4))
}

it should "return list as Java List" in {
it should "return Long.MAX_VALUE as java.lang.Long" in {

valueMapper.unpackVal(ValNumber(Long.MaxValue)) should be(
java.lang.Long.MAX_VALUE
)
}

it should "return Double.MAX_VALUE as java.lang.Double" in {

valueMapper.unpackVal(ValNumber(Double.MaxValue)) should be(
java.lang.Double.MAX_VALUE
)
}

it should "return Float.MAX_VALUE as java.lang.Double" in {

valueMapper.unpackVal(ValNumber(Float.MaxValue)) should be(
new java.lang.Double(Float.MaxValue)
)
}

it should "return list as java.util.List" in {

val list = new java.util.ArrayList[String]
list.add("a")
Expand All @@ -43,7 +69,7 @@ class JavaValueMapperTest extends FlatSpec with Matchers {
list)
}

it should "return context as Java Map" in {
it should "return context as java.util.Map" in {

val map = new java.util.HashMap[String, String]
map.put("x", "1")
Expand Down

0 comments on commit dd62332

Please sign in to comment.