mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-14 07:26:47 +00:00
* golangci-lint/CI: Bump versions
Fix remaining linter issues
* Specifically set AppVeyor version
* Fix the infamous typos 👀
* Add go env cmd to AppVeyor
* Add go version cmd to AppVeyor
* Specify AppVeyor image, adjust linters
* Update go get to go install due to deprecation
* Bump golangci-lint timeout time for AppVeyor
* Change NW contract to NQ
* Address nitters
* GetRandomPair -> Pair{}
* Address nits
* Address time nitterinos plus additional tweaks
* More time inception upgrades!
* Bending time and space
226 lines
4.5 KiB
Go
226 lines
4.5 KiB
Go
package data
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/shopspring/decimal"
|
|
"github.com/thrasher-corp/gocryptotrader/currency"
|
|
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
|
"github.com/thrasher-corp/gocryptotrader/exchanges/kline"
|
|
)
|
|
|
|
const testExchange = "binance"
|
|
|
|
type fakeDataHandler struct {
|
|
time int
|
|
}
|
|
|
|
func TestBaseDataFunctions(t *testing.T) {
|
|
t.Parallel()
|
|
var d Base
|
|
if latest := d.Latest(); latest != nil {
|
|
t.Error("expected nil")
|
|
}
|
|
d.Next()
|
|
o := d.Offset()
|
|
if o != 0 {
|
|
t.Error("expected 0")
|
|
}
|
|
d.AppendStream(nil)
|
|
d.AppendStream(nil)
|
|
d.AppendStream(nil)
|
|
|
|
d.Next()
|
|
o = d.Offset()
|
|
if o != 0 {
|
|
t.Error("expected 0")
|
|
}
|
|
if list := d.List(); list != nil {
|
|
t.Error("expected nil")
|
|
}
|
|
if history := d.History(); history != nil {
|
|
t.Error("expected nil")
|
|
}
|
|
d.SetStream(nil)
|
|
if st := d.GetStream(); st != nil {
|
|
t.Error("expected nil")
|
|
}
|
|
d.Reset()
|
|
d.GetStream()
|
|
d.SortStream()
|
|
}
|
|
|
|
func TestSetup(t *testing.T) {
|
|
t.Parallel()
|
|
d := HandlerPerCurrency{}
|
|
d.Setup()
|
|
if d.data == nil {
|
|
t.Error("expected not nil")
|
|
}
|
|
}
|
|
|
|
func TestStream(t *testing.T) {
|
|
var d Base
|
|
var f fakeDataHandler
|
|
|
|
// shut up coverage report
|
|
f.GetOffset()
|
|
f.SetOffset(1)
|
|
f.IsEvent()
|
|
f.Pair()
|
|
f.GetExchange()
|
|
f.GetInterval()
|
|
f.GetAssetType()
|
|
f.GetReason()
|
|
f.AppendReason("fake")
|
|
f.ClosePrice()
|
|
f.HighPrice()
|
|
f.LowPrice()
|
|
f.OpenPrice()
|
|
|
|
d.AppendStream(fakeDataHandler{time: 1})
|
|
d.AppendStream(fakeDataHandler{time: 4})
|
|
d.AppendStream(fakeDataHandler{time: 10})
|
|
d.AppendStream(fakeDataHandler{time: 2})
|
|
d.AppendStream(fakeDataHandler{time: 20})
|
|
|
|
d.SortStream()
|
|
|
|
f, ok := d.Next().(fakeDataHandler)
|
|
if f.time != 1 || !ok {
|
|
t.Error("expected 1")
|
|
}
|
|
f, ok = d.Next().(fakeDataHandler)
|
|
if f.time != 2 || !ok {
|
|
t.Error("expected 2")
|
|
}
|
|
f, ok = d.Next().(fakeDataHandler)
|
|
if f.time != 4 || !ok {
|
|
t.Error("expected 4")
|
|
}
|
|
f, ok = d.Next().(fakeDataHandler)
|
|
if f.time != 10 || !ok {
|
|
t.Error("expected 10")
|
|
}
|
|
f, ok = d.Next().(fakeDataHandler)
|
|
if f.time != 20 || !ok {
|
|
t.Error("expected 20")
|
|
}
|
|
}
|
|
|
|
func TestSetDataForCurrency(t *testing.T) {
|
|
t.Parallel()
|
|
d := HandlerPerCurrency{}
|
|
exch := testExchange
|
|
a := asset.Spot
|
|
p := currency.NewPair(currency.BTC, currency.USDT)
|
|
d.SetDataForCurrency(exch, a, p, nil)
|
|
if d.data == nil {
|
|
t.Error("expected not nil")
|
|
}
|
|
if d.data[exch][a][p] != nil {
|
|
t.Error("expected nil")
|
|
}
|
|
}
|
|
|
|
func TestGetAllData(t *testing.T) {
|
|
t.Parallel()
|
|
d := HandlerPerCurrency{}
|
|
exch := testExchange
|
|
a := asset.Spot
|
|
p := currency.NewPair(currency.BTC, currency.USDT)
|
|
d.SetDataForCurrency(exch, a, p, nil)
|
|
d.SetDataForCurrency(exch, a, currency.NewPair(currency.BTC, currency.DOGE), nil)
|
|
result := d.GetAllData()
|
|
if len(result) != 1 {
|
|
t.Error("expected 1")
|
|
}
|
|
if len(result[exch][a]) != 2 {
|
|
t.Error("expected 2")
|
|
}
|
|
}
|
|
|
|
func TestGetDataForCurrency(t *testing.T) {
|
|
t.Parallel()
|
|
d := HandlerPerCurrency{}
|
|
exch := testExchange
|
|
a := asset.Spot
|
|
p := currency.NewPair(currency.BTC, currency.USDT)
|
|
d.SetDataForCurrency(exch, a, p, nil)
|
|
d.SetDataForCurrency(exch, a, currency.NewPair(currency.BTC, currency.DOGE), nil)
|
|
result := d.GetDataForCurrency(exch, a, p)
|
|
if result != nil {
|
|
t.Error("expected nil")
|
|
}
|
|
}
|
|
|
|
func TestReset(t *testing.T) {
|
|
t.Parallel()
|
|
d := HandlerPerCurrency{}
|
|
exch := testExchange
|
|
a := asset.Spot
|
|
p := currency.NewPair(currency.BTC, currency.USDT)
|
|
d.SetDataForCurrency(exch, a, p, nil)
|
|
d.SetDataForCurrency(exch, a, currency.NewPair(currency.BTC, currency.DOGE), nil)
|
|
d.Reset()
|
|
if d.data != nil {
|
|
t.Error("expected nil")
|
|
}
|
|
}
|
|
|
|
// methods that satisfy the common.DataEventHandler interface
|
|
func (t fakeDataHandler) GetOffset() int64 {
|
|
return 0
|
|
}
|
|
|
|
func (t fakeDataHandler) SetOffset(int64) {
|
|
}
|
|
|
|
func (t fakeDataHandler) IsEvent() bool {
|
|
return false
|
|
}
|
|
|
|
func (t fakeDataHandler) GetTime() time.Time {
|
|
return time.Now().Add(time.Hour * time.Duration(t.time))
|
|
}
|
|
|
|
func (t fakeDataHandler) Pair() currency.Pair {
|
|
return currency.NewPair(currency.BTC, currency.USD)
|
|
}
|
|
|
|
func (t fakeDataHandler) GetExchange() string {
|
|
return "fake"
|
|
}
|
|
|
|
func (t fakeDataHandler) GetInterval() kline.Interval {
|
|
return kline.Interval(time.Minute)
|
|
}
|
|
|
|
func (t fakeDataHandler) GetAssetType() asset.Item {
|
|
return asset.Spot
|
|
}
|
|
|
|
func (t fakeDataHandler) GetReason() string {
|
|
return "fake"
|
|
}
|
|
|
|
func (t fakeDataHandler) AppendReason(string) {
|
|
}
|
|
|
|
func (t fakeDataHandler) ClosePrice() decimal.Decimal {
|
|
return decimal.Zero
|
|
}
|
|
|
|
func (t fakeDataHandler) HighPrice() decimal.Decimal {
|
|
return decimal.Zero
|
|
}
|
|
|
|
func (t fakeDataHandler) LowPrice() decimal.Decimal {
|
|
return decimal.Zero
|
|
}
|
|
|
|
func (t fakeDataHandler) OpenPrice() decimal.Decimal {
|
|
return decimal.Zero
|
|
}
|