mirror of
https://github.com/c9s/bbgo.git
synced 2024-11-25 08:15:15 +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++
|
||
|
}
|
||
|
}
|