mirror of
https://github.com/c9s/bbgo.git
synced 2024-11-14 11:03:53 +00:00
46 lines
1.2 KiB
Go
46 lines
1.2 KiB
Go
package bbgo
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/c9s/bbgo/pkg/types"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestMarketDataStore_AddKLineAndTruncateWindow(t *testing.T) {
|
|
store := NewMarketDataStore("BTCUSD")
|
|
|
|
interval := types.Interval1s
|
|
|
|
var maxCap int = 0
|
|
capFixed := false
|
|
|
|
var gid uint64 = 0
|
|
// insert 1.5 * CapacityOfKLineWindowLimit KLine into window
|
|
for ; gid < CapacityOfKLineWindowLimit+(CapacityOfKLineWindowLimit/2); gid++ {
|
|
store.AddKLine(types.KLine{
|
|
Interval: interval,
|
|
GID: gid,
|
|
})
|
|
|
|
// if the capacity is > CapacityOfKLineWindowLimit, the capacity should be fixed. We use this if expression to verify it then.
|
|
if !capFixed && cap(*store.KLineWindows[interval]) > CapacityOfKLineWindowLimit {
|
|
maxCap = cap(*store.KLineWindows[interval])
|
|
capFixed = true
|
|
}
|
|
}
|
|
|
|
window := store.KLineWindows[interval]
|
|
|
|
// make sure the capacity is fixed
|
|
assert.Equal(t, maxCap, cap(*window))
|
|
|
|
// after truncate, it will remain (CapacityOfKLineWindowLimit / 2) KLine in the window
|
|
// so the first GIC will be the maxCap - (CapacityOfKLineWindowLimit / 2)
|
|
truncatedGID := uint64(maxCap - (CapacityOfKLineWindowLimit / 2))
|
|
for _, kline := range *window {
|
|
assert.Equal(t, truncatedGID, kline.GID)
|
|
truncatedGID++
|
|
}
|
|
}
|