github.com/safing/portbase@v0.19.5/rng/get_test.go (about) 1 package rng 2 3 import ( 4 "testing" 5 ) 6 7 func TestNumberRandomness(t *testing.T) { 8 t.Parallel() 9 10 // skip in automated tests 11 t.Logf("Integer number bias test deactivated, as it sometimes triggers.") 12 t.SkipNow() 13 14 if testing.Short() { 15 t.Skip() 16 } 17 18 var subjects uint64 = 10 19 var testSize uint64 = 10000 20 21 results := make([]uint64, int(subjects)) 22 for i := 0; i < int(subjects*testSize); i++ { 23 n, err := Number(subjects - 1) 24 if err != nil { 25 t.Fatal(err) 26 return 27 } 28 results[int(n)]++ 29 } 30 31 // catch big mistakes in the number function, eg. massive % bias 32 lowerMargin := testSize - testSize/50 33 upperMargin := testSize + testSize/50 34 for subject, result := range results { 35 if result < lowerMargin || result > upperMargin { 36 t.Errorf("subject %d is outside of margins: %d", subject, result) 37 } 38 } 39 40 t.Fatal(results) 41 }