diff options
author | Tamer AbdulRadi <tamer@abdulradi.com> | 2016-11-15 23:47:14 +0000 |
---|---|---|
committer | Tamer Mohammed Abdul-Radi <tamerr@cakesolutions.net> | 2016-11-16 11:26:30 +0000 |
commit | 99b971e78cdd7f4fe4e36dc4278d0559cd3c1492 (patch) | |
tree | 00a957b3df428090811483422a54b4fedf596039 | |
parent | 371bc2c7fcd128deb61e8249588138b7e2b0d2b0 (diff) | |
download | scala-99b971e78cdd7f4fe4e36dc4278d0559cd3c1492.tar.gz scala-99b971e78cdd7f4fe4e36dc4278d0559cd3c1492.tar.bz2 scala-99b971e78cdd7f4fe4e36dc4278d0559cd3c1492.zip |
SI-10060 Fixes NumericRange.max bug on empty ranges
-rw-r--r-- | src/library/scala/collection/immutable/NumericRange.scala | 4 | ||||
-rw-r--r-- | test/junit/scala/collection/immutable/RangeTest.scala | 30 |
2 files changed, 32 insertions, 2 deletions
diff --git a/src/library/scala/collection/immutable/NumericRange.scala b/src/library/scala/collection/immutable/NumericRange.scala index fdf50960a3..ef3fa99971 100644 --- a/src/library/scala/collection/immutable/NumericRange.scala +++ b/src/library/scala/collection/immutable/NumericRange.scala @@ -115,14 +115,14 @@ extends AbstractSeq[T] with IndexedSeq[T] with Serializable { override def min[T1 >: T](implicit ord: Ordering[T1]): T = if (ord eq defaultOrdering(num)) { - if (num.signum(step) > 0) start + if (num.signum(step) > 0) head else last } else super.min(ord) override def max[T1 >: T](implicit ord: Ordering[T1]): T = if (ord eq defaultOrdering(num)) { if (num.signum(step) > 0) last - else start + else head } else super.max(ord) // Motivated by the desire for Double ranges with BigDecimal precision, diff --git a/test/junit/scala/collection/immutable/RangeTest.scala b/test/junit/scala/collection/immutable/RangeTest.scala new file mode 100644 index 0000000000..f945db598d --- /dev/null +++ b/test/junit/scala/collection/immutable/RangeTest.scala @@ -0,0 +1,30 @@ +package scala.collection.immutable + +import org.junit.{Assert, Test} +import org.junit.runner.RunWith +import org.junit.runners.JUnit4 +import scala.tools.testing.AssertUtil + +@RunWith(classOf[JUnit4]) +class RangeTest { + import Assert._ + import AssertUtil._ + + @Test + def test_SI10060_long_max(): Unit = { + assertEquals(Range.Int.inclusive(1, 9, 1).min, 1) + assertEquals(Range.Int.inclusive(1, 9, 1).max, 9) + assertThrows[java.util.NoSuchElementException](Range.Int.inclusive(1, 9, -1).min) + assertThrows[java.util.NoSuchElementException](Range.Int.inclusive(1, 9, -1).max) + assertThrows[java.util.NoSuchElementException](Range.Int.inclusive(9, 1, 1).min) + assertThrows[java.util.NoSuchElementException](Range.Int.inclusive(9, 1, 1).max) + + + assertEquals(Range.inclusive(1, 9, 1).min, 1) + assertEquals(Range.inclusive(1, 9, 1).max, 9) + assertThrows[java.util.NoSuchElementException](Range.inclusive(1, 9, -1).min) + assertThrows[java.util.NoSuchElementException](Range.inclusive(1, 9, -1).max) + assertThrows[java.util.NoSuchElementException](Range.inclusive(9, 1, 1).min) + assertThrows[java.util.NoSuchElementException](Range.inclusive(9, 1, 1).max) + } +} |