JS: correct Double and Float conversions to Int (KT-8374 fixed)

This commit is contained in:
Anton Bannykh
2017-10-05 15:11:01 +03:00
parent a52d719943
commit b5d32f420d
13 changed files with 126 additions and 39 deletions
@@ -0,0 +1,56 @@
// WITH_RUNTIME
import kotlin.test.assertEquals
fun box(): String {
assertEquals(-2147483648, Float.NEGATIVE_INFINITY.toInt())
assertEquals(-2147483648, (-Float.MAX_VALUE).toInt())
assertEquals(-1, (-1.9f).toInt())
assertEquals(0, (-0.0f).toInt())
assertEquals(0, (-Float.MIN_VALUE).toInt())
assertEquals(0, 0.0f.toInt())
assertEquals(0, Float.NaN.toInt())
assertEquals(0, Float.MIN_VALUE.toInt())
assertEquals(0, 0.9f.toInt())
assertEquals(2147483647, Float.MAX_VALUE.toInt())
assertEquals(2147483647, Float.POSITIVE_INFINITY.toInt())
assertEquals(-2147483648, Double.NEGATIVE_INFINITY.toInt())
assertEquals(-2147483648, (-Double.MAX_VALUE).toInt())
assertEquals(-2147483648, (-2147483649.0).toInt())
assertEquals(-2147483648, (-2147483648.0).toInt())
assertEquals(-2147483647, (-2147483647.9).toInt())
assertEquals(-1, (-1.9).toInt())
assertEquals(0, (-0.0).toInt())
assertEquals(0, (-Double.MIN_VALUE).toInt())
assertEquals(0, 0.0.toInt())
assertEquals(0, Double.NaN.toInt())
assertEquals(0, Double.MIN_VALUE.toInt())
assertEquals(0, 0.9.toInt())
assertEquals(2147483646, 2147483646.9.toInt())
assertEquals(2147483647, 2147483647.0.toInt())
assertEquals(2147483647, 2147483648.0.toInt())
assertEquals(2147483647, Double.MAX_VALUE.toInt())
assertEquals(2147483647, Double.POSITIVE_INFINITY.toInt())
for (d in doubleArrayOf(Double.NEGATIVE_INFINITY, -Double.MAX_VALUE,
-2147483649.0, -2147483648.0, -2147483647.0,
-65536.0, -65535.0, -65534.0,
-1.5, -Double.MIN_VALUE,
-0.0, 0.0,
Double.MIN_VALUE, 1.5,
65534.0, 65535.0, 65536.0,
2147483647.0, 2147483648.0, 2147483649.0,
Double.MAX_VALUE, Double.POSITIVE_INFINITY)) {
assertEquals(d.toInt().toByte(), d.toByte())
assertEquals(d.toInt().toShort(), d.toShort())
assertEquals(d.toInt().toChar(), d.toChar())
val f = d.toFloat()
assertEquals(f.toInt().toByte(), f.toByte())
assertEquals(f.toInt().toShort(), f.toShort())
assertEquals(f.toInt().toChar(), f.toChar())
}
return "OK"
}