diff options
author | Lukas Rytz <lukas.rytz@typesafe.com> | 2015-09-21 15:53:52 +0200 |
---|---|---|
committer | Lukas Rytz <lukas.rytz@typesafe.com> | 2015-09-21 15:53:52 +0200 |
commit | 7eadd684678611dc0f6710f9fdd14ff52bf8fb78 (patch) | |
tree | 4e625c025ecf8ce5a9a4043dc13c77e54ba884f1 /test/junit | |
parent | 7f1defca22b719b16814626b0218d12e24d5f149 (diff) | |
parent | 00d3f103b3db5530bfbf6b565843d0938a3cef48 (diff) | |
download | scala-7eadd684678611dc0f6710f9fdd14ff52bf8fb78.tar.gz scala-7eadd684678611dc0f6710f9fdd14ff52bf8fb78.tar.bz2 scala-7eadd684678611dc0f6710f9fdd14ff52bf8fb78.zip |
Merge pull request #4716 from Ichoran/issue/9388
SI-9388 Fix Range behavior around Int.MaxValue
Diffstat (limited to 'test/junit')
-rw-r--r-- | test/junit/scala/collection/immutable/RangeConsistencyTest.scala | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/test/junit/scala/collection/immutable/RangeConsistencyTest.scala b/test/junit/scala/collection/immutable/RangeConsistencyTest.scala index 135796979d..760498c162 100644 --- a/test/junit/scala/collection/immutable/RangeConsistencyTest.scala +++ b/test/junit/scala/collection/immutable/RangeConsistencyTest.scala @@ -148,4 +148,28 @@ class RangeConsistencyTest { val bdRange = bd(-10.0) until bd(0.0) by bd(4.5) assert( bdRange sameElements List(bd(-10.0), bd(-5.5), bd(-1.0)) ) } + + @Test + def test_SI9388() { + val possiblyNotDefaultNumeric = new scala.math.Numeric[Int] { + def fromInt(x: Int) = x + def minus(x: Int, y: Int): Int = x - y + def negate(x: Int): Int = -x + def plus(x: Int, y: Int): Int = x + y + def times(x: Int, y: Int): Int = x*y + def toDouble(x: Int): Double = x.toDouble + def toFloat(x: Int): Float = x.toFloat + def toInt(x: Int): Int = x + def toLong(x: Int): Long = x.toLong + def compare(x: Int, y: Int) = x compare y + } + val r = (Int.MinValue to Int.MaxValue by (1<<23)) + val nr = NumericRange(Int.MinValue, Int.MaxValue, 1 << 23) + assert({ var i = 0; r.foreach(_ => i += 1); i } == 512) + assert({ var i = 0; nr.foreach(_ => i += 1); i } == 512) + assert(r.sum == Int.MinValue) + assert(nr.sum == Int.MinValue) + assert(r.sum(possiblyNotDefaultNumeric) == Int.MinValue) + assert(nr.sum(possiblyNotDefaultNumeric) == Int.MinValue) + } } |