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:
Dmitry Petrov
2017-06-30 15:29:14 +03:00
parent fd402cb76c
commit a3cd4f415a
5 changed files with 52 additions and 0 deletions
@@ -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"
}