[SPARK-25249][CORE][TEST] add a unit test for OpenHashMap
## What changes were proposed in this pull request? This PR adds a unit test for OpenHashMap , this can help developers to distinguish between the 0/0.0/0L and null ## How was this patch tested? Closes #22241 from 10110346/openhashmap. Authored-by: liuxian <liu.xian3@zte.com.cn> Signed-off-by: Sean Owen <sean.owen@databricks.com>
This commit is contained in:
parent
6193a202aa
commit
381a967a76
|
@ -194,4 +194,50 @@ class OpenHashMapSuite extends SparkFunSuite with Matchers {
|
||||||
val numInvalidValues = map.iterator.count(_._2 == 0)
|
val numInvalidValues = map.iterator.count(_._2 == 0)
|
||||||
assertResult(0)(numInvalidValues)
|
assertResult(0)(numInvalidValues)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
test("distinguish between the 0/0.0/0L and null") {
|
||||||
|
val specializedMap1 = new OpenHashMap[String, Long]
|
||||||
|
specializedMap1("a") = null.asInstanceOf[Long]
|
||||||
|
specializedMap1("b") = 0L
|
||||||
|
assert(specializedMap1.contains("a"))
|
||||||
|
assert(!specializedMap1.contains("c"))
|
||||||
|
// null.asInstance[Long] will return 0L
|
||||||
|
assert(specializedMap1("a") === 0L)
|
||||||
|
assert(specializedMap1("b") === 0L)
|
||||||
|
// If the data type is in @specialized annotation, and
|
||||||
|
// the `key` is not be contained, the `map(key)` will return 0
|
||||||
|
assert(specializedMap1("c") === 0L)
|
||||||
|
|
||||||
|
val specializedMap2 = new OpenHashMap[String, Double]
|
||||||
|
specializedMap2("a") = null.asInstanceOf[Double]
|
||||||
|
specializedMap2("b") = 0.toDouble
|
||||||
|
assert(specializedMap2.contains("a"))
|
||||||
|
assert(!specializedMap2.contains("c"))
|
||||||
|
// null.asInstance[Double] will return 0.0
|
||||||
|
assert(specializedMap2("a") === 0.0)
|
||||||
|
assert(specializedMap2("b") === 0.0)
|
||||||
|
assert(specializedMap2("c") === 0.0)
|
||||||
|
|
||||||
|
val map1 = new OpenHashMap[String, Short]
|
||||||
|
map1("a") = null.asInstanceOf[Short]
|
||||||
|
map1("b") = 0.toShort
|
||||||
|
assert(map1.contains("a"))
|
||||||
|
assert(!map1.contains("c"))
|
||||||
|
// null.asInstance[Short] will return 0
|
||||||
|
assert(map1("a") === 0)
|
||||||
|
assert(map1("b") === 0)
|
||||||
|
// If the data type is not in @specialized annotation, and
|
||||||
|
// the `key` is not be contained, the `map(key)` will return null
|
||||||
|
assert(map1("c") === null)
|
||||||
|
|
||||||
|
val map2 = new OpenHashMap[String, Float]
|
||||||
|
map2("a") = null.asInstanceOf[Float]
|
||||||
|
map2("b") = 0.toFloat
|
||||||
|
assert(map2.contains("a"))
|
||||||
|
assert(!map2.contains("c"))
|
||||||
|
// null.asInstance[Float] will return 0.0
|
||||||
|
assert(map2("a") === 0.0)
|
||||||
|
assert(map2("b") === 0.0)
|
||||||
|
assert(map2("c") === null)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue