qbtrade/pkg/indicator/v2/smma_test.go
2024-06-27 22:42:38 +08:00

28 lines
718 B
Go

package indicatorv2
import (
"testing"
"github.com/stretchr/testify/assert"
"git.qtrade.icu/lychiyu/qbtrade/pkg/types"
)
func TestSMMA(t *testing.T) {
source := types.NewFloat64Series()
smma := SMMA2(source, 3)
data := []float64{10, 20, 30, 40, 50, 60, 70, 80, 90}
for _, d := range data {
source.PushAndEmit(d)
}
// Assert the first 3 and last 3 value outputs.
assert.InDelta(t, 0, smma.Last(len(data)-1), 0.001)
assert.InDelta(t, 0, smma.Last(len(data)-2), 0.001)
assert.InDelta(t, 20, smma.Last(len(data)-3), 0.001)
assert.InDelta(t, 51.97530864197531, smma.Last(2), 0.001)
assert.InDelta(t, 61.31687242798355, smma.Last(1), 0.001)
assert.InDelta(t, 70.87791495198904, smma.Last(0), 0.001)
}