Add test for comparison used for primitives and Comparable
There's a subtle difference in behavior between comparing primitive Float/Double (comparison follows IEEE standard) and boxed Float/Double (comparison is a total order). Make sure this corner case is preserved.
This commit is contained in:
Vendored
+22
@@ -0,0 +1,22 @@
|
||||
// IGNORE_BACKEND: JS
|
||||
// WITH_RUNTIME
|
||||
|
||||
val DOUBLE_RANGE = 0.0 .. -0.0
|
||||
|
||||
val PZERO = 0.0 as Comparable<Any>
|
||||
val NZERO = -0.0 as Comparable<Any>
|
||||
val COMPARABLE_RANGE = PZERO .. NZERO
|
||||
|
||||
fun box(): String {
|
||||
if (!(0.0 in DOUBLE_RANGE)) return "fail 1 in Double"
|
||||
if (0.0 !in DOUBLE_RANGE) return "fail 1 !in Double"
|
||||
if (!(-0.0 in DOUBLE_RANGE)) return "fail 2 in Double"
|
||||
if (-0.0 !in DOUBLE_RANGE) return "fail 2 !in Double"
|
||||
|
||||
if (PZERO in COMPARABLE_RANGE) return "fail 3 in Comparable"
|
||||
if (!(PZERO !in COMPARABLE_RANGE)) return "fail 3 !in Comparable"
|
||||
if (NZERO in COMPARABLE_RANGE) return "fail 4 in Comparable"
|
||||
if (!(NZERO !in COMPARABLE_RANGE)) return "fail 4a !in Comparable"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user