Files
vulture/stats_test.go
T

83 lines
1.5 KiB
Go

package main
import (
"testing"
)
func TestNewStats(t *testing.T) {
s := NewStatAggregator()
if s.n != 0 ||
s.sum != 0 ||
s.sumOfTheSquares != 0 ||
len(s.histogram) != initialLength ||
s.min != veryBig ||
s.max != verySmall {
t.Fail()
}
}
func TestAddStatsBasic(t *testing.T) {
numbers := []float64{-1, 1, 20, 3}
c := make(chan float64)
o := make(chan *Stats)
s := NewStatAggregator()
go s.AddStats(c, o)
for _, n := range numbers {
c <- n
}
close(c)
<-o
if s.n != 4. || s.min != -1. || s.max != 20. || s.sum != 23. || s.sumOfTheSquares != 411. {
t.Error(">>>", s.max, s.min)
}
}
func TestGetFinalStats(t *testing.T) {
s := NewStatAggregator()
s.sumOfTheSquares = 5000
s.max = 900
s.min = -900
s.sum = 200
s.n = 10
stats := s.getFinalStats()
if stats.Mean != 20. {
t.Fail()
}
if stats.Var != 100. {
t.Fail()
}
if stats.Std != 10. {
t.Fail()
}
if stats.Min != -900 {
t.Fail()
}
if stats.Max != 900 {
t.Fail()
}
if stats.N != 10 {
t.Fail()
}
}
func TestFindSuitableBinForDatum(t *testing.T) {
stats := new(HistogramMaker)
if bin := stats.findSuitableBinForDatum(-4, 1, -3.2); bin != 0 {
t.Error("wrong bin: ", bin)
}
if bin := stats.findSuitableBinForDatum(-4, 1, -2.2); bin != 1 {
t.Error("wrong bin: ", bin)
}
if bin := stats.findSuitableBinForDatum(-4, 1, 10.1); bin != 14 {
t.Error("wrong bin: ", bin)
}
if bin := stats.findSuitableBinForDatum(1, 50, 1); bin != 0 {
t.Error("wrong bin: ", bin)
}
}