Fix floating point comparison generation for range literals

This commit is contained in:
Dmitry Petrov
2017-11-13 18:09:20 +03:00
parent 354d54aef6
commit 4193fae9fa
10 changed files with 216 additions and 14 deletions
@@ -0,0 +1,49 @@
// WITH_RUNTIME
import kotlin.test.*
fun box(): String {
val NAN = Double.NaN
val M_NAN = -Double.NaN
val range1 = 0.0 .. NAN
val range2 = M_NAN .. 0.0
val range3 = M_NAN .. NAN
assertEquals(1.0 in range1, 1.0 in 0.0 .. NAN)
assertEquals(-1.0 in range1, -1.0 in 0.0 .. NAN)
assertEquals(0.0 in range1, 0.0 in 0.0 .. NAN)
assertEquals(NAN in range1, NAN in 0.0 .. NAN)
assertEquals(M_NAN in range1, M_NAN in 0.0 .. NAN)
assertEquals(1.0 !in range1, 1.0 !in 0.0 .. NAN)
assertEquals(-1.0 !in range1, -1.0 !in 0.0 .. NAN)
assertEquals(0.0 !in range1, 0.0 !in 0.0 .. NAN)
assertEquals(NAN !in range1, NAN !in 0.0 .. NAN)
assertEquals(M_NAN !in range1, M_NAN !in 0.0 .. NAN)
assertEquals(1.0 in range2, 1.0 in M_NAN .. 0.0)
assertEquals(-1.0 in range2, -1.0 in M_NAN .. 0.0)
assertEquals(0.0 in range2, 0.0 in M_NAN .. 0.0)
assertEquals(NAN in range2, NAN in M_NAN .. 0.0)
assertEquals(M_NAN in range2, M_NAN in M_NAN .. 0.0)
assertEquals(1.0 !in range2, 1.0 !in M_NAN .. 0.0)
assertEquals(-1.0 !in range2, -1.0 !in M_NAN .. 0.0)
assertEquals(0.0 !in range2, 0.0 !in M_NAN .. 0.0)
assertEquals(NAN !in range2, NAN !in M_NAN .. 0.0)
assertEquals(M_NAN !in range2, M_NAN !in M_NAN .. 0.0)
assertEquals(1.0 in range3, 1.0 in M_NAN .. NAN)
assertEquals(-1.0 in range3, -1.0 in M_NAN .. NAN)
assertEquals(0.0 in range3, 0.0 in M_NAN .. NAN)
assertEquals(NAN in range3, NAN in M_NAN .. NAN)
assertEquals(M_NAN in range3, M_NAN in M_NAN .. NAN)
assertEquals(1.0 !in range3, 1.0 !in M_NAN .. NAN)
assertEquals(-1.0 !in range3, -1.0 !in M_NAN .. NAN)
assertEquals(0.0 !in range3, 0.0 !in M_NAN .. NAN)
assertEquals(NAN !in range3, NAN !in M_NAN .. NAN)
assertEquals(M_NAN !in range3, M_NAN !in M_NAN .. NAN)
return "OK"
}