From 7b80b651dac9acca4ee2148d506f5eb1c66525a2 Mon Sep 17 00:00:00 2001 From: Taichi Yamakawa Date: Fri, 19 Mar 2021 20:26:08 +0900 Subject: [PATCH 1/5] Nil.reduce throws UnsupportedOperationException instead of NoSuchElementException --- .../scala/scala/collection/parallel/ParIterableLike.scala | 2 ++ .../scala/collection/parallel/mutable/ParArrayTest.scala | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/core/src/main/scala/scala/collection/parallel/ParIterableLike.scala b/core/src/main/scala/scala/collection/parallel/ParIterableLike.scala index 4ab1c0f5..7e22d60d 100644 --- a/core/src/main/scala/scala/collection/parallel/ParIterableLike.scala +++ b/core/src/main/scala/scala/collection/parallel/ParIterableLike.scala @@ -358,6 +358,8 @@ extends IterableOnce[T @uncheckedVariance] * if this $coll is empty. */ def reduce[U >: T](op: (U, U) => U): U = { + if (isEmpty) throw new UnsupportedOperationException("empty.reduce") + tasksupport.executeAndWaitResult(new Reduce(op, splitter)).get } diff --git a/junit/src/test/scala/scala/collection/parallel/mutable/ParArrayTest.scala b/junit/src/test/scala/scala/collection/parallel/mutable/ParArrayTest.scala index 458951ae..3c2d0649 100644 --- a/junit/src/test/scala/scala/collection/parallel/mutable/ParArrayTest.scala +++ b/junit/src/test/scala/scala/collection/parallel/mutable/ParArrayTest.scala @@ -85,6 +85,11 @@ class ParArrayTest extends scala.collection.concurrent.ctries_old.Spec { assert( ParArray(1,2,3,4,5).reduce(_+_) == 15 ) } + @Test + def `empty reduce`: Unit = { + evaluating { ParArray.empty[Int].reduce(_+_) }.shouldProduce[UnsupportedOperationException]() + } + @Test def `simple count`: Unit = { assert( ParArray[Int]().count(_ > 7) == 0 ) From c1e9bc9cfeab3f77d1b378565f278a7d80cac319 Mon Sep 17 00:00:00 2001 From: Taichi Yamakawa Date: Fri, 19 Mar 2021 20:39:27 +0900 Subject: [PATCH 2/5] Nil.min throws UnsupportedOperationException instead of NoSuchElementException --- .../scala/scala/collection/parallel/ParIterableLike.scala | 2 ++ .../scala/collection/parallel/mutable/ParArrayTest.scala | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/core/src/main/scala/scala/collection/parallel/ParIterableLike.scala b/core/src/main/scala/scala/collection/parallel/ParIterableLike.scala index 7e22d60d..696c9cf3 100644 --- a/core/src/main/scala/scala/collection/parallel/ParIterableLike.scala +++ b/core/src/main/scala/scala/collection/parallel/ParIterableLike.scala @@ -465,6 +465,8 @@ extends IterableOnce[T @uncheckedVariance] } def min[U >: T](implicit ord: Ordering[U]): T = { + if (isEmpty) throw new UnsupportedOperationException("empty.min") + tasksupport.executeAndWaitResult(new Min(ord, splitter)).get.asInstanceOf[T] } diff --git a/junit/src/test/scala/scala/collection/parallel/mutable/ParArrayTest.scala b/junit/src/test/scala/scala/collection/parallel/mutable/ParArrayTest.scala index 3c2d0649..f056f06e 100644 --- a/junit/src/test/scala/scala/collection/parallel/mutable/ParArrayTest.scala +++ b/junit/src/test/scala/scala/collection/parallel/mutable/ParArrayTest.scala @@ -132,4 +132,10 @@ class ParArrayTest extends scala.collection.concurrent.ctries_old.Spec { def `simple map test`: Unit = { assert(ParArray(1,2,3,4,5).map( (_:Int) * 10 ) == ParArray(10,20,30,40,50)) } + + @Test + def `empty min`: Unit = { + evaluating { ParArray.empty[Int].min }.shouldProduce[UnsupportedOperationException]() + } + } From bd8509ba26fefd044545a5c90baaa9c3ed8f80ec Mon Sep 17 00:00:00 2001 From: Taichi Yamakawa Date: Fri, 19 Mar 2021 20:40:34 +0900 Subject: [PATCH 3/5] Nil.min throws UnsupportedOperationException instead of NoSuchElementException --- .../scala/scala/collection/parallel/ParIterableLike.scala | 2 ++ .../scala/collection/parallel/mutable/ParArrayTest.scala | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/core/src/main/scala/scala/collection/parallel/ParIterableLike.scala b/core/src/main/scala/scala/collection/parallel/ParIterableLike.scala index 696c9cf3..4190e6e9 100644 --- a/core/src/main/scala/scala/collection/parallel/ParIterableLike.scala +++ b/core/src/main/scala/scala/collection/parallel/ParIterableLike.scala @@ -471,6 +471,8 @@ extends IterableOnce[T @uncheckedVariance] } def max[U >: T](implicit ord: Ordering[U]): T = { + if (isEmpty) throw new UnsupportedOperationException("empty.max") + tasksupport.executeAndWaitResult(new Max(ord, splitter)).get.asInstanceOf[T] } diff --git a/junit/src/test/scala/scala/collection/parallel/mutable/ParArrayTest.scala b/junit/src/test/scala/scala/collection/parallel/mutable/ParArrayTest.scala index f056f06e..bccc789b 100644 --- a/junit/src/test/scala/scala/collection/parallel/mutable/ParArrayTest.scala +++ b/junit/src/test/scala/scala/collection/parallel/mutable/ParArrayTest.scala @@ -138,4 +138,9 @@ class ParArrayTest extends scala.collection.concurrent.ctries_old.Spec { evaluating { ParArray.empty[Int].min }.shouldProduce[UnsupportedOperationException]() } + @Test + def `empty max`: Unit = { + evaluating { ParArray.empty[Int].max }.shouldProduce[UnsupportedOperationException]() + } + } From b5e89c0ef3ed5d067de7b9a4c60d7f57f840439e Mon Sep 17 00:00:00 2001 From: Taichi Yamakawa Date: Fri, 19 Mar 2021 21:13:29 +0900 Subject: [PATCH 4/5] Test whether Nil.minBy throws UnsupportedOperationException --- .../scala/collection/parallel/mutable/ParArrayTest.scala | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/junit/src/test/scala/scala/collection/parallel/mutable/ParArrayTest.scala b/junit/src/test/scala/scala/collection/parallel/mutable/ParArrayTest.scala index bccc789b..ca3f373b 100644 --- a/junit/src/test/scala/scala/collection/parallel/mutable/ParArrayTest.scala +++ b/junit/src/test/scala/scala/collection/parallel/mutable/ParArrayTest.scala @@ -143,4 +143,9 @@ class ParArrayTest extends scala.collection.concurrent.ctries_old.Spec { evaluating { ParArray.empty[Int].max }.shouldProduce[UnsupportedOperationException]() } + @Test + def `empty minBy`: Unit = { + evaluating { ParArray.empty[String].minBy(_.length) }.shouldProduce[UnsupportedOperationException]() + } + } From e578b7783bd3be6bc81a3993fc652c46163fec9f Mon Sep 17 00:00:00 2001 From: Taichi Yamakawa Date: Fri, 19 Mar 2021 21:13:58 +0900 Subject: [PATCH 5/5] Test whether Nil.maxBy throws UnsupportedOperationException --- .../scala/collection/parallel/mutable/ParArrayTest.scala | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/junit/src/test/scala/scala/collection/parallel/mutable/ParArrayTest.scala b/junit/src/test/scala/scala/collection/parallel/mutable/ParArrayTest.scala index ca3f373b..12eb8680 100644 --- a/junit/src/test/scala/scala/collection/parallel/mutable/ParArrayTest.scala +++ b/junit/src/test/scala/scala/collection/parallel/mutable/ParArrayTest.scala @@ -148,4 +148,9 @@ class ParArrayTest extends scala.collection.concurrent.ctries_old.Spec { evaluating { ParArray.empty[String].minBy(_.length) }.shouldProduce[UnsupportedOperationException]() } + @Test + def `emtpy maxBy`: Unit = { + evaluating { ParArray.empty[String].maxBy(_.length) }.shouldProduce[UnsupportedOperationException]() + } + }