summaryrefslogtreecommitdiff
path: root/test/files/run/t5880.scala
diff options
context:
space:
mode:
authorAleksandar Prokopec <axel22@gmail.com>2012-06-06 20:16:39 +0200
committerAleksandar Prokopec <axel22@gmail.com>2012-06-06 20:16:39 +0200
commitdaca24d8e7050eab9551b123cef010d7bf33f803 (patch)
treeba69ecd42e915de29a31ba9df50c2fb52bab69b5 /test/files/run/t5880.scala
parentdb1b777372a6883f9c474159804b8f7798c0ec49 (diff)
downloadscala-daca24d8e7050eab9551b123cef010d7bf33f803.tar.gz
scala-daca24d8e7050eab9551b123cef010d7bf33f803.tar.bz2
scala-daca24d8e7050eab9551b123cef010d7bf33f803.zip
Fix SI-5880.
Add a ChiSquare test for the new hash code.
Diffstat (limited to 'test/files/run/t5880.scala')
-rw-r--r--test/files/run/t5880.scala41
1 files changed, 41 insertions, 0 deletions
diff --git a/test/files/run/t5880.scala b/test/files/run/t5880.scala
new file mode 100644
index 0000000000..08cd0d6bf8
--- /dev/null
+++ b/test/files/run/t5880.scala
@@ -0,0 +1,41 @@
+
+
+import scala.collection.JavaConversions._
+
+
+
+object Test {
+
+ def main(args:Array[String]) = {
+ val tests = 5000
+ val jm: java.util.Map[Int, Int] = scala.collection.mutable.Map((0 until tests) zip (0 until tests).reverse: _*)
+ val es = jm.entrySet()
+ val it = es.iterator
+
+ // chi square test
+ val groups = 10
+ val hits = new Array[Int](groups)
+ def hit(hc: Int) {
+ val bucket = math.abs(hc) / (Int.MaxValue / groups)
+ hits(bucket) += 1
+ }
+ def expected = tests / groups
+ def Dstat = {
+ val diffs = for (i <- 0 until groups) yield math.abs(hits(i) - expected)
+ diffs.sum.toDouble / expected
+ }
+ def ChiSquare = {
+ val diffs = for (i <- 0 until groups) yield (hits(i) - expected) * (hits(i) - expected)
+ diffs.sum.toDouble / expected
+ }
+
+ while (it.hasNext) {
+ val x = it.next()
+ hit(x.##)
+ }
+ // println(hits.toBuffer)
+ // println(ChiSquare)
+ assert(ChiSquare < 2.0)
+ }
+
+}