// Copyright (C) The Lightning Authors. All rights reserved. // // SPDX-License-Identifier: AGPL-3.0 package lightning import ( "fmt" "gopkg.in/check.v1" ) type pvalueSuite struct{} var _ = check.Suite(&pvalueSuite{}) func (s *pvalueSuite) TestPvalue(c *check.C) { a := make([]bool, 54) b := make([]bool, 54) for i := 0; i < 25; i++ { a[i] = true b[i] = true } for i := 25; i < 31; i++ { a[i] = true } for i := 31; i < 40; i++ { b[i] = true } 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("%.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)) } }