summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@gmail.com>2016-12-12 16:29:49 +0100
committerGitHub <noreply@github.com>2016-12-12 16:29:49 +0100
commit0a3e2b62bd7dc56d9283c0b2480ccd0c03eb35b3 (patch)
treea7b6ce3bdaf16167fb4b7e5986c721f725b095bf
parent8b872daacbb41dc9947ad181ba79e660c55a6683 (diff)
parent5370f271dfcd82ae3fb6675e7f055430a281381e (diff)
downloadscala-0a3e2b62bd7dc56d9283c0b2480ccd0c03eb35b3.tar.gz
scala-0a3e2b62bd7dc56d9283c0b2480ccd0c03eb35b3.tar.bz2
scala-0a3e2b62bd7dc56d9283c0b2480ccd0c03eb35b3.zip
Merge pull request #5531 from tabdulradi/SI-10060
SI-10060 Fixes NumricRange.max bug on empty ranges
-rw-r--r--src/library/scala/collection/immutable/NumericRange.scala4
-rw-r--r--test/junit/scala/collection/immutable/RangeTest.scala42
2 files changed, 44 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..a0bef72bc9
--- /dev/null
+++ b/test/junit/scala/collection/immutable/RangeTest.scala
@@ -0,0 +1,42 @@
+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_numeric_range_min_max(): Unit = {
+ assertEquals(Range.Long.inclusive(1, 9, 1).min, 1)
+ assertEquals(Range.Long.inclusive(1, 9, 1).max, 9)
+ assertEquals(Range.Long.inclusive(9, 1, -1).min, 1)
+ assertEquals(Range.Long.inclusive(9, 1, -1).max, 9)
+ assertThrows[java.util.NoSuchElementException](Range.Long.inclusive(1, 9, -1).min)
+ assertThrows[java.util.NoSuchElementException](Range.Long.inclusive(1, 9, -1).max)
+ assertThrows[java.util.NoSuchElementException](Range.Long.inclusive(9, 1, 1).min)
+ assertThrows[java.util.NoSuchElementException](Range.Long.inclusive(9, 1, 1).max)
+
+ assertEquals(Range.Int.inclusive(1, 9, 1).min, 1)
+ assertEquals(Range.Int.inclusive(1, 9, 1).max, 9)
+ assertEquals(Range.Int.inclusive(9, 1, -1).min, 1)
+ assertEquals(Range.Int.inclusive(9, 1, -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)
+ assertEquals(Range.inclusive(9, 1, -1).min, 1)
+ assertEquals(Range.inclusive(9, 1, -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)
+ }
+}