safing-portbase/rng/get_test.go
2022-02-01 13:12:46 +01:00

41 lines
830 B
Go

package rng
import (
"testing"
)
func TestNumberRandomness(t *testing.T) {
t.Parallel()
// skip in automated tests
t.Logf("Integer number bias test deactivated, as it sometimes triggers.")
t.SkipNow()
if testing.Short() {
t.Skip()
}
var subjects uint64 = 10
var testSize uint64 = 10000
results := make([]uint64, int(subjects))
for i := 0; i < int(subjects*testSize); i++ {
n, err := Number(subjects - 1)
if err != nil {
t.Fatal(err)
return
}
results[int(n)]++
}
// catch big mistakes in the number function, eg. massive % bias
lowerMargin := testSize - testSize/50
upperMargin := testSize + testSize/50
for subject, result := range results {
if result < lowerMargin || result > upperMargin {
t.Errorf("subject %d is outside of margins: %d", subject, result)
}
}
t.Fatal(results)
}