19952 Organizing helper files
[lightning.git] / chisquare_test.go
index 3a59671c407d5ca70f6584b5e85de32e4237c443..823023507ab629c17e33d7c544cd3befb219997d 100644 (file)
@@ -24,12 +24,45 @@ func (s *pvalueSuite) TestPvalue(c *check.C) {
        for i := 25; i < 31; i++ {
                a[i] = true
        }
-       for i := 31; i < 39; i++ {
+       for i := 31; i < 40; i++ {
                b[i] = true
        }
-       c.Check(fmt.Sprintf("%.7f", pvalue(a, b)), check.Equals, "0.0006297")
+       c.Check(fmt.Sprintf("%.8f", pvalue(a, b)), check.Equals, "0.04147853")
+
+       a = make([]bool, 54)
+       b = make([]bool, 54)
+       for i := 0; i < 25; i++ {
+               a[i] = true
+               b[i] = true
+       }
+       c.Check(fmt.Sprintf("%.9f", pvalue(a, b)), check.Equals, "0.000000072")
        for i := range a {
                a[i] = !a[i]
        }
-       c.Check(fmt.Sprintf("%.7f", pvalue(a, b)), check.Equals, "0.0006297")
+       c.Check(fmt.Sprintf("%.9f", pvalue(a, b)), check.Equals, "0.000000573")
+
+       a = []bool{true, true, true, false, true, false, false, false}
+       b = []bool{true, true, true, true, false, false, false, false}
+       c.Check(fmt.Sprintf("%.8f", pvalue(a, b)), check.Equals, "0.31731051")
+       for i := range a {
+               a[i] = !a[i]
+       }
+       c.Check(fmt.Sprintf("%.8f", pvalue(a, b)), check.Equals, "0.31731051")
+
+       for _, sz := range []int{128, 1024, 4096, 16384} {
+               c.Logf("sz = %d", sz)
+               a = make([]bool, sz)
+               b = make([]bool, sz)
+               c.Check(fmt.Sprintf("%.8f", pvalue(a, b)), check.Equals, "1.00000000")
+               for i := 0; i < len(a)/23; i++ {
+                       a[i] = true
+               }
+               for i := 0; i < len(a)/2; i++ {
+                       b[i] = true
+               }
+               c.Logf("pvalue(a,b) == %e", pvalue(a, b))
+               c.Logf("pvalue(b,a) == %e", pvalue(b, a))
+               c.Check(pvalue(a, b), check.Not(check.Equals), float64(0))
+               c.Check(pvalue(b, a), check.Not(check.Equals), float64(0))
+       }
 }