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  }