summaryrefslogtreecommitdiff
path: root/test/files/scalacheck/parallel-collections/ParallelHashMapCheck.scala
diff options
context:
space:
mode:
authorAleksandar Pokopec <aleksandar.prokopec@epfl.ch>2010-10-28 12:10:00 +0000
committerAleksandar Pokopec <aleksandar.prokopec@epfl.ch>2010-10-28 12:10:00 +0000
commit8d311558f3774cd628a53fc675da93b550d06090 (patch)
tree6811285bc37af76d356980adaa579fa1d181faaf /test/files/scalacheck/parallel-collections/ParallelHashMapCheck.scala
parent962a348ab26f189a19dd74aeb3bbc8fd5d63061a (diff)
downloadscala-8d311558f3774cd628a53fc675da93b550d06090.tar.gz
scala-8d311558f3774cd628a53fc675da93b550d06090.tar.bz2
scala-8d311558f3774cd628a53fc675da93b550d06090.zip
Debugging parallel hash tables.
No review.
Diffstat (limited to 'test/files/scalacheck/parallel-collections/ParallelHashMapCheck.scala')
-rw-r--r--test/files/scalacheck/parallel-collections/ParallelHashMapCheck.scala24
1 files changed, 23 insertions, 1 deletions
diff --git a/test/files/scalacheck/parallel-collections/ParallelHashMapCheck.scala b/test/files/scalacheck/parallel-collections/ParallelHashMapCheck.scala
index 5278d28f0f..d53c0ba9d6 100644
--- a/test/files/scalacheck/parallel-collections/ParallelHashMapCheck.scala
+++ b/test/files/scalacheck/parallel-collections/ParallelHashMapCheck.scala
@@ -58,10 +58,32 @@ with PairValues[Int, Int]
override def printDataStructureDebugInfo(ds: AnyRef) = ds match {
case pm: ParHashMap[k, v] =>
- println("Mutable parallel hash map")
+ println("Mutable parallel hash map\n" + pm.hashTableContents.debugInformation)
case _ =>
println("could not match data structure type: " + ds.getClass)
}
+
+ override def checkDataStructureInvariants(orig: Traversable[(Int, Int)], ds: AnyRef) = ds match {
+ case pm: ParHashMap[k, v] =>
+ 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
+ }
+
}