summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamer AbdulRadi <tamer@abdulradi.com>2016-11-15 23:47:14 +0000
committerTamer Mohammed Abdul-Radi <tamerr@cakesolutions.net>2016-11-16 11:26:30 +0000
commit99b971e78cdd7f4fe4e36dc4278d0559cd3c1492 (patch)
tree00a957b3df428090811483422a54b4fedf596039
parent371bc2c7fcd128deb61e8249588138b7e2b0d2b0 (diff)
downloadscala-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.scala4
-rw-r--r--test/junit/scala/collection/immutable/RangeTest.scala30
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)
+ }
+}