diff --git a/libraries/stdlib/test/language/RangeIterationTest.kt b/libraries/stdlib/test/language/RangeIterationTest.kt index 2677c350abd..d7251c454bb 100644 --- a/libraries/stdlib/test/language/RangeIterationTest.kt +++ b/libraries/stdlib/test/language/RangeIterationTest.kt @@ -2,6 +2,7 @@ package language import kotlin.test.assertEquals import org.junit.Test as test +import java.lang as j // Test data for codegen is generated from this class. If you change it, rerun GenerateTests public class RangeIterationTest { @@ -253,4 +254,30 @@ public class RangeIterationTest { doTest((5.8.toFloat() downTo 4.0.toFloat() step 0.5).reversed(), 4.0.toFloat(), 5.8.toFloat(), 0.5.toFloat(), listOf(4.0, 4.5, 5.0, 5.5)) } + + test fun infiniteSteps() { + doTest(0.0..5.0 step j.Double.POSITIVE_INFINITY, 0.0, 5.0, j.Double.POSITIVE_INFINITY, listOf(0.0)) + doTest(0.0.toFloat()..5.0.toFloat() step j.Float.POSITIVE_INFINITY, 0.0.toFloat(), 5.0.toFloat(), j.Float.POSITIVE_INFINITY, + listOf(0.0)) + doTest(5.0 downTo 0.0 step j.Double.POSITIVE_INFINITY, 5.0, 0.0, j.Double.NEGATIVE_INFINITY, listOf(5.0)) + doTest(5.0.toFloat() downTo 0.0.toFloat() step j.Float.POSITIVE_INFINITY, 5.0.toFloat(), 0.0.toFloat(), j.Float.NEGATIVE_INFINITY, + listOf(5.0)) + } + + test fun nanEnds() { + doTest(j.Double.NaN..5.0, j.Double.NaN, 5.0, 1.0, listOf()) + doTest(j.Float.NaN.toFloat()..5.0.toFloat(), j.Float.NaN, 5.0.toFloat(), 1.0.toFloat(), listOf()) + doTest(j.Double.NaN downTo 0.0, j.Double.NaN, 0.0, -1.0, listOf()) + doTest(j.Float.NaN.toFloat() downTo 0.0.toFloat(), j.Float.NaN, 0.0.toFloat(), -1.0.toFloat(), listOf()) + + doTest(0.0..j.Double.NaN, 0.0, j.Double.NaN, 1.0, listOf()) + doTest(0.0.toFloat()..j.Float.NaN, 0.0.toFloat(), j.Float.NaN, 1.0.toFloat(), listOf()) + doTest(5.0 downTo j.Double.NaN, 5.0, j.Double.NaN, -1.0, listOf()) + doTest(5.0.toFloat() downTo j.Float.NaN, 5.0.toFloat(), j.Float.NaN, -1.0.toFloat(), listOf()) + + doTest(j.Double.NaN..j.Double.NaN, j.Double.NaN, j.Double.NaN, 1.0, listOf()) + doTest(j.Float.NaN..j.Float.NaN, j.Float.NaN, j.Float.NaN, 1.0.toFloat(), listOf()) + doTest(j.Double.NaN downTo j.Double.NaN, j.Double.NaN, j.Double.NaN, -1.0, listOf()) + doTest(j.Float.NaN downTo j.Float.NaN, j.Float.NaN, j.Float.NaN, -1.0.toFloat(), listOf()) + } } \ No newline at end of file