summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/benchmarks/source.list1
-rw-r--r--test/benchmarks/src/scala/collection/parallel/Benchmarking.scala1
-rw-r--r--test/benchmarks/src/scala/collection/parallel/benchmarks/parallel_array/ForeachHeavy.scala3
-rw-r--r--test/benchmarks/src/scala/collection/parallel/benchmarks/parallel_array/ScanMedium.scala55
-rw-r--r--test/files/scalacheck/parallel-collections/IntOperators.scala3
-rw-r--r--test/files/scalacheck/parallel-collections/Operators.scala2
-rw-r--r--test/files/scalacheck/parallel-collections/ParallelHashMapCheck.scala34
-rw-r--r--test/files/scalacheck/parallel-collections/ParallelHashSetCheck.scala44
-rw-r--r--test/files/scalacheck/parallel-collections/ParallelIterableCheck.scala16
9 files changed, 118 insertions, 41 deletions
diff --git a/test/benchmarks/source.list b/test/benchmarks/source.list
index dffd5ef4ea..9382e996dc 100644
--- a/test/benchmarks/source.list
+++ b/test/benchmarks/source.list
@@ -35,6 +35,7 @@ src/scala/collection/parallel/benchmarks/parallel_array/ReducePrime.scala
src/scala/collection/parallel/benchmarks/parallel_array/DropMany.scala
src/scala/collection/parallel/benchmarks/parallel_array/ReduceList.scala
src/scala/collection/parallel/benchmarks/parallel_array/ForeachLight.scala
+src/scala/collection/parallel/benchmarks/parallel_array/ScanMedium.scala
src/scala/collection/parallel/benchmarks/parallel_array/MatrixMultiplication.scala
src/scala/collection/parallel/benchmarks/parallel_array/SliceMedium.scala
src/scala/collection/parallel/benchmarks/parallel_array/ReverseMap.scala
diff --git a/test/benchmarks/src/scala/collection/parallel/Benchmarking.scala b/test/benchmarks/src/scala/collection/parallel/Benchmarking.scala
index 32c3ca154f..9eacc7ff1f 100644
--- a/test/benchmarks/src/scala/collection/parallel/Benchmarking.scala
+++ b/test/benchmarks/src/scala/collection/parallel/Benchmarking.scala
@@ -65,6 +65,7 @@ trait BenchmarkRegister {
register(parallel_array.PadToDouble)
register(parallel_array.AggregateLight)
register(parallel_array.ScanLight)
+ register(parallel_array.ScanMedium)
register(parallel_array.MatrixMultiplication)
// parallel views
diff --git a/test/benchmarks/src/scala/collection/parallel/benchmarks/parallel_array/ForeachHeavy.scala b/test/benchmarks/src/scala/collection/parallel/benchmarks/parallel_array/ForeachHeavy.scala
index b5dcfca872..f151158ad9 100644
--- a/test/benchmarks/src/scala/collection/parallel/benchmarks/parallel_array/ForeachHeavy.scala
+++ b/test/benchmarks/src/scala/collection/parallel/benchmarks/parallel_array/ForeachHeavy.scala
@@ -9,6 +9,8 @@ object ForeachHeavy extends Companion {
override def comparisons = List("jsr")
override def defaultSize = 2048
+ @volatile var z = 0
+
val fun = (a: Cont) => heavyOperation(a)
val funjsr = new extra166y.Ops.Procedure[Cont] {
def op(a: Cont) = heavyOperation(a)
@@ -26,6 +28,7 @@ object ForeachHeavy extends Companion {
if (n % i == 0) isPrime = false
i += 1
}
+ if (isPrime && (n.toString == z)) z += 1
isPrime
}
}
diff --git a/test/benchmarks/src/scala/collection/parallel/benchmarks/parallel_array/ScanMedium.scala b/test/benchmarks/src/scala/collection/parallel/benchmarks/parallel_array/ScanMedium.scala
new file mode 100644
index 0000000000..73a237189f
--- /dev/null
+++ b/test/benchmarks/src/scala/collection/parallel/benchmarks/parallel_array/ScanMedium.scala
@@ -0,0 +1,55 @@
+package scala.collection.parallel.benchmarks.parallel_array
+
+
+import scala.collection.parallel.benchmarks._
+import scala.collection.parallel.mutable.ParArray
+
+
+object ScanMedium extends Companion {
+ def benchName = "scan-medium";
+ def apply(sz: Int, parallelism: Int, what: String) = new ScanMedium(sz, parallelism, what)
+ override def comparisons = List("jsr")
+ override def defaultSize = 5000
+
+ val op = (a: Cont, b: Cont) => {
+ operation(a, b)
+ }
+ def operation(a: Cont, b: Cont) = {
+ val m = if (a.in < 0) 1 else 0
+ val k = calc(a.in, b.in, m)
+ new Cont(a.in + b.in + k * m * (0 until 2).reduceLeft(_ + _))
+ }
+ private def calc(x: Int, y: Int, n: Int) = {
+ var sum = x
+ for (i <- 0 until 500) {
+ sum += y + (if (sum % 2 == 0) n * x else y)
+ if (sum % 5 == 0) sum -= x * y - n * (x + y)
+ }
+ sum
+ }
+}
+
+
+class ScanMedium(sz: Int, p: Int, what: String)
+extends Resettable[Cont](sz, p, what, new Cont(_), new Array[Any](_), classOf[Cont]) {
+ def companion = ScanMedium
+ override def repetitionsPerRun = 50
+ override val runs = 12
+
+ def runpar = pa.scan(new Cont(0))(ScanMedium.op)
+ def runseq = sequentialScan(new Cont(0), ScanMedium.op, sz)
+ def runjsr = jsrarr.cumulate(new extra166y.Ops.Reducer[Cont] {
+ def op(a: Cont, b: Cont) = ScanMedium.operation(a, b)
+ }, new Cont(0))
+ override def comparisonMap = collection.Map("jsr" -> runjsr _)
+}
+
+
+
+
+
+
+
+
+
+
diff --git a/test/files/scalacheck/parallel-collections/IntOperators.scala b/test/files/scalacheck/parallel-collections/IntOperators.scala
index 690ee34cca..24330d7670 100644
--- a/test/files/scalacheck/parallel-collections/IntOperators.scala
+++ b/test/files/scalacheck/parallel-collections/IntOperators.scala
@@ -49,7 +49,8 @@ trait IntOperators extends Operators[Int] {
def foldArguments = List(
(0, _ + _),
(1, _ * _),
- (Int.MinValue, math.max(_, _))
+ (Int.MinValue, math.max(_, _)),
+ (Int.MaxValue, math.min(_, _))
)
def addAllTraversables = List(
List[Int](),
diff --git a/test/files/scalacheck/parallel-collections/Operators.scala b/test/files/scalacheck/parallel-collections/Operators.scala
index 538cc23325..b4321cf805 100644
--- a/test/files/scalacheck/parallel-collections/Operators.scala
+++ b/test/files/scalacheck/parallel-collections/Operators.scala
@@ -32,4 +32,4 @@ trait SeqOperators[T] extends Operators[T] {
def reverseMapFunctions: List[T => T]
def sameElementsSeqs: List[Seq[T]]
def startEndSeqs: List[Seq[T]]
-} \ No newline at end of file
+}
diff --git a/test/files/scalacheck/parallel-collections/ParallelHashMapCheck.scala b/test/files/scalacheck/parallel-collections/ParallelHashMapCheck.scala
index 061bb08d9b..9299a201a1 100644
--- a/test/files/scalacheck/parallel-collections/ParallelHashMapCheck.scala
+++ b/test/files/scalacheck/parallel-collections/ParallelHashMapCheck.scala
@@ -64,23 +64,23 @@ with PairValues[Int, Int]
}
override def checkDataStructureInvariants(orig: Traversable[(Int, Int)], ds: AnyRef) = ds match {
- case pm: ParHashMap[k, v] if 1 == 0 => // disabled this to make tests faster
- val invs = pm.brokenInvariants
-
- val containsall = (for ((k, v) <- orig) yield {
- if (pm.asInstanceOf[ParHashMap[Int, Int]].get(k) == Some(v)) true
- else {
- println("Does not contain original element: " + (k, v))
- false
- }
- }).foldLeft(true)(_ && _)
-
-
- if (invs.isEmpty) containsall
- else {
- println("Invariants broken:\n" + invs.mkString("\n"))
- false
- }
+ // case pm: ParHashMap[k, v] if 1 == 0 => // disabled this to make tests faster
+ // val invs = pm.brokenInvariants
+
+ // val containsall = (for ((k, v) <- orig) yield {
+ // if (pm.asInstanceOf[ParHashMap[Int, Int]].get(k) == Some(v)) true
+ // else {
+ // println("Does not contain original element: " + (k, v))
+ // false
+ // }
+ // }).foldLeft(true)(_ && _)
+
+
+ // if (invs.isEmpty) containsall
+ // else {
+ // println("Invariants broken:\n" + invs.mkString("\n"))
+ // false
+ // }
case _ => true
}
diff --git a/test/files/scalacheck/parallel-collections/ParallelHashSetCheck.scala b/test/files/scalacheck/parallel-collections/ParallelHashSetCheck.scala
index be70a7c7a3..8b41908a26 100644
--- a/test/files/scalacheck/parallel-collections/ParallelHashSetCheck.scala
+++ b/test/files/scalacheck/parallel-collections/ParallelHashSetCheck.scala
@@ -56,28 +56,28 @@ with IntValues
}
override def checkDataStructureInvariants(orig: Traversable[Int], ds: AnyRef) = ds match {
- case pm: ParHashSet[t] =>
- // for an example of how not to write code proceed below
- val invs = pm.brokenInvariants
-
- val containsall = (for (elem <- orig) yield {
- if (pm.asInstanceOf[ParHashSet[Int]](elem) == true) true
- else {
- println("Does not contain original element: " + elem)
- println(pm.hashTableContents.table.find(_ == elem))
- println(pm.hashTableContents.table.indexOf(elem))
- false
- }
- }).foldLeft(true)(_ && _)
-
-
- if (invs.isEmpty) {
- if (!containsall) println(pm.debugInformation)
- containsall
- } else {
- println("Invariants broken:\n" + invs.mkString("\n"))
- false
- }
+ // case pm: ParHashSet[t] if 1 == 0 =>
+ // // for an example of how not to write code proceed below
+ // val invs = pm.brokenInvariants
+
+ // val containsall = (for (elem <- orig) yield {
+ // if (pm.asInstanceOf[ParHashSet[Int]](elem) == true) true
+ // else {
+ // println("Does not contain original element: " + elem)
+ // println(pm.hashTableContents.table.find(_ == elem))
+ // println(pm.hashTableContents.table.indexOf(elem))
+ // false
+ // }
+ // }).foldLeft(true)(_ && _)
+
+
+ // if (invs.isEmpty) {
+ // if (!containsall) println(pm.debugInformation)
+ // containsall
+ // } else {
+ // println("Invariants broken:\n" + invs.mkString("\n"))
+ // false
+ // }
case _ => true
}
diff --git a/test/files/scalacheck/parallel-collections/ParallelIterableCheck.scala b/test/files/scalacheck/parallel-collections/ParallelIterableCheck.scala
index 8b5d72ea01..0dcd877ecb 100644
--- a/test/files/scalacheck/parallel-collections/ParallelIterableCheck.scala
+++ b/test/files/scalacheck/parallel-collections/ParallelIterableCheck.scala
@@ -398,6 +398,22 @@ abstract class ParallelIterableCheck[T](collName: String) extends Properties(col
tarr.toSeq == collarr.toSeq
}
+ if (hasStrictOrder) property("scans must be equal") = forAll(collectionPairs) {
+ case (t, coll) =>
+ (for (((first, op), ind) <- foldArguments.zipWithIndex) yield {
+ val tscan = t.scanLeft(first)(op)
+ val cscan = coll.scan(first)(op)
+ if (tscan != cscan || cscan != tscan) {
+ println("from: " + t)
+ println("and: " + coll)
+ println("scans are: ")
+ println(tscan)
+ println(cscan)
+ }
+ ("operator " + ind) |: tscan == cscan && cscan == tscan
+ }).reduceLeft(_ && _)
+ }
+
}