Introduce ClosedComparableRange interface which inherits ClosedRange to provide special comparison operation for double and float.

This commit is contained in:
Ilya Gorbunov
2016-11-25 07:14:14 +03:00
parent 5773594412
commit d60fc7d9a8
6 changed files with 71 additions and 25 deletions
@@ -84,6 +84,8 @@ class CoercionTest {
assertFails { 1.0.coerceIn(1.0, 0.0) }
assertFails { 1.0.coerceIn(1.0..0.0) }
assertTrue(0.0 == 0.0.coerceIn(0.0, -0.0))
assertTrue(0.0 == 0.0.coerceIn(0.0..-0.0))
}
@Test
+18 -12
View File
@@ -197,14 +197,18 @@ public class RangeTest {
assertTrue(1.toLong() in range)
assertTrue(1.toFloat() in range)
val specialRange = 0.0..-0.0
assertFalse(specialRange.isEmpty())
assertTrue(-0.0 in specialRange)
val normalSpecialRange = -0.0..0.0
assertEquals(specialRange, normalSpecialRange)
assertEquals(specialRange.hashCode(), normalSpecialRange.hashCode())
val zeroRange = 0.0..-0.0
assertFalse(zeroRange.isEmpty())
assertTrue(-0.0 in zeroRange)
assertTrue(-0.0F in zeroRange)
val normalZeroRange = -0.0..0.0
assertEquals(zeroRange, normalZeroRange)
assertEquals(zeroRange.hashCode(), normalZeroRange.hashCode())
val nanRange = 0.0..Double.NaN
assertFalse(1.0 in nanRange)
assertFalse(Double.NaN in nanRange)
assertFalse(Float.NaN in nanRange)
assertTrue(nanRange.isEmpty())
val halfInfRange = 0.0..Double.POSITIVE_INFINITY
@@ -241,13 +245,15 @@ public class RangeTest {
assertFalse(Double.MAX_VALUE in range)
val specialRange = 0.0F..-0.0F
assertFalse(specialRange.isEmpty())
assertTrue(-0.0F in specialRange)
val normalSpecialRange = -0.0F..0.0F
assertEquals(specialRange, normalSpecialRange)
assertEquals(specialRange.hashCode(), normalSpecialRange.hashCode())
val zeroRange = 0.0F..-0.0F
assertFalse(zeroRange.isEmpty())
assertTrue(-0.0F in zeroRange)
val normalZeroRange = -0.0F..0.0F
assertEquals(zeroRange, normalZeroRange)
assertEquals(zeroRange.hashCode(), normalZeroRange.hashCode())
val nanRange = 0.0F..Float.NaN
assertFalse(1.0F in nanRange)
assertFalse(Float.NaN in nanRange)
assertTrue(nanRange.isEmpty())