github.com/influxdata/influxdb/v2@v2.7.6/influxql/query/internal/gota/kama_test.go (about) 1 package gota 2 3 import "testing" 4 5 func TestKER(t *testing.T) { 6 list := []float64{20, 21, 22, 23, 22, 21} 7 8 expList := []float64{1, 1.0 / 3, 1.0 / 3} 9 10 ker := NewKER(3) 11 var actList []float64 12 for _, v := range list { 13 if vOut := ker.Add(v); ker.Warmed() { 14 actList = append(actList, vOut) 15 } 16 } 17 18 if diff := diffFloats(expList, actList, 0.0000001); diff != "" { 19 t.Errorf("unexpected floats:\n%s", diff) 20 } 21 } 22 23 func TestKAMA(t *testing.T) { 24 list := []float64{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1} 25 26 // expList is generated by the following code: 27 // expList, _ := talib.Cmo(list, 10, nil) 28 expList := []float64{10.444444444444445, 11.135802469135802, 11.964334705075446, 12.869074836153025, 13.81615268675168, 13.871008014588556, 13.71308456353558, 13.553331356741122, 13.46599437575161, 13.4515677602438, 13.29930139347417, 12.805116570729284, 11.752584300922967, 10.036160535131103, 7.797866963961725, 6.109926091089847, 4.727736717272138, 3.5154092873734104, 2.3974496040963396} 29 30 kama := NewKAMA(10) 31 var actList []float64 32 for _, v := range list { 33 if vOut := kama.Add(v); kama.Warmed() { 34 actList = append(actList, vOut) 35 } 36 } 37 38 if diff := diffFloats(expList, actList, 0.0000001); diff != "" { 39 t.Errorf("unexpected floats:\n%s", diff) 40 } 41 } 42 43 func TestKAMAWarmCount(t *testing.T) { 44 period := 9 45 kama := NewKAMA(period) 46 47 var i int 48 for i = 0; i < period*10; i++ { 49 kama.Add(float64(i)) 50 if kama.Warmed() { 51 break 52 } 53 } 54 55 if got, want := i, kama.WarmCount(); got != want { 56 t.Errorf("unexpected warm count: got=%d want=%d", got, want) 57 } 58 } 59 60 var BenchmarkKAMAVal float64 61 62 func BenchmarkKAMA(b *testing.B) { 63 list := []float64{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1} 64 for n := 0; n < b.N; n++ { 65 kama := NewKAMA(5) 66 for _, v := range list { 67 BenchmarkKAMAVal = kama.Add(v) 68 } 69 } 70 }