Skip to content

Commit

Permalink
Compare Java and Scala BigDecimal with tolerance
Browse files Browse the repository at this point in the history
  • Loading branch information
nightscape authored and Martin Mauch committed May 19, 2020
1 parent c0646b6 commit 8d51eb2
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,13 @@ object DataFrameSuiteBase {
}

case d1: java.math.BigDecimal =>
if (d1.compareTo(o2.asInstanceOf[java.math.BigDecimal]) != 0) {
if (d1.subtract(o2.asInstanceOf[java.math.BigDecimal]).abs
.compareTo(new java.math.BigDecimal(tol)) > 0) {
return false
}

case d1: scala.math.BigDecimal =>
if ((d1 - o2.asInstanceOf[scala.math.BigDecimal]).abs > tol) {
return false
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,11 @@ object DataFrameSuiteBase {
if (abs(d1 - o2.asInstanceOf[Double]) > tol) return false

case d1: java.math.BigDecimal =>
if (d1.compareTo(o2.asInstanceOf[java.math.BigDecimal]) != 0) return false
if (d1.subtract(o2.asInstanceOf[java.math.BigDecimal]).abs
.compareTo(new java.math.BigDecimal(tol)) > 0) return false

case d1: scala.math.BigDecimal =>
if ((d1 - o2.asInstanceOf[scala.math.BigDecimal]).abs > tol) return false

case t1: Timestamp =>
if (abs(t1.getTime - o2.asInstanceOf[Timestamp].getTime) > tol) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,10 @@ class SampleDataFrameTest extends AnyFunSuite with DataFrameSuiteBase {
val row8 = Row(Timestamp.valueOf("2018-01-12 20:22:13"))
val row9 = Row(Timestamp.valueOf("2018-01-12 20:22:18"))
val row10 = Row(Timestamp.valueOf("2018-01-12 20:23:13"))
val row11 = Row(new java.math.BigDecimal(1.0))
val row11a = Row(new java.math.BigDecimal(1.0 + 1.0E-6))
val row12 = Row(scala.math.BigDecimal(1.0))
val row12a = Row(scala.math.BigDecimal(1.0 + 1.0E-6))
assert(false === approxEquals(row, row2, 1E-7))
assert(true === approxEquals(row, row2, 1E-5))
assert(true === approxEquals(row3, row3, 1E-5))
Expand All @@ -131,6 +135,8 @@ class SampleDataFrameTest extends AnyFunSuite with DataFrameSuiteBase {
assert(false === approxEquals(row9, row8, 3000))
assert(true === approxEquals(row9, row10, 60000))
assert(false === approxEquals(row9, row10, 53000))
assert(true === approxEquals(row11, row11a, 1.0E-6))
assert(true === approxEquals(row12, row12a, 1.0E-6))
}

test("verify hive function support") {
Expand Down

0 comments on commit 8d51eb2

Please sign in to comment.