diff options
author | Aleksandar Pokopec <aleksandar.prokopec@epfl.ch> | 2010-10-28 12:10:00 +0000 |
---|---|---|
committer | Aleksandar Pokopec <aleksandar.prokopec@epfl.ch> | 2010-10-28 12:10:00 +0000 |
commit | 8d311558f3774cd628a53fc675da93b550d06090 (patch) | |
tree | 6811285bc37af76d356980adaa579fa1d181faaf /test/files/scalacheck/parallel-collections/ParallelHashMapCheck.scala | |
parent | 962a348ab26f189a19dd74aeb3bbc8fd5d63061a (diff) | |
download | scala-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.scala | 24 |
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 + } + } |