sm
/
ostat
1
0
Fork 0
ostat/ostat_test.go

46 Zeilen
928 B
Go

package ostat
import (
"math"
"testing"
)
func TestInsert(t *testing.T) {
os := NewOnlineStat()
v := []float64{4, 7, 13, 16}
for _, i := range v {
os.Push(i)
}
if os.Min != 4 {
t.Errorf("incorrectly calculated min")
}
if os.Max != 16 {
t.Errorf("incorrectly calculated max")
}
if m, _ := os.Mean(); m != 10.0 {
t.Errorf("incorrect mean")
}
if variance, _ := os.Variance(); variance != 30.0 {
t.Errorf("incorrect variance: %f", variance)
}
if stdev, _ := os.StdDev(); stdev != math.Sqrt(30.0) {
t.Errorf("incorrect stdev: %f", stdev)
}
}
func TestEmpty(t *testing.T) {
os := NewOnlineStat()
_, err := os.Mean()
if err == nil {
t.Errorf("failure to notify the running stat was empty")
}
_, err = os.Variance()
if err == nil {
t.Errorf("failure to notify the running stat was empty")
}
_, err = os.StdDev()
if err == nil {
t.Errorf("failure to notify the running stat was empty")
}
}