github.com/simpleiot/simpleiot@v0.18.3/data/point_averager_test.go (about) 1 package data 2 3 import ( 4 "testing" 5 "time" 6 ) 7 8 func TestPointAverager(t *testing.T) { 9 // Round 1 10 avg := 2000.00 11 12 pointAverager := NewPointAverager("testPoint") 13 avgPoint := pointAverager.GetAverage() 14 if avgPoint.Value != 0 { 15 t.Error("point avg with 0 points is not correct: ", avgPoint.Value) 16 } 17 18 // Round 1.5 19 feedPoints(pointAverager, avg) 20 21 avgPoint = pointAverager.GetAverage() 22 if avgPoint.Value != avg { 23 t.Error("point avg is not correct") 24 } 25 26 pointAverager.ResetAverage() 27 28 // Round 2 29 avg = 2 30 31 pointAverager = NewPointAverager("testPoint") 32 feedPoints(pointAverager, avg) 33 34 avgPoint = pointAverager.GetAverage() 35 if avgPoint.Value != avg { 36 t.Error("point avg is not correct") 37 } 38 39 pointAverager.ResetAverage() 40 41 // Round 3 42 avg = 200.00 43 44 pointAverager = NewPointAverager("testPoint") 45 feedPoints(pointAverager, avg) 46 47 avgPoint = pointAverager.GetAverage() 48 if avgPoint.Value != avg { 49 t.Error("point avg is not correct") 50 } 51 } 52 53 func feedPoints(pointAverager *PointAverager, avg float64) { 54 point := Point{ 55 Time: time.Now(), 56 Value: avg - 100, 57 } 58 pointAverager.AddPoint(point) 59 pointAverager.AddPoint(point) 60 61 point = Point{ 62 Time: time.Now(), 63 Value: avg, 64 } 65 pointAverager.AddPoint(point) 66 pointAverager.AddPoint(point) 67 68 point = Point{ 69 Time: time.Now(), 70 Value: avg + 100, 71 } 72 pointAverager.AddPoint(point) 73 pointAverager.AddPoint(point) 74 }