From 3caa149d8e8224dd85dbfba04c3a292840244ca3 Mon Sep 17 00:00:00 2001 From: Gareth Kirwan Date: Wed, 7 May 2025 03:32:06 +0200 Subject: [PATCH] Tests: Use currency.NewBTCUSD and NewBTCUSDT (#1895) * Tests: Use currency.NewUSD and NewUSDT Simple refactor to use the provided shortcut methods * Github: Add CI check to ensure NewPair not used Add a step to ensure NewPair(BTC, USD*) isn't used --- .github/workflows/misc.yml | 13 ++ backtester/config/strategyconfig_test.go | 2 +- backtester/data/data_test.go | 18 +-- backtester/data/kline/api/api_test.go | 4 +- backtester/data/kline/csv/csv_test.go | 6 +- .../data/kline/database/database_test.go | 6 +- backtester/data/kline/kline_test.go | 16 +- backtester/data/kline/live/live_test.go | 4 +- backtester/engine/backtest_test.go | 32 ++-- backtester/engine/fakeinterfaces_test.go | 6 +- backtester/engine/live_test.go | 4 +- .../eventhandlers/exchange/exchange_test.go | 12 +- .../exchange/slippage/slippage_test.go | 2 +- .../portfolio/holdings/holdings_test.go | 16 +- .../eventhandlers/portfolio/portfolio_test.go | 80 +++++----- .../eventhandlers/portfolio/risk/risk_test.go | 10 +- .../eventhandlers/portfolio/size/size_test.go | 4 +- .../statistics/currencystatistics_test.go | 6 +- .../statistics/fundingstatistics_test.go | 4 +- .../statistics/statistics_test.go | 20 +-- .../strategies/base/base_test.go | 2 +- .../binancecashandcarry_test.go | 10 +- .../dollarcostaverage_test.go | 4 +- .../eventhandlers/strategies/rsi/rsi_test.go | 4 +- .../top2bottom2/top2bottom2_test.go | 2 +- backtester/eventtypes/event/event_test.go | 4 +- backtester/eventtypes/order/order_test.go | 4 +- backtester/funding/funding_test.go | 8 +- .../trackingcurrencies_test.go | 12 +- backtester/report/chart_test.go | 4 +- backtester/report/report_test.go | 8 +- .../exchange_wrapper_issues_test.go | 2 +- .../exchange_wrapper_standards_test.go | 2 +- common/key/key_test.go | 10 +- config/config_test.go | 14 +- currency/manager_test.go | 14 +- currency/pair_test.go | 52 +++---- currency/pairs_test.go | 66 ++++---- currency/translation_test.go | 8 +- docs/ADD_NEW_EXCHANGE.md | 2 +- docs/EXCHANGE_API.md | 4 +- engine/currency_state_manager_test.go | 2 +- engine/datahistory_manager_test.go | 50 +++--- engine/event_manager_test.go | 6 +- engine/helpers_test.go | 16 +- engine/order_manager_test.go | 10 +- engine/rpcserver_test.go | 46 +++--- engine/sync_manager_test.go | 2 +- engine/websocketroutine_manager_test.go | 2 +- exchange/websocket/manager_test.go | 2 +- exchanges/binance/binance_test.go | 142 +++++++++--------- exchanges/binanceus/binanceus_test.go | 26 ++-- exchanges/bitfinex/bitfinex_test.go | 12 +- exchanges/bitmex/bitmex_test.go | 10 +- exchanges/bitstamp/bitstamp_test.go | 4 +- exchanges/btse/btse_test.go | 4 +- exchanges/coinut/coinut_test.go | 6 +- .../currencystate/currency_state_test.go | 2 +- exchanges/deribit/deribit_test.go | 2 +- exchanges/exchange_test.go | 38 ++--- exchanges/exmo/exmo_test.go | 2 +- exchanges/futures/futures_test.go | 38 ++--- exchanges/gateio/gateio_test.go | 26 ++-- exchanges/gemini/gemini_test.go | 4 +- exchanges/hitbtc/hitbtc_test.go | 2 +- exchanges/huobi/huobi_test.go | 20 +-- exchanges/kline/kline_test.go | 8 +- exchanges/kline/request_test.go | 8 +- exchanges/kraken/kraken_test.go | 6 +- exchanges/kucoin/kucoin_test.go | 2 +- exchanges/okx/okx_test.go | 30 ++-- exchanges/order/limits_test.go | 2 +- exchanges/order/order_test.go | 32 ++-- exchanges/orderbook/calculator_test.go | 2 +- exchanges/orderbook/orderbook_test.go | 4 +- .../orderbook/simulator/simulator_test.go | 2 +- exchanges/poloniex/poloniex_test.go | 4 +- exchanges/subscription/subscription_test.go | 4 +- exchanges/ticker/ticker_test.go | 10 +- exchanges/trade/trade_test.go | 2 +- exchanges/yobit/yobit_test.go | 2 +- .../wrappers/gct/exchange/exchange_test.go | 2 +- .../wrappers/validator/validator_test.go | 2 +- 83 files changed, 555 insertions(+), 542 deletions(-) create mode 100644 .github/workflows/misc.yml diff --git a/.github/workflows/misc.yml b/.github/workflows/misc.yml new file mode 100644 index 00000000..0c6ba3f2 --- /dev/null +++ b/.github/workflows/misc.yml @@ -0,0 +1,13 @@ +name: misc +on: [push, pull_request] +jobs: + lint: + name: miscellaneous checks + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Check for currency.NewPair(BTC, USD) used instead of currency.NewBTCUSD + run: | + grep -r -n -E "currency.NewPair\(currency.BTC, currency.USDT?\)" * || exit 0 + echo "::error::Replace currency.NewPair(BTC, USD*) with currency.NewBTCUSD*()" + exit 1 diff --git a/backtester/config/strategyconfig_test.go b/backtester/config/strategyconfig_test.go index c88c637b..4b6cc5ff 100644 --- a/backtester/config/strategyconfig_test.go +++ b/backtester/config/strategyconfig_test.go @@ -50,7 +50,7 @@ var ( initialFunds100000 *decimal.Decimal initialFunds10 *decimal.Decimal - mainCurrencyPair = currency.NewPair(currency.BTC, currency.USDT) + mainCurrencyPair = currency.NewBTCUSDT() ) func TestMain(m *testing.M) { diff --git a/backtester/data/data_test.go b/backtester/data/data_test.go index 33249f3c..53a63ebb 100644 --- a/backtester/data/data_test.go +++ b/backtester/data/data_test.go @@ -21,7 +21,7 @@ const ( a = asset.Spot ) -var p = currency.NewPair(currency.BTC, currency.USD) +var p = currency.NewBTCUSD() type fakeEvent struct { secretID int64 @@ -223,7 +223,7 @@ func TestSetStream(t *testing.T) { if len(b.stream) != 0 { t.Errorf("received '%v' expected '%v'", len(b.stream), 0) } - cp := currency.NewPair(currency.BTC, currency.USD) + cp := currency.NewBTCUSD() err = b.SetStream([]Event{ &fakeEvent{ Base: &event.Base{ @@ -288,7 +288,7 @@ func TestSetStream(t *testing.T) { func TestNext(t *testing.T) { t.Parallel() b := &Base{} - cp := currency.NewPair(currency.BTC, currency.USD) + cp := currency.NewBTCUSD() err := b.SetStream([]Event{ &fakeEvent{ Base: &event.Base{ @@ -344,7 +344,7 @@ func TestNext(t *testing.T) { func TestHistory(t *testing.T) { t.Parallel() b := &Base{} - cp := currency.NewPair(currency.BTC, currency.USD) + cp := currency.NewBTCUSD() err := b.SetStream([]Event{ &fakeEvent{ Base: &event.Base{ @@ -398,7 +398,7 @@ func TestHistory(t *testing.T) { func TestLatest(t *testing.T) { t.Parallel() b := &Base{} - cp := currency.NewPair(currency.BTC, currency.USD) + cp := currency.NewBTCUSD() err := b.SetStream([]Event{ &fakeEvent{ Base: &event.Base{ @@ -463,7 +463,7 @@ func TestLatest(t *testing.T) { func TestList(t *testing.T) { t.Parallel() b := &Base{} - cp := currency.NewPair(currency.BTC, currency.USD) + cp := currency.NewBTCUSD() err := b.SetStream([]Event{ &fakeEvent{ Base: &event.Base{ @@ -505,7 +505,7 @@ func TestList(t *testing.T) { func TestIsLastEvent(t *testing.T) { t.Parallel() b := &Base{} - cp := currency.NewPair(currency.BTC, currency.USD) + cp := currency.NewBTCUSD() err := b.SetStream([]Event{ &fakeEvent{ Base: &event.Base{ @@ -621,7 +621,7 @@ func TestAppendStream(t *testing.T) { t.Errorf("received '%v' expected '%v'", len(b.stream), 0) } tt := time.Now().Add(-time.Hour) - cp := currency.NewPair(currency.BTC, currency.USD) + cp := currency.NewBTCUSD() e.Exchange = "b" e.AssetType = asset.Spot e.CurrencyPair = cp @@ -762,7 +762,7 @@ func (f fakeEvent) GetTime() time.Time { } func (f fakeEvent) Pair() currency.Pair { - return currency.NewPair(currency.BTC, currency.USD) + return currency.NewBTCUSD() } func (f fakeEvent) GetExchange() string { diff --git a/backtester/data/kline/api/api_test.go b/backtester/data/kline/api/api_test.go index efada267..c9de7c7b 100644 --- a/backtester/data/kline/api/api_test.go +++ b/backtester/data/kline/api/api_test.go @@ -21,7 +21,7 @@ func TestLoadCandles(t *testing.T) { exch, err := em.NewExchangeByName(testExchange) require.NoError(t, err, "NewExchangeByName must not error") exch.SetDefaults() - cp := currency.NewPair(currency.BTC, currency.USDT) + cp := currency.NewBTCUSDT() b := exch.GetBase() b.CurrencyPairs.Pairs = make(map[asset.Item]*currency.PairStore) b.CurrencyPairs.Pairs[asset.Spot] = ¤cy.PairStore{ @@ -48,7 +48,7 @@ func TestLoadTrades(t *testing.T) { exch, err := em.NewExchangeByName(testExchange) require.NoError(t, err, "NewExchangeByName must not error") exch.SetDefaults() - cp := currency.NewPair(currency.BTC, currency.USDT) + cp := currency.NewBTCUSDT() b := exch.GetBase() b.CurrencyPairs.Pairs = make(map[asset.Item]*currency.PairStore) b.CurrencyPairs.Pairs[asset.Spot] = ¤cy.PairStore{ diff --git a/backtester/data/kline/csv/csv_test.go b/backtester/data/kline/csv/csv_test.go index 4b8f2c7f..33077586 100644 --- a/backtester/data/kline/csv/csv_test.go +++ b/backtester/data/kline/csv/csv_test.go @@ -16,7 +16,7 @@ const testExchange = "binance" func TestLoadDataCandles(t *testing.T) { exch := testExchange a := asset.Spot - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() _, err := LoadData( common.DataCandle, filepath.Join("..", "..", "..", "..", "testdata", "binance_BTCUSDT_24h_2019_01_01_2020_01_01.csv"), @@ -33,7 +33,7 @@ func TestLoadDataCandles(t *testing.T) { func TestLoadDataTrades(t *testing.T) { exch := testExchange a := asset.Spot - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() _, err := LoadData( common.DataTrade, filepath.Join("..", "..", "..", "..", "testdata", "binance_BTCUSDT_24h-trades_2020_11_16.csv"), @@ -50,7 +50,7 @@ func TestLoadDataTrades(t *testing.T) { func TestLoadDataInvalid(t *testing.T) { exch := testExchange a := asset.Spot - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() _, err := LoadData( -1, filepath.Join("..", "..", "..", "..", "testdata", "binance_BTCUSDT_24h-trades_2020_11_16.csv"), diff --git a/backtester/data/kline/database/database_test.go b/backtester/data/kline/database/database_test.go index bfae6150..1a8fe7c0 100644 --- a/backtester/data/kline/database/database_test.go +++ b/backtester/data/kline/database/database_test.go @@ -57,7 +57,7 @@ func TestMain(m *testing.M) { func TestLoadDataCandles(t *testing.T) { exch := testExchange a := asset.Spot - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() var err error bot := &engine.Engine{} dbConfg := database.Config{ @@ -132,7 +132,7 @@ func TestLoadDataCandles(t *testing.T) { func TestLoadDataTrades(t *testing.T) { exch := testExchange a := asset.Spot - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() var err error bot := &engine.Engine{} dbConfg := database.Config{ @@ -200,7 +200,7 @@ func TestLoadDataTrades(t *testing.T) { func TestLoadDataInvalid(t *testing.T) { exch := testExchange a := asset.Spot - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() dStart := time.Date(2020, 1, 0, 0, 0, 0, 0, time.UTC) dEnd := time.Date(2020, 1, 1, 0, 0, 0, 0, time.UTC) _, err := LoadData(dStart, dEnd, gctkline.FifteenMin.Duration(), exch, -1, p, a, false) diff --git a/backtester/data/kline/kline_test.go b/backtester/data/kline/kline_test.go index 04687ebf..dbbf793f 100644 --- a/backtester/data/kline/kline_test.go +++ b/backtester/data/kline/kline_test.go @@ -23,7 +23,7 @@ func TestLoad(t *testing.T) { t.Parallel() exch := testExchange a := asset.Spot - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() tt := time.Now() d := DataFromKline{ Base: &data.Base{}, @@ -60,7 +60,7 @@ func TestHasDataAtTime(t *testing.T) { dEnd := time.Date(2020, 1, 1, 0, 0, 0, 0, time.UTC) exch := testExchange a := asset.Spot - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() d := DataFromKline{ Base: &data.Base{}, } @@ -148,7 +148,7 @@ func TestHasDataAtTime(t *testing.T) { func TestAppend(t *testing.T) { t.Parallel() a := asset.Spot - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() tt1 := time.Date(2020, 1, 0, 0, 0, 0, 0, time.UTC) tt2 := time.Date(2020, 1, 1, 0, 0, 0, 0, time.UTC) d := DataFromKline{ @@ -211,7 +211,7 @@ func TestStreamOpen(t *testing.T) { t.Parallel() exch := testExchange a := asset.Spot - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() d := DataFromKline{ Base: &data.Base{}, } @@ -258,7 +258,7 @@ func TestStreamVolume(t *testing.T) { t.Parallel() exch := testExchange a := asset.Spot - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() d := DataFromKline{ Base: &data.Base{}, } @@ -305,7 +305,7 @@ func TestStreamClose(t *testing.T) { t.Parallel() exch := testExchange a := asset.Spot - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() d := DataFromKline{ Base: &data.Base{}, } @@ -353,7 +353,7 @@ func TestStreamHigh(t *testing.T) { t.Parallel() exch := testExchange a := asset.Spot - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() d := DataFromKline{ Base: &data.Base{}, } @@ -401,7 +401,7 @@ func TestStreamLow(t *testing.T) { t.Parallel() exch := testExchange a := asset.Spot - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() d := DataFromKline{ Base: &data.Base{}, RangeHolder: &gctkline.IntervalRangeHolder{}, diff --git a/backtester/data/kline/live/live_test.go b/backtester/data/kline/live/live_test.go index 8c153e40..1c0d0284 100644 --- a/backtester/data/kline/live/live_test.go +++ b/backtester/data/kline/live/live_test.go @@ -18,7 +18,7 @@ const testExchange = "okx" func TestLoadCandles(t *testing.T) { t.Parallel() interval := gctkline.OneHour - cp := currency.NewPair(currency.BTC, currency.USDT) + cp := currency.NewBTCUSDT() a := asset.Spot em := engine.NewExchangeManager() exch, err := em.NewExchangeByName(testExchange) @@ -44,7 +44,7 @@ func TestLoadCandles(t *testing.T) { func TestLoadTrades(t *testing.T) { t.Parallel() interval := gctkline.OneMin - cp := currency.NewPair(currency.BTC, currency.USDT) + cp := currency.NewBTCUSDT() a := asset.Spot em := engine.NewExchangeManager() exch, err := em.NewExchangeByName(testExchange) diff --git a/backtester/engine/backtest_test.go b/backtester/engine/backtest_test.go index aaf835e1..80c0ee04 100644 --- a/backtester/engine/backtest_test.go +++ b/backtester/engine/backtest_test.go @@ -142,7 +142,7 @@ func TestLoadDataAPI(t *testing.T) { bt := BackTest{ Reports: &report.Data{}, } - cp := currency.NewPair(currency.BTC, currency.USDT) + cp := currency.NewBTCUSDT() cfg := &config.Config{ CurrencySettings: []config.CurrencySettings{ { @@ -197,7 +197,7 @@ func TestLoadDataCSV(t *testing.T) { bt := BackTest{ Reports: &report.Data{}, } - cp := currency.NewPair(currency.BTC, currency.USDT) + cp := currency.NewBTCUSDT() cfg := &config.Config{ CurrencySettings: []config.CurrencySettings{ { @@ -255,7 +255,7 @@ func TestLoadDataDatabase(t *testing.T) { Reports: &report.Data{}, shutdown: make(chan struct{}), } - cp := currency.NewPair(currency.BTC, currency.USDT) + cp := currency.NewBTCUSDT() cfg := &config.Config{ CurrencySettings: []config.CurrencySettings{ { @@ -329,7 +329,7 @@ func TestLoadDataLive(t *testing.T) { shutdown: make(chan struct{}), } - cp := currency.NewPair(currency.BTC, currency.USDT) + cp := currency.NewBTCUSDT() cfg := &config.Config{ CurrencySettings: []config.CurrencySettings{ { @@ -445,7 +445,7 @@ func TestReset(t *testing.T) { func TestFullCycle(t *testing.T) { t.Parallel() ex := testExchange - cp := currency.NewPair(currency.BTC, currency.USDT) + cp := currency.NewBTCUSDT() a := asset.Spot tt := time.Now() @@ -579,7 +579,7 @@ func TestStop(t *testing.T) { func TestFullCycleMulti(t *testing.T) { t.Parallel() ex := testExchange - cp := currency.NewPair(currency.BTC, currency.USDT) + cp := currency.NewBTCUSDT() a := asset.Spot tt := time.Now() @@ -720,7 +720,7 @@ func TestTriggerLiquidationsForExchange(t *testing.T) { t.Errorf("received '%v' expected '%v'", err, expectedError) } - cp := currency.NewPair(currency.BTC, currency.USDT) + cp := currency.NewBTCUSDT() a := asset.USDTMarginedFutures expectedError = gctcommon.ErrNilPointer ev := &evkline.Kline{ @@ -813,7 +813,7 @@ func TestUpdateStatsForDataEvent(t *testing.T) { t.Errorf("received '%v' expected '%v'", err, expectedError) } - cp := currency.NewPair(currency.BTC, currency.USDT) + cp := currency.NewBTCUSDT() a := asset.Futures ev := &evkline.Kline{ Base: &event.Base{ @@ -891,7 +891,7 @@ func TestProcessSignalEvent(t *testing.T) { EventQueue: &eventholder.Holder{}, shutdown: make(chan struct{}), } - cp := currency.NewPair(currency.BTC, currency.USDT) + cp := currency.NewBTCUSDT() a := asset.USDTMarginedFutures de := &evkline.Kline{ Base: &event.Base{ @@ -959,7 +959,7 @@ func TestProcessOrderEvent(t *testing.T) { DataHolder: &data.HandlerHolder{}, shutdown: make(chan struct{}), } - cp := currency.NewPair(currency.BTC, currency.USDT) + cp := currency.NewBTCUSDT() a := asset.USDTMarginedFutures de := &evkline.Kline{ Base: &event.Base{ @@ -1080,7 +1080,7 @@ func TestProcessFillEvent(t *testing.T) { DataHolder: &data.HandlerHolder{}, shutdown: make(chan struct{}), } - cp := currency.NewPair(currency.BTC, currency.USDT) + cp := currency.NewBTCUSDT() a := asset.Futures tt := time.Now() de := &evkline.Kline{ @@ -1193,7 +1193,7 @@ func TestProcessFuturesFillEvent(t *testing.T) { DataHolder: &data.HandlerHolder{}, shutdown: make(chan struct{}), } - cp := currency.NewPair(currency.BTC, currency.USDT) + cp := currency.NewBTCUSDT() a := asset.Futures de := &evkline.Kline{ Base: &event.Base{ @@ -1347,7 +1347,7 @@ func TestCloseAllPositions(t *testing.T) { dc.dataHolder = bt.DataHolder dc.report = &report.Data{} dc.funding = bt.Funding - cp := currency.NewPair(currency.BTC, currency.USD) + cp := currency.NewBTCUSD() dc.sourcesToCheck = append(dc.sourcesToCheck, &liveDataSourceDataHandler{ exchange: &binance.Binance{}, exchangeName: testExchange, @@ -1427,7 +1427,7 @@ func TestRunLive(t *testing.T) { funding: bt.Funding, } bt.LiveDataHandler = dc - cp := currency.NewPair(currency.BTC, currency.USD) + cp := currency.NewBTCUSD() i := &gctkline.Item{ Pair: cp, UnderlyingPair: cp, @@ -1596,7 +1596,7 @@ func TestGetFees(t *testing.T) { _, _, err = getFees(t.Context(), f, currency.EMPTYPAIR) assert.ErrorIs(t, err, currency.ErrCurrencyPairEmpty) - maker, taker, err := getFees(t.Context(), f, currency.NewPair(currency.BTC, currency.USDT)) + maker, taker, err := getFees(t.Context(), f, currency.NewBTCUSDT()) assert.NoError(t, err, "getFees should not error") assert.NotZero(t, maker, "getFees should return a non-zero maker fee") assert.NotZero(t, taker, "getFees should return a non-zero taker fee") @@ -1914,7 +1914,7 @@ func TestProcessSingleDataEvent(t *testing.T) { if !errors.Is(err, common.ErrNilEvent) { t.Errorf("received '%v' expected '%v'", err, common.ErrNilEvent) } - cp := currency.NewPair(currency.BTC, currency.USDT) + cp := currency.NewBTCUSDT() a := asset.Spot ev := &evkline.Kline{ Base: &event.Base{ diff --git a/backtester/engine/fakeinterfaces_test.go b/backtester/engine/fakeinterfaces_test.go index 7dcf5010..5f689c10 100644 --- a/backtester/engine/fakeinterfaces_test.go +++ b/backtester/engine/fakeinterfaces_test.go @@ -167,7 +167,7 @@ func (f fakeDataHolder) SetDataForCurrency(string, asset.Item, currency.Pair, da } func (f fakeDataHolder) GetAllData() ([]data.Handler, error) { - cp := currency.NewPair(currency.BTC, currency.USD) + cp := currency.NewBTCUSD() return []data.Handler{ &kline.DataFromKline{ Base: &data.Base{}, @@ -321,8 +321,8 @@ func (f fakeStrat) CloseAllPositions([]holdings.Holding, []data.Event) ([]signal Exchange: testExchange, Time: time.Now(), Interval: gctkline.FifteenSecond, - CurrencyPair: currency.NewPair(currency.BTC, currency.USD), - UnderlyingPair: currency.NewPair(currency.BTC, currency.USD), + CurrencyPair: currency.NewBTCUSD(), + UnderlyingPair: currency.NewBTCUSD(), AssetType: asset.Spot, }, OpenPrice: leet, diff --git a/backtester/engine/live_test.go b/backtester/engine/live_test.go index fb62e3ef..a6cf6115 100644 --- a/backtester/engine/live_test.go +++ b/backtester/engine/live_test.go @@ -281,7 +281,7 @@ func TestAppendDataSource(t *testing.T) { t.Errorf("received '%v' expected '%v'", err, currency.ErrCurrencyPairEmpty) } - setup.pair = currency.NewPair(currency.BTC, currency.USDT) + setup.pair = currency.NewBTCUSDT() err = dataHandler.AppendDataSource(setup) if !errors.Is(err, kline.ErrInvalidInterval) { t.Errorf("received '%v' expected '%v'", err, kline.ErrInvalidInterval) @@ -384,7 +384,7 @@ func TestLoadCandleData(t *testing.T) { exch := &binanceus.Binanceus{} exch.SetDefaults() - cp := currency.NewPair(currency.BTC, currency.USDT).Format( + cp := currency.NewBTCUSDT().Format( currency.PairFormat{ Uppercase: true, }) diff --git a/backtester/eventhandlers/exchange/exchange_test.go b/backtester/eventhandlers/exchange/exchange_test.go index e6ca677a..dacb78af 100644 --- a/backtester/eventhandlers/exchange/exchange_test.go +++ b/backtester/eventhandlers/exchange/exchange_test.go @@ -134,18 +134,18 @@ func TestSetCurrency(t *testing.T) { cs := &Settings{ Exchange: f, UseRealOrders: true, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), Asset: asset.Spot, } - e.SetExchangeAssetCurrencySettings(asset.Spot, currency.NewPair(currency.BTC, currency.USDT), cs) - result, err := e.GetCurrencySettings(testExchange, asset.Spot, currency.NewPair(currency.BTC, currency.USDT)) + e.SetExchangeAssetCurrencySettings(asset.Spot, currency.NewBTCUSDT(), cs) + result, err := e.GetCurrencySettings(testExchange, asset.Spot, currency.NewBTCUSDT()) if !errors.Is(err, nil) { t.Errorf("received: %v, expected: %v", err, nil) } if !result.UseRealOrders { t.Error("expected true") } - e.SetExchangeAssetCurrencySettings(asset.Spot, currency.NewPair(currency.BTC, currency.USDT), cs) + e.SetExchangeAssetCurrencySettings(asset.Spot, currency.NewBTCUSDT(), cs) if len(e.CurrencySettings) != 1 { t.Error("expected 1") } @@ -213,7 +213,7 @@ func TestPlaceOrder(t *testing.T) { _, err = e.placeOrder(t.Context(), decimal.NewFromInt(1), decimal.NewFromInt(1), decimal.Zero, false, true, f, bot.OrderManager) assert.ErrorIs(t, err, gctorder.ErrPairIsEmpty) - f.CurrencyPair = currency.NewPair(currency.BTC, currency.USDT) + f.CurrencyPair = currency.NewBTCUSDT() f.AssetType = asset.Spot f.Direction = gctorder.Buy _, err = e.placeOrder(t.Context(), decimal.NewFromInt(1), decimal.NewFromInt(1), decimal.Zero, false, true, f, bot.OrderManager) @@ -240,7 +240,7 @@ func TestExecuteOrder(t *testing.T) { err = bot.OrderManager.Start() require.NoError(t, err, "OrderManager.Start must not error") - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() a := asset.Spot require.NoError(t, exchB.CurrencyPairs.SetAssetEnabled(a, true), "SetAssetEnabled must not error") _, err = exch.UpdateOrderbook(t.Context(), p, a) diff --git a/backtester/eventhandlers/exchange/slippage/slippage_test.go b/backtester/eventhandlers/exchange/slippage/slippage_test.go index b0160800..5a7ad0a5 100644 --- a/backtester/eventhandlers/exchange/slippage/slippage_test.go +++ b/backtester/eventhandlers/exchange/slippage/slippage_test.go @@ -24,7 +24,7 @@ func TestCalculateSlippageByOrderbook(t *testing.T) { b := bitstamp.Bitstamp{} b.SetDefaults() - cp := currency.NewPair(currency.BTC, currency.USD) + cp := currency.NewBTCUSD() ob, err := b.UpdateOrderbook(t.Context(), cp, asset.Spot) require.NoError(t, err, "UpdateOrderbook must not error") diff --git a/backtester/eventhandlers/portfolio/holdings/holdings_test.go b/backtester/eventhandlers/portfolio/holdings/holdings_test.go index b1315d0e..958fcfd9 100644 --- a/backtester/eventhandlers/portfolio/holdings/holdings_test.go +++ b/backtester/eventhandlers/portfolio/holdings/holdings_test.go @@ -151,7 +151,7 @@ func TestUpdateBuyStats(t *testing.T) { Exchange: testExchange, Time: time.Now(), Interval: gctkline.OneHour, - CurrencyPair: currency.NewPair(currency.BTC, currency.USDT), + CurrencyPair: currency.NewBTCUSDT(), AssetType: asset.Spot, }, Direction: order.Buy, @@ -171,7 +171,7 @@ func TestUpdateBuyStats(t *testing.T) { Date: time.Now(), CloseTime: time.Now(), LastUpdated: time.Now(), - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), Trades: nil, Fee: 1, }, @@ -206,7 +206,7 @@ func TestUpdateBuyStats(t *testing.T) { Exchange: testExchange, Time: time.Now(), Interval: gctkline.OneHour, - CurrencyPair: currency.NewPair(currency.BTC, currency.USDT), + CurrencyPair: currency.NewBTCUSDT(), AssetType: asset.Spot, }, Direction: order.Buy, @@ -226,7 +226,7 @@ func TestUpdateBuyStats(t *testing.T) { Date: time.Now(), CloseTime: time.Now(), LastUpdated: time.Now(), - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), Trades: nil, Fee: 0.5, }, @@ -272,7 +272,7 @@ func TestUpdateSellStats(t *testing.T) { Exchange: testExchange, Time: time.Now(), Interval: gctkline.OneHour, - CurrencyPair: currency.NewPair(currency.BTC, currency.USDT), + CurrencyPair: currency.NewBTCUSDT(), AssetType: asset.Spot, }, Direction: order.Buy, @@ -292,7 +292,7 @@ func TestUpdateSellStats(t *testing.T) { Date: time.Now(), CloseTime: time.Now(), LastUpdated: time.Now(), - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), Fee: 1, }, }, p) @@ -329,7 +329,7 @@ func TestUpdateSellStats(t *testing.T) { Exchange: testExchange, Time: time.Now(), Interval: gctkline.OneHour, - CurrencyPair: currency.NewPair(currency.BTC, currency.USDT), + CurrencyPair: currency.NewBTCUSDT(), AssetType: asset.Spot, }, Direction: order.Sell, @@ -349,7 +349,7 @@ func TestUpdateSellStats(t *testing.T) { Date: time.Now(), CloseTime: time.Now(), LastUpdated: time.Now(), - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), Trades: nil, Fee: 1, }, diff --git a/backtester/eventhandlers/portfolio/portfolio_test.go b/backtester/eventhandlers/portfolio/portfolio_test.go index dac0de35..06bba5cd 100644 --- a/backtester/eventhandlers/portfolio/portfolio_test.go +++ b/backtester/eventhandlers/portfolio/portfolio_test.go @@ -103,7 +103,7 @@ func TestSetupCurrencySettingsMap(t *testing.T) { t.Errorf("received: %v, expected: %v", err, errCurrencyPairUnset) } - err = p.SetCurrencySettingsMap(&exchange.Settings{Exchange: ff, Asset: asset.Spot, Pair: currency.NewPair(currency.BTC, currency.USDT)}) + err = p.SetCurrencySettingsMap(&exchange.Settings{Exchange: ff, Asset: asset.Spot, Pair: currency.NewBTCUSDT()}) if !errors.Is(err, nil) { t.Errorf("received: %v, expected: %v", err, nil) } @@ -126,14 +126,14 @@ func TestSetHoldings(t *testing.T) { ff := &binance.Binance{} ff.Name = testExchange - err = p.SetCurrencySettingsMap(&exchange.Settings{Exchange: ff, Asset: asset.Spot, Pair: currency.NewPair(currency.BTC, currency.USDT)}) + err = p.SetCurrencySettingsMap(&exchange.Settings{Exchange: ff, Asset: asset.Spot, Pair: currency.NewBTCUSDT()}) if !errors.Is(err, nil) { t.Errorf("received: %v, expected: %v", err, nil) } err = p.SetHoldingsForTimestamp(&holdings.Holding{ Exchange: testExchange, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), Timestamp: tt, }) if !errors.Is(err, nil) { @@ -143,7 +143,7 @@ func TestSetHoldings(t *testing.T) { err = p.SetHoldingsForTimestamp(&holdings.Holding{ Exchange: testExchange, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), Timestamp: tt, }) if !errors.Is(err, nil) { @@ -162,7 +162,7 @@ func TestGetLatestHoldingsForAllCurrencies(t *testing.T) { err := p.SetHoldingsForTimestamp(&holdings.Holding{ Exchange: testExchange, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), Timestamp: tt, }) if !errors.Is(err, errNoPortfolioSettings) { @@ -171,7 +171,7 @@ func TestGetLatestHoldingsForAllCurrencies(t *testing.T) { ff := &binance.Binance{} ff.Name = testExchange - err = p.SetCurrencySettingsMap(&exchange.Settings{Exchange: ff, Asset: asset.Spot, Pair: currency.NewPair(currency.BTC, currency.USDT)}) + err = p.SetCurrencySettingsMap(&exchange.Settings{Exchange: ff, Asset: asset.Spot, Pair: currency.NewBTCUSDT()}) if !errors.Is(err, nil) { t.Errorf("received: %v, expected: %v", err, nil) } @@ -183,7 +183,7 @@ func TestGetLatestHoldingsForAllCurrencies(t *testing.T) { Offset: 1, Exchange: testExchange, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), Timestamp: tt, }) if !errors.Is(err, nil) { @@ -197,7 +197,7 @@ func TestGetLatestHoldingsForAllCurrencies(t *testing.T) { Offset: 1, Exchange: testExchange, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), Timestamp: tt, }) if !errors.Is(err, nil) { @@ -218,7 +218,7 @@ func TestViewHoldingAtTimePeriod(t *testing.T) { Time: tt, Exchange: testExchange, AssetType: asset.Spot, - CurrencyPair: currency.NewPair(currency.BTC, currency.USDT), + CurrencyPair: currency.NewBTCUSDT(), }, } _, err := p.ViewHoldingAtTimePeriod(s) @@ -228,7 +228,7 @@ func TestViewHoldingAtTimePeriod(t *testing.T) { ff := &binance.Binance{} ff.Name = testExchange - err = p.SetCurrencySettingsMap(&exchange.Settings{Exchange: ff, Asset: asset.Spot, Pair: currency.NewPair(currency.BTC, currency.USDT)}) + err = p.SetCurrencySettingsMap(&exchange.Settings{Exchange: ff, Asset: asset.Spot, Pair: currency.NewBTCUSDT()}) if !errors.Is(err, nil) { t.Errorf("received: %v, expected: %v", err, nil) } @@ -242,7 +242,7 @@ func TestViewHoldingAtTimePeriod(t *testing.T) { Offset: 1, Exchange: testExchange, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), Timestamp: tt, }) if !errors.Is(err, nil) { @@ -252,7 +252,7 @@ func TestViewHoldingAtTimePeriod(t *testing.T) { Offset: 2, Exchange: testExchange, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), Timestamp: tt.Add(time.Hour), }) if !errors.Is(err, nil) { @@ -306,7 +306,7 @@ func TestUpdate(t *testing.T) { Offset: 1, Exchange: testExchange, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), Timestamp: tt, }) if !errors.Is(err, errNoPortfolioSettings) { @@ -315,13 +315,13 @@ func TestUpdate(t *testing.T) { ff := &binance.Binance{} ff.Name = testExchange - err = p.SetCurrencySettingsMap(&exchange.Settings{Exchange: ff, Asset: asset.Spot, Pair: currency.NewPair(currency.BTC, currency.USDT)}) + err = p.SetCurrencySettingsMap(&exchange.Settings{Exchange: ff, Asset: asset.Spot, Pair: currency.NewBTCUSDT()}) if !errors.Is(err, nil) { t.Errorf("received: %v, expected: %v", err, nil) } b.Time = tt b.Exchange = testExchange - b.CurrencyPair = currency.NewPair(currency.BTC, currency.USDT) + b.CurrencyPair = currency.NewBTCUSDT() b.AssetType = asset.Spot err = p.UpdateHoldings(&kline.Kline{ Base: b, @@ -341,12 +341,12 @@ func TestGetComplianceManager(t *testing.T) { ff := &binance.Binance{} ff.Name = testExchange - err = p.SetCurrencySettingsMap(&exchange.Settings{Exchange: ff, Asset: asset.Spot, Pair: currency.NewPair(currency.BTC, currency.USDT)}) + err = p.SetCurrencySettingsMap(&exchange.Settings{Exchange: ff, Asset: asset.Spot, Pair: currency.NewBTCUSDT()}) if !errors.Is(err, nil) { t.Errorf("received: %v, expected: %v", err, nil) } var cm *compliance.Manager - cm, err = p.getComplianceManager(testExchange, asset.Spot, currency.NewPair(currency.BTC, currency.USDT)) + cm, err = p.getComplianceManager(testExchange, asset.Spot, currency.NewBTCUSDT()) if !errors.Is(err, nil) { t.Errorf("received: %v, expected: %v", err, nil) } @@ -372,7 +372,7 @@ func TestAddComplianceSnapshot(t *testing.T) { ff := &binance.Binance{} ff.Name = testExchange - err = p.SetCurrencySettingsMap(&exchange.Settings{Exchange: ff, Asset: asset.Spot, Pair: currency.NewPair(currency.BTC, currency.USDT)}) + err = p.SetCurrencySettingsMap(&exchange.Settings{Exchange: ff, Asset: asset.Spot, Pair: currency.NewBTCUSDT()}) if !errors.Is(err, nil) { t.Errorf("received: %v, expected: %v", err, nil) } @@ -380,12 +380,12 @@ func TestAddComplianceSnapshot(t *testing.T) { err = p.addComplianceSnapshot(&fill.Fill{ Base: &event.Base{ Exchange: testExchange, - CurrencyPair: currency.NewPair(currency.BTC, currency.USDT), + CurrencyPair: currency.NewBTCUSDT(), AssetType: asset.Spot, }, Order: &gctorder.Detail{ Exchange: testExchange, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), AssetType: asset.Spot, }, }) @@ -405,12 +405,12 @@ func TestOnFill(t *testing.T) { f := &fill.Fill{ Base: &event.Base{ Exchange: testExchange, - CurrencyPair: currency.NewPair(currency.BTC, currency.USDT), + CurrencyPair: currency.NewBTCUSDT(), AssetType: asset.Spot, }, Order: &gctorder.Detail{ Exchange: testExchange, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), AssetType: asset.Spot, }, } @@ -420,7 +420,7 @@ func TestOnFill(t *testing.T) { } ff := &binance.Binance{} ff.Name = testExchange - err = p.SetCurrencySettingsMap(&exchange.Settings{Exchange: ff, Asset: asset.Spot, Pair: currency.NewPair(currency.BTC, currency.USDT)}) + err = p.SetCurrencySettingsMap(&exchange.Settings{Exchange: ff, Asset: asset.Spot, Pair: currency.NewBTCUSDT()}) if !errors.Is(err, nil) { t.Errorf("received: %v, expected: %v", err, nil) } @@ -507,12 +507,12 @@ func TestOnSignal(t *testing.T) { } ff := &binance.Binance{} ff.Name = testExchange - err = p.SetCurrencySettingsMap(&exchange.Settings{Exchange: ff, Asset: asset.Spot, Pair: currency.NewPair(currency.BTC, currency.USD)}) + err = p.SetCurrencySettingsMap(&exchange.Settings{Exchange: ff, Asset: asset.Spot, Pair: currency.NewBTCUSD()}) if !errors.Is(err, nil) { t.Errorf("received: %v, expected: %v", err, nil) } b.Exchange = testExchange - b.CurrencyPair = currency.NewPair(currency.BTC, currency.USD) + b.CurrencyPair = currency.NewBTCUSD() b.AssetType = asset.Spot s = &signal.Signal{ Base: b, @@ -546,14 +546,14 @@ func TestOnSignal(t *testing.T) { err = p.SetHoldingsForTimestamp(&holdings.Holding{ Exchange: "lol", Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), Timestamp: time.Now(), QuoteSize: leet, }) if !errors.Is(err, errNoPortfolioSettings) { t.Errorf("received: %v, expected: %v", err, errNoPortfolioSettings) } - cs := &exchange.Settings{Exchange: ff, Asset: asset.Spot, Pair: currency.NewPair(currency.BTC, currency.USD)} + cs := &exchange.Settings{Exchange: ff, Asset: asset.Spot, Pair: currency.NewBTCUSD()} err = p.SetCurrencySettingsMap(cs) if !errors.Is(err, nil) { t.Errorf("received: %v, expected: %v", err, nil) @@ -601,7 +601,7 @@ func TestOnSignal(t *testing.T) { if !errors.Is(err, errNoPortfolioSettings) { t.Errorf("received: %v, expected: %v", err, errNoPortfolioSettings) } - cp := currency.NewPair(currency.BTC, currency.USD) + cp := currency.NewBTCUSD() _, err = p.getSettings(testExchange, asset.Futures, cp) if !errors.Is(err, errNoPortfolioSettings) { t.Errorf("received: %v, expected: %v", err, errNoPortfolioSettings) @@ -629,7 +629,7 @@ func TestOnSignal(t *testing.T) { Status: gctorder.AnyStatus, AssetType: asset.Futures, Date: time.Now(), - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), }) if !errors.Is(err, nil) { t.Errorf("received: %v, expected: %v", err, nil) @@ -952,7 +952,7 @@ func TestTrackFuturesOrder(t *testing.T) { if !errors.Is(err, funding.ErrNotCollateral) { t.Errorf("received '%v' expected '%v", err, funding.ErrNotCollateral) } - cp := currency.NewPair(currency.BTC, currency.USD) + cp := currency.NewBTCUSD() od.Pair = cp od.Exchange = testExchange od.Side = gctorder.Short @@ -1083,7 +1083,7 @@ func TestGetPositions(t *testing.T) { ev := &fill.Fill{ Base: &event.Base{ Exchange: testExchange, - CurrencyPair: currency.NewPair(currency.BTC, currency.USD), + CurrencyPair: currency.NewBTCUSD(), AssetType: asset.Futures, }, } @@ -1111,7 +1111,7 @@ func TestGetLatestPNLForEvent(t *testing.T) { ev := &fill.Fill{ Base: &event.Base{ Exchange: testExchange, - CurrencyPair: currency.NewPair(currency.BTC, currency.USD), + CurrencyPair: currency.NewBTCUSD(), AssetType: asset.Futures, }, } @@ -1187,7 +1187,7 @@ func TestGetFuturesSettingsFromEvent(t *testing.T) { t.Fatalf("received '%v' expected '%v'", err, futures.ErrNotFuturesAsset) } b.Exchange = testExchange - b.CurrencyPair = currency.NewPair(currency.BTC, currency.USDT) + b.CurrencyPair = currency.NewBTCUSDT() b.AssetType = asset.Futures ev := &fill.Fill{ Base: b, @@ -1219,7 +1219,7 @@ func TestGetUnrealisedPNL(t *testing.T) { p := PNLSummary{ Exchange: testExchange, Asset: asset.Futures, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), CollateralCurrency: currency.USDT, Offset: 1, Result: futures.PNLResult{ @@ -1251,7 +1251,7 @@ func TestGetRealisedPNL(t *testing.T) { p := PNLSummary{ Exchange: testExchange, Asset: asset.Futures, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), CollateralCurrency: currency.USDT, Offset: 1, Result: futures.PNLResult{ @@ -1283,7 +1283,7 @@ func TestGetExposure(t *testing.T) { p := PNLSummary{ Exchange: testExchange, Asset: asset.Futures, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), CollateralCurrency: currency.USDT, Offset: 1, Result: futures.PNLResult{ @@ -1308,7 +1308,7 @@ func TestGetCollateralCurrency(t *testing.T) { p := PNLSummary{ Exchange: testExchange, Asset: asset.Futures, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), CollateralCurrency: currency.USDT, Offset: 1, Result: futures.PNLResult{ @@ -1334,7 +1334,7 @@ func TestGetDirection(t *testing.T) { p := PNLSummary{ Exchange: testExchange, Asset: asset.Futures, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), CollateralCurrency: currency.USDT, Offset: 1, Result: futures.PNLResult{ @@ -1452,7 +1452,7 @@ func TestCreateLiquidationOrdersForExchange(t *testing.T) { ff := &binance.Binance{} ff.Name = testExchange - cp := currency.NewPair(currency.BTC, currency.USDT) + cp := currency.NewBTCUSDT() err = p.SetCurrencySettingsMap(&exchange.Settings{Exchange: ff, Asset: asset.Futures, Pair: cp}) if !errors.Is(err, gctcommon.ErrNotYetImplemented) { t.Errorf("received: %v, expected: %v", err, gctcommon.ErrNotYetImplemented) @@ -1570,7 +1570,7 @@ func TestCheckLiquidationStatus(t *testing.T) { } item := asset.Futures - pair := currency.NewPair(currency.BTC, currency.USDT) + pair := currency.NewBTCUSDT() contract, err := funding.CreateItem(testExchange, item, pair.Base, decimal.NewFromInt(100), decimal.Zero) if !errors.Is(err, nil) { t.Errorf("received '%v' expected '%v", err, nil) diff --git a/backtester/eventhandlers/portfolio/risk/risk_test.go b/backtester/eventhandlers/portfolio/risk/risk_test.go index 9e8e32cb..9107f116 100644 --- a/backtester/eventhandlers/portfolio/risk/risk_test.go +++ b/backtester/eventhandlers/portfolio/risk/risk_test.go @@ -18,9 +18,9 @@ import ( func TestAssessHoldingsRatio(t *testing.T) { t.Parallel() - ratio := assessHoldingsRatio(currency.NewPair(currency.BTC, currency.USDT), []holdings.Holding{ + ratio := assessHoldingsRatio(currency.NewBTCUSDT(), []holdings.Holding{ { - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), BaseValue: decimal.NewFromInt(2), }, { @@ -32,9 +32,9 @@ func TestAssessHoldingsRatio(t *testing.T) { t.Errorf("expected %v received %v", 0.5, ratio) } - ratio = assessHoldingsRatio(currency.NewPair(currency.BTC, currency.USDT), []holdings.Holding{ + ratio = assessHoldingsRatio(currency.NewBTCUSDT(), []holdings.Holding{ { - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), BaseValue: decimal.NewFromInt(1), }, { @@ -58,7 +58,7 @@ func TestEvaluateOrder(t *testing.T) { if !errors.Is(err, gctcommon.ErrNilPointer) { t.Error(err) } - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() e := "binance" a := asset.Spot o := &order.Order{ diff --git a/backtester/eventhandlers/portfolio/size/size_test.go b/backtester/eventhandlers/portfolio/size/size_test.go index d3eef826..8f240dd0 100644 --- a/backtester/eventhandlers/portfolio/size/size_test.go +++ b/backtester/eventhandlers/portfolio/size/size_test.go @@ -196,8 +196,8 @@ func TestSizeOrder(t *testing.T) { Offset: 1, Exchange: "binance", Time: time.Now(), - CurrencyPair: currency.NewPair(currency.BTC, currency.USDT), - UnderlyingPair: currency.NewPair(currency.BTC, currency.USDT), + CurrencyPair: currency.NewBTCUSDT(), + UnderlyingPair: currency.NewBTCUSDT(), AssetType: asset.Spot, }, } diff --git a/backtester/eventhandlers/statistics/currencystatistics_test.go b/backtester/eventhandlers/statistics/currencystatistics_test.go index 0169ad2c..c8a637bc 100644 --- a/backtester/eventhandlers/statistics/currencystatistics_test.go +++ b/backtester/eventhandlers/statistics/currencystatistics_test.go @@ -28,7 +28,7 @@ func TestCalculateResults(t *testing.T) { tt1 := time.Now() tt2 := time.Now().Add(gctkline.OneDay.Duration()) exch := testExchange - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() even := &event.Base{ Exchange: exch, Time: tt1, @@ -163,7 +163,7 @@ func TestPrintResults(t *testing.T) { tt2 := time.Now().Add(gctkline.OneDay.Duration()) exch := testExchange a := asset.Spot - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() even := &event.Base{ Exchange: exch, Time: tt1, @@ -310,7 +310,7 @@ func TestAnalysePNLGrowth(t *testing.T) { e := testExchange a := asset.Futures - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() c.Asset = asset.Futures c.Events = append(c.Events, DataAtOffset{PNL: &portfolio.PNLSummary{ diff --git a/backtester/eventhandlers/statistics/fundingstatistics_test.go b/backtester/eventhandlers/statistics/fundingstatistics_test.go index a10fa666..cca396d3 100644 --- a/backtester/eventhandlers/statistics/fundingstatistics_test.go +++ b/backtester/eventhandlers/statistics/fundingstatistics_test.go @@ -53,7 +53,7 @@ func TestCalculateFundingStatistics(t *testing.T) { usdKline := gctkline.Item{ Exchange: "binance", - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), Asset: asset.Spot, Interval: gctkline.OneHour, Candles: []gctkline.Candle{ @@ -176,7 +176,7 @@ func TestCalculateIndividualFundingStatistics(t *testing.T) { if !errors.Is(err, errMissingSnapshots) { t.Errorf("received %v expected %v", err, errMissingSnapshots) } - cp := currency.NewPair(currency.BTC, currency.USD) + cp := currency.NewBTCUSD() ri.USDPairCandle = &kline.DataFromKline{ Base: &data.Base{}, Item: &gctkline.Item{ diff --git a/backtester/eventhandlers/statistics/statistics_test.go b/backtester/eventhandlers/statistics/statistics_test.go index 89f213ee..7c5f3fef 100644 --- a/backtester/eventhandlers/statistics/statistics_test.go +++ b/backtester/eventhandlers/statistics/statistics_test.go @@ -60,7 +60,7 @@ func TestAddDataEventForTime(t *testing.T) { tt := time.Now() exch := testExchange a := asset.Spot - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() s := Statistic{} err := s.SetEventForOffset(nil) if !errors.Is(err, common.ErrNilEvent) { @@ -101,7 +101,7 @@ func TestAddSignalEventForTime(t *testing.T) { tt := time.Now() exch := testExchange a := asset.Spot - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() s := Statistic{} err := s.SetEventForOffset(nil) if !errors.Is(err, common.ErrNilEvent) { @@ -150,7 +150,7 @@ func TestAddExchangeEventForTime(t *testing.T) { tt := time.Now() exch := testExchange a := asset.Spot - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() s := Statistic{} err := s.SetEventForOffset(nil) if !errors.Is(err, common.ErrNilEvent) { @@ -199,7 +199,7 @@ func TestAddFillEventForTime(t *testing.T) { tt := time.Now() exch := testExchange a := asset.Spot - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() s := Statistic{} err := s.SetEventForOffset(nil) if !errors.Is(err, common.ErrNilEvent) { @@ -255,7 +255,7 @@ func TestAddHoldingsForTime(t *testing.T) { tt := time.Now() exch := testExchange a := asset.Spot - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() s := Statistic{} err := s.AddHoldingsForTime(&holdings.Holding{}) if !errors.Is(err, errExchangeAssetPairStatsUnset) { @@ -314,7 +314,7 @@ func TestAddComplianceSnapshotForTime(t *testing.T) { tt := time.Now() exch := testExchange a := asset.Spot - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() s := Statistic{} err := s.AddComplianceSnapshotForTime(nil, nil) @@ -500,7 +500,7 @@ func TestPrintAllEventsChronologically(t *testing.T) { tt := time.Now() exch := testExchange a := asset.Spot - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() err := s.SetEventForOffset(nil) if !errors.Is(err, common.ErrNilEvent) { t.Errorf("received: %v, expected: %v", err, common.ErrNilEvent) @@ -573,7 +573,7 @@ func TestCalculateTheResults(t *testing.T) { tt2 := time.Now().Add(-gctkline.OneDay.Duration() * 6) exch := testExchange a := asset.Spot - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() p2 := currency.NewPair(currency.XRP, currency.DOGE) err = s.SetEventForOffset(nil) if !errors.Is(err, common.ErrNilEvent) { @@ -824,7 +824,7 @@ func TestCalculateBiggestEventDrawdown(t *testing.T) { tt1 := time.Now().Add(-gctkline.OneDay.Duration() * 7).Round(gctkline.OneDay.Duration()) exch := testExchange a := asset.Spot - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() var events []data.Event for i := range int64(100) { tt1 = tt1.Add(gctkline.OneDay.Duration()) @@ -960,7 +960,7 @@ func TestAddPNLForTime(t *testing.T) { tt := time.Now().Add(-gctkline.OneDay.Duration() * 7) exch := testExchange a := asset.Spot - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() err = s.SetEventForOffset(&kline.Kline{ Base: &event.Base{ Exchange: exch, diff --git a/backtester/eventhandlers/strategies/base/base_test.go b/backtester/eventhandlers/strategies/base/base_test.go index 25645b45..80675e26 100644 --- a/backtester/eventhandlers/strategies/base/base_test.go +++ b/backtester/eventhandlers/strategies/base/base_test.go @@ -32,7 +32,7 @@ func TestGetBase(t *testing.T) { tt := time.Now() exch := "binance" a := asset.Spot - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() d := &data.Base{} err = d.SetStream([]data.Event{&kline.Kline{ Base: &event.Base{ diff --git a/backtester/eventhandlers/strategies/binancecashandcarry/binancecashandcarry_test.go b/backtester/eventhandlers/strategies/binancecashandcarry/binancecashandcarry_test.go index 3da764fc..9c8fbcc9 100644 --- a/backtester/eventhandlers/strategies/binancecashandcarry/binancecashandcarry_test.go +++ b/backtester/eventhandlers/strategies/binancecashandcarry/binancecashandcarry_test.go @@ -116,7 +116,7 @@ func TestSortSignals(t *testing.T) { dInsert := time.Date(2020, 1, 1, 0, 0, 0, 0, time.UTC) exch := testExchange a := asset.Spot - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() d := &data.Base{} err := d.SetStream([]data.Event{&eventkline.Kline{ Base: &event.Base{ @@ -321,7 +321,7 @@ func (p portfolerino) GetPositions(common.Event) ([]futures.Position, error) { { Exchange: exchangeName, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), Underlying: currency.BTC, CollateralCurrency: currency.USD, }, @@ -336,14 +336,14 @@ func TestOnSimultaneousSignals(t *testing.T) { t.Errorf("received '%v' expected '%v", err, base.ErrNoDataToProcess) } - cp := currency.NewPair(currency.BTC, currency.USD) + cp := currency.NewBTCUSD() d := &datakline.DataFromKline{ Base: &data.Base{}, Item: &gctkline.Item{ Exchange: exchangeName, Asset: asset.Spot, Pair: cp, - UnderlyingPair: currency.NewPair(currency.BTC, currency.USD), + UnderlyingPair: currency.NewBTCUSD(), }, } tt := time.Now() @@ -450,7 +450,7 @@ func TestCloseAllPositions(t *testing.T) { t.Errorf("received '%v' expected '%v", err, nil) } leet := decimal.NewFromInt(1337) - cp := currency.NewPair(currency.BTC, currency.USD) + cp := currency.NewBTCUSD() h := []holdings.Holding{ { Offset: 1, diff --git a/backtester/eventhandlers/strategies/dollarcostaverage/dollarcostaverage_test.go b/backtester/eventhandlers/strategies/dollarcostaverage/dollarcostaverage_test.go index ea3610e9..500be853 100644 --- a/backtester/eventhandlers/strategies/dollarcostaverage/dollarcostaverage_test.go +++ b/backtester/eventhandlers/strategies/dollarcostaverage/dollarcostaverage_test.go @@ -52,7 +52,7 @@ func TestOnSignal(t *testing.T) { dEnd := time.Date(2020, 1, 1, 0, 0, 0, 0, time.UTC) exch := "binance" a := asset.Spot - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() d := &data.Base{} err = d.SetStream([]data.Event{&eventkline.Kline{ Base: &event.Base{ @@ -139,7 +139,7 @@ func TestOnSignals(t *testing.T) { dEnd := time.Date(2020, 1, 1, 0, 0, 0, 0, time.UTC) exch := "binance" a := asset.Spot - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() d := &data.Base{} err = d.SetStream([]data.Event{&eventkline.Kline{ Base: &event.Base{ diff --git a/backtester/eventhandlers/strategies/rsi/rsi_test.go b/backtester/eventhandlers/strategies/rsi/rsi_test.go index 3dcc522e..7e5ad180 100644 --- a/backtester/eventhandlers/strategies/rsi/rsi_test.go +++ b/backtester/eventhandlers/strategies/rsi/rsi_test.go @@ -93,7 +93,7 @@ func TestOnSignal(t *testing.T) { dEnd := time.Date(2020, 1, 1, 0, 0, 0, 0, time.UTC) exch := "binance" a := asset.Spot - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() d := &data.Base{} err = d.SetStream([]data.Event{&eventkline.Kline{ Base: &event.Base{ @@ -184,7 +184,7 @@ func TestOnSignals(t *testing.T) { dInsert := time.Date(2020, 1, 1, 0, 0, 0, 0, time.UTC) exch := "binance" a := asset.Spot - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() d := &data.Base{} err = d.SetStream([]data.Event{&eventkline.Kline{ Base: &event.Base{ diff --git a/backtester/eventhandlers/strategies/top2bottom2/top2bottom2_test.go b/backtester/eventhandlers/strategies/top2bottom2/top2bottom2_test.go index 99d34230..f0ed6b9f 100644 --- a/backtester/eventhandlers/strategies/top2bottom2/top2bottom2_test.go +++ b/backtester/eventhandlers/strategies/top2bottom2/top2bottom2_test.go @@ -107,7 +107,7 @@ func TestOnSignals(t *testing.T) { dInsert := time.Date(2020, 1, 1, 0, 0, 0, 0, time.UTC) exch := "binance" a := asset.Spot - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() d := &data.Base{} err = d.SetStream([]data.Event{&eventkline.Kline{ Base: &event.Base{ diff --git a/backtester/eventtypes/event/event_test.go b/backtester/eventtypes/event/event_test.go index c3dea563..6a7f2ee5 100644 --- a/backtester/eventtypes/event/event_test.go +++ b/backtester/eventtypes/event/event_test.go @@ -93,7 +93,7 @@ func TestIsEvent(t *testing.T) { func TestPair(t *testing.T) { t.Parallel() e := &Base{ - CurrencyPair: currency.NewPair(currency.BTC, currency.USDT), + CurrencyPair: currency.NewBTCUSDT(), } y := e.Pair() if y.IsEmpty() { @@ -148,7 +148,7 @@ func TestGetBase(t *testing.T) { func TestGetUnderlyingPair(t *testing.T) { t.Parallel() b1 := &Base{ - UnderlyingPair: currency.NewPair(currency.BTC, currency.USDT), + UnderlyingPair: currency.NewBTCUSDT(), } if !b1.UnderlyingPair.Equal(b1.GetUnderlyingPair()) { t.Errorf("expected '%v' received '%v'", b1.UnderlyingPair, b1.GetUnderlyingPair()) diff --git a/backtester/eventtypes/order/order_test.go b/backtester/eventtypes/order/order_test.go index 2f6493fe..d0bdec98 100644 --- a/backtester/eventtypes/order/order_test.go +++ b/backtester/eventtypes/order/order_test.go @@ -44,7 +44,7 @@ func TestIsEmpty(t *testing.T) { t.Parallel() o := Order{ Base: &event.Base{ - CurrencyPair: currency.NewPair(currency.BTC, currency.USDT), + CurrencyPair: currency.NewBTCUSDT(), }, } y := o.CurrencyPair @@ -130,7 +130,7 @@ func TestGetSellLimit(t *testing.T) { func TestPair(t *testing.T) { t.Parallel() - cp := currency.NewPair(currency.BTC, currency.USDT) + cp := currency.NewBTCUSDT() k := Order{ Base: &event.Base{ CurrencyPair: cp, diff --git a/backtester/funding/funding_test.go b/backtester/funding/funding_test.go index 6af3b677..827fac67 100644 --- a/backtester/funding/funding_test.go +++ b/backtester/funding/funding_test.go @@ -395,7 +395,7 @@ func TestGenerateReport(t *testing.T) { Base: &data.Base{}, Item: &gctkline.Item{ Exchange: exchName, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), Asset: a, Interval: gctkline.OneHour, Candles: []gctkline.Candle{ @@ -589,7 +589,7 @@ func TestFundingLiquidate(t *testing.T) { Base: &event.Base{ Exchange: "test", AssetType: asset.Spot, - CurrencyPair: currency.NewPair(currency.BTC, currency.USDT), + CurrencyPair: currency.NewBTCUSDT(), }, }) if !errors.Is(err, nil) { @@ -617,7 +617,7 @@ func TestHasExchangeBeenLiquidated(t *testing.T) { Base: &event.Base{ Exchange: "test", AssetType: asset.Spot, - CurrencyPair: currency.NewPair(currency.BTC, currency.USDT), + CurrencyPair: currency.NewBTCUSDT(), }, } err = f.Liquidate(ev) @@ -751,7 +751,7 @@ func TestUpdateCollateral(t *testing.T) { Base: &event.Base{ Exchange: exchName, AssetType: asset.Futures, - CurrencyPair: currency.NewPair(currency.BTC, currency.USD), + CurrencyPair: currency.NewBTCUSD(), }, } f.items = append(f.items, &Item{ diff --git a/backtester/funding/trackingcurrencies/trackingcurrencies_test.go b/backtester/funding/trackingcurrencies/trackingcurrencies_test.go index 749057c4..e9cdbe54 100644 --- a/backtester/funding/trackingcurrencies/trackingcurrencies_test.go +++ b/backtester/funding/trackingcurrencies/trackingcurrencies_test.go @@ -92,8 +92,8 @@ func TestFindMatchingUSDPairs(t *testing.T) { tests := []testPair{ { description: "already has USDT", - initialPair: currency.NewPair(currency.BTC, currency.USDT), - availablePairs: ¤cy.PairStore{Available: currency.Pairs{currency.NewPair(currency.BTC, currency.USDT)}}, + initialPair: currency.NewBTCUSDT(), + availablePairs: ¤cy.PairStore{Available: currency.Pairs{currency.NewBTCUSDT()}}, basePair: currency.EMPTYPAIR, quotePair: currency.EMPTYPAIR, expectedErr: ErrCurrencyContainsUSD, @@ -101,8 +101,8 @@ func TestFindMatchingUSDPairs(t *testing.T) { { description: "successful", initialPair: currency.NewPair(currency.BTC, currency.LTC), - availablePairs: ¤cy.PairStore{Available: currency.Pairs{currency.NewPair(currency.BTC, currency.LTC), currency.NewPair(currency.BTC, currency.USDT), currency.NewPair(currency.LTC, currency.TUSD)}}, - basePair: currency.NewPair(currency.BTC, currency.USDT), + availablePairs: ¤cy.PairStore{Available: currency.Pairs{currency.NewPair(currency.BTC, currency.LTC), currency.NewBTCUSDT(), currency.NewPair(currency.LTC, currency.TUSD)}}, + basePair: currency.NewBTCUSDT(), quotePair: currency.NewPair(currency.LTC, currency.TUSD), expectedErr: nil, }, @@ -167,7 +167,7 @@ func TestPairContainsUSD(t *testing.T) { { "btcusdt", true, - currency.NewPair(currency.BTC, currency.USDT), + currency.NewBTCUSDT(), }, { "btcdoge", @@ -192,7 +192,7 @@ func TestPairContainsUSD(t *testing.T) { { "btcusd", true, - currency.NewPair(currency.BTC, currency.USDT), + currency.NewBTCUSDT(), }, { "btcaud", diff --git a/backtester/report/chart_test.go b/backtester/report/chart_test.go index f2491b4a..9fe9cfdf 100644 --- a/backtester/report/chart_test.go +++ b/backtester/report/chart_test.go @@ -135,7 +135,7 @@ func TestCreatePNLCharts(t *testing.T) { err = d.SetKlineData(&gctkline.Item{ Exchange: testExchange, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), Asset: asset.Spot, Interval: gctkline.OneDay, Candles: []gctkline.Candle{ @@ -171,7 +171,7 @@ func TestCreateFuturesSpotDiffChart(t *testing.T) { } tt := time.Now() - cp := currency.NewPair(currency.BTC, currency.USD) + cp := currency.NewBTCUSD() cp2 := currency.NewPair(currency.BTC, currency.DOGE) var d Data d.Statistics = &statistics.Statistic{} diff --git a/backtester/report/report_test.go b/backtester/report/report_test.go index 4b258110..14be1168 100644 --- a/backtester/report/report_test.go +++ b/backtester/report/report_test.go @@ -23,7 +23,7 @@ func TestGenerateReport(t *testing.T) { t.Parallel() e := testExchange a := asset.Spot - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() d := Data{ Config: &config.Config{ StrategySettings: config.StrategySettings{ @@ -137,7 +137,7 @@ func TestGenerateReport(t *testing.T) { { Exchange: "Bitstamp", Asset: a, - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), Interval: gctkline.OneDay, Watermark: "BITSTAMP - SPOT - BTC-USD - 1d", Candles: []DetailedCandle{ @@ -349,7 +349,7 @@ func TestEnhanceCandles(t *testing.T) { err = d.SetKlineData(&gctkline.Item{ Exchange: testExchange, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), Asset: asset.Spot, Interval: gctkline.OneDay, Candles: []gctkline.Candle{ @@ -373,7 +373,7 @@ func TestEnhanceCandles(t *testing.T) { err = d.SetKlineData(&gctkline.Item{ Exchange: testExchange, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), Asset: asset.Spot, Interval: gctkline.OneDay, Candles: []gctkline.Candle{ diff --git a/cmd/exchange_wrapper_issues/exchange_wrapper_issues_test.go b/cmd/exchange_wrapper_issues/exchange_wrapper_issues_test.go index 7397e898..d147fcd7 100644 --- a/cmd/exchange_wrapper_issues/exchange_wrapper_issues_test.go +++ b/cmd/exchange_wrapper_issues/exchange_wrapper_issues_test.go @@ -17,7 +17,7 @@ func TestDisruptFormatting(t *testing.T) { t.Fatal("error cannot be nil") } - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() badPair, err := disruptFormatting(p) if err != nil { diff --git a/cmd/exchange_wrapper_standards/exchange_wrapper_standards_test.go b/cmd/exchange_wrapper_standards/exchange_wrapper_standards_test.go index c10a7a71..6b364d15 100644 --- a/cmd/exchange_wrapper_standards/exchange_wrapper_standards_test.go +++ b/cmd/exchange_wrapper_standards/exchange_wrapper_standards_test.go @@ -676,7 +676,7 @@ func getPairFromPairs(t *testing.T, p currency.Pairs) (currency.Pair, error) { return p[i], nil } } - goodBtc := currency.NewPair(currency.BTC, currency.USDT).Format(pFmt) + goodBtc := currency.NewBTCUSDT().Format(pFmt) if p.Contains(goodBtc, true) { return goodBtc, nil } diff --git a/common/key/key_test.go b/common/key/key_test.go index 12a112ad..f5363a16 100644 --- a/common/key/key_test.go +++ b/common/key/key_test.go @@ -10,7 +10,7 @@ import ( func TestMatchesExchangeAsset(t *testing.T) { t.Parallel() - cp := currency.NewPair(currency.BTC, currency.USD) + cp := currency.NewBTCUSD() k := ExchangePairAsset{ Exchange: "test", Base: cp.Base.Item, @@ -33,7 +33,7 @@ func TestMatchesExchangeAsset(t *testing.T) { func TestMatchesPairAsset(t *testing.T) { t.Parallel() - cp := currency.NewPair(currency.BTC, currency.USD) + cp := currency.NewBTCUSD() k := ExchangePairAsset{ Base: cp.Base.Item, Quote: cp.Quote.Item, @@ -48,7 +48,7 @@ func TestMatchesPairAsset(t *testing.T) { if k.MatchesPairAsset(currency.EMPTYPAIR, asset.Futures) { t.Error("expected false") } - if k.MatchesPairAsset(currency.NewPair(currency.BTC, currency.USDT), asset.Spot) { + if k.MatchesPairAsset(currency.NewBTCUSDT(), asset.Spot) { t.Error("expected false") } } @@ -74,7 +74,7 @@ func TestMatchesExchange(t *testing.T) { func TestExchangePairAsset_Pair(t *testing.T) { t.Parallel() - cp := currency.NewPair(currency.BTC, currency.USD) + cp := currency.NewBTCUSD() k := ExchangePairAsset{ Base: currency.BTC.Item, Quote: currency.USD.Item, @@ -93,7 +93,7 @@ func TestExchangePairAsset_Pair(t *testing.T) { func TestPairAsset_Pair(t *testing.T) { t.Parallel() - cp := currency.NewPair(currency.BTC, currency.USD) + cp := currency.NewBTCUSD() k := PairAsset{ Base: currency.BTC.Item, Quote: currency.USD.Item, diff --git a/config/config_test.go b/config/config_test.go index 079633dc..edf07da4 100644 --- a/config/config_test.go +++ b/config/config_test.go @@ -549,7 +549,7 @@ func TestSetPairs(t *testing.T) { t.Parallel() var c Config pairs := currency.Pairs{ - currency.NewPair(currency.BTC, currency.USD), + currency.NewBTCUSD(), currency.NewPair(currency.BTC, currency.EUR), } @@ -804,7 +804,7 @@ func TestSupportsPair(t *testing.T) { Pairs: map[asset.Item]*currency.PairStore{ asset.Spot: { AssetEnabled: true, - Available: []currency.Pair{currency.NewPair(currency.BTC, currency.USD)}, + Available: []currency.Pair{currency.NewBTCUSD()}, ConfigFormat: fmt, RequestFormat: fmt, }, @@ -815,13 +815,13 @@ func TestSupportsPair(t *testing.T) { } assetType := asset.Spot if cfg.SupportsPair("asdf", - currency.NewPair(currency.BTC, currency.USD), assetType) { + currency.NewBTCUSD(), assetType) { t.Error( "TestSupportsPair. Expected error from Non-existent exchange", ) } - if !cfg.SupportsPair(bfx, currency.NewPair(currency.BTC, currency.USD), assetType) { + if !cfg.SupportsPair(bfx, currency.NewBTCUSD(), assetType) { t.Errorf( "expected true", ) @@ -961,7 +961,7 @@ func TestGetAvailablePairs(t *testing.T) { } c.Exchanges[0].CurrencyPairs.Pairs[asset.Spot].Available = currency.Pairs{ - currency.NewPair(currency.BTC, currency.USD), + currency.NewBTCUSD(), } _, err = c.GetAvailablePairs(testFakeExchangeName, asset.Spot) if err != nil { @@ -1004,11 +1004,11 @@ func TestGetEnabledPairs(t *testing.T) { } c.Exchanges[0].CurrencyPairs.Pairs[asset.Spot].Enabled = currency.Pairs{ - currency.NewPair(currency.BTC, currency.USD), + currency.NewBTCUSD(), } c.Exchanges[0].CurrencyPairs.Pairs[asset.Spot].Available = currency.Pairs{ - currency.NewPair(currency.BTC, currency.USD), + currency.NewBTCUSD(), } _, err = c.GetEnabledPairs(testFakeExchangeName, asset.Spot) diff --git a/currency/manager_test.go b/currency/manager_test.go index 55706d6f..1dbbfd52 100644 --- a/currency/manager_test.go +++ b/currency/manager_test.go @@ -400,7 +400,7 @@ func TestDisablePair(t *testing.T) { assert.ErrorIs(t, err, ErrCurrencyPairEmpty, "Empty pair should error") p.Pairs = nil - err = p.DisablePair(asset.Spot, NewPair(BTC, USD)) + err = p.DisablePair(asset.Spot, NewBTCUSD()) assert.ErrorIs(t, err, ErrPairManagerNotInitialised, "Uninitialised PairManager should error") p = initTest(t) @@ -415,7 +415,7 @@ func TestDisablePair(t *testing.T) { err = p.DisablePair(asset.Spot, NewPair(LTC, USD)) assert.ErrorIs(t, err, ErrPairNotFound, "Not Enabled pair should error") - err = p.DisablePair(asset.Spot, NewPair(BTC, USD)) + err = p.DisablePair(asset.Spot, NewBTCUSD()) assert.NoError(t, err, "DisablePair should not error") } @@ -423,13 +423,13 @@ func TestEnablePair(t *testing.T) { t.Parallel() p := initTest(t) - if err := p.EnablePair(asset.Empty, NewPair(BTC, USD)); !errors.Is(err, asset.ErrNotSupported) { + if err := p.EnablePair(asset.Empty, NewBTCUSD()); !errors.Is(err, asset.ErrNotSupported) { t.Fatalf("received: '%v' but expected: '%v'", err, asset.ErrNotSupported) } p.Pairs = nil // Test enabling a pair when the pair manager is not initialised - if err := p.EnablePair(asset.Spot, NewPair(BTC, USD)); err == nil { + if err := p.EnablePair(asset.Spot, NewBTCUSD()); err == nil { t.Error("unexpected result") } @@ -452,7 +452,7 @@ func TestEnablePair(t *testing.T) { } // Test enabling a pair which already is enabled - if err := p.EnablePair(asset.Spot, NewPair(BTC, USD)); err == nil { + if err := p.EnablePair(asset.Spot, NewBTCUSD()); err == nil { t.Error("unexpected result") } @@ -616,7 +616,7 @@ func TestIsPairEnabled(t *testing.T) { func TestEnsureOnePairEnabled(t *testing.T) { t.Parallel() - p := NewPair(BTC, USDT) + p := NewBTCUSDT() pm := PairsManager{ Pairs: map[asset.Item]*PairStore{ asset.Futures: {}, @@ -721,7 +721,7 @@ func TestLoad(t *testing.T) { base := PairsManager{} fmt1 := &PairFormat{Uppercase: true} fmt2 := &PairFormat{Uppercase: true, Delimiter: DashDelimiter} - p := NewPair(BTC, USDT) + p := NewBTCUSDT() tt := int64(1337) seed := PairsManager{ LastUpdated: tt, diff --git a/currency/pair_test.go b/currency/pair_test.go index 1ea45d47..bbeb47c9 100644 --- a/currency/pair_test.go +++ b/currency/pair_test.go @@ -87,13 +87,13 @@ func TestIsCryptoPair(t *testing.T) { t.Error("TestIsCryptoPair. Expected true result") } - if NewPair(BTC, USD).IsCryptoPair() { + if NewBTCUSD().IsCryptoPair() { t.Error("TestIsCryptoPair. Expected false result") } } func TestIsCryptoFiatPair(t *testing.T) { - if !NewPair(BTC, USD).IsCryptoFiatPair() { + if !NewBTCUSD().IsCryptoFiatPair() { t.Error("TestIsCryptoPair. Expected true result") } @@ -113,7 +113,7 @@ func TestIsFiatPair(t *testing.T) { } func TestIsCryptoStablePair(t *testing.T) { - if !NewPair(BTC, USDT).IsCryptoStablePair() { + if !NewBTCUSDT().IsCryptoStablePair() { t.Error("TestIsCryptoStablePair. Expected true result") } @@ -142,7 +142,7 @@ func TestIsStablePair(t *testing.T) { func TestString(t *testing.T) { t.Parallel() - pair := NewPair(BTC, USD) + pair := NewBTCUSD() if actual, expected := defaultPair, pair.String(); actual != expected { t.Errorf("String(): %s was not equal to expected value: %s", actual, expected) @@ -151,7 +151,7 @@ func TestString(t *testing.T) { func TestFirstCurrency(t *testing.T) { t.Parallel() - pair := NewPair(BTC, USD) + pair := NewBTCUSD() if actual, expected := pair.Base, BTC; !actual.Equal(expected) { t.Errorf( "GetFirstCurrency(): %s was not equal to expected value: %s", @@ -162,7 +162,7 @@ func TestFirstCurrency(t *testing.T) { func TestSecondCurrency(t *testing.T) { t.Parallel() - pair := NewPair(BTC, USD) + pair := NewBTCUSD() if actual, expected := pair.Quote, USD; !actual.Equal(expected) { t.Errorf( "GetSecondCurrency(): %s was not equal to expected value: %s", @@ -173,7 +173,7 @@ func TestSecondCurrency(t *testing.T) { func TestPair(t *testing.T) { t.Parallel() - pair := NewPair(BTC, USD) + pair := NewBTCUSD() if actual, expected := pair.String(), defaultPair; actual != expected { t.Errorf( "Pair(): %s was not equal to expected value: %s", @@ -222,8 +222,8 @@ func TestDisplay(t *testing.T) { func TestEquall(t *testing.T) { t.Parallel() - pair := NewPair(BTC, USD) - secondPair := NewPair(BTC, USD) + pair := NewBTCUSD() + secondPair := NewBTCUSD() actual := pair.Equal(secondPair) expected := true if actual != expected { @@ -256,8 +256,8 @@ func TestEquall(t *testing.T) { func TestEqualIncludeReciprocal(t *testing.T) { t.Parallel() - pair := NewPair(BTC, USD) - secondPair := NewPair(BTC, USD) + pair := NewBTCUSD() + secondPair := NewBTCUSD() actual := pair.EqualIncludeReciprocal(secondPair) expected := true if actual != expected { @@ -290,7 +290,7 @@ func TestEqualIncludeReciprocal(t *testing.T) { func TestSwap(t *testing.T) { t.Parallel() - pair := NewPair(BTC, USD) + pair := NewBTCUSD() if actual, expected := pair.Swap().String(), "USDBTC"; actual != expected { t.Errorf( "TestSwap: %s was not equal to expected value: %s", @@ -301,7 +301,7 @@ func TestSwap(t *testing.T) { func TestEmpty(t *testing.T) { t.Parallel() - pair := NewPair(BTC, USD) + pair := NewBTCUSD() if pair.IsEmpty() { t.Error("Empty() returned true when the pair was initialised") } @@ -314,7 +314,7 @@ func TestEmpty(t *testing.T) { func TestNewPair(t *testing.T) { t.Parallel() - pair := NewPair(BTC, USD) + pair := NewBTCUSD() if expected, actual := defaultPair, pair.String(); actual != expected { t.Errorf( "Pair(): %s was not equal to expected value: %s", @@ -471,7 +471,7 @@ func TestNewPairFromFormattedPairs(t *testing.T) { } func TestContainsCurrency(t *testing.T) { - p := NewPair(BTC, USD) + p := NewBTCUSD() if !p.Contains(BTC) { t.Error("TestContains: Expected currency was not found") @@ -506,13 +506,13 @@ func TestFormatPairs(t *testing.T) { } func TestCopyPairFormat(t *testing.T) { - pairOne := NewPair(BTC, USD) + pairOne := NewBTCUSD() pairOne.Delimiter = "-" var pairs []Pair pairs = append(pairs, pairOne, NewPair(LTC, USD)) - testPair := NewPair(BTC, USD) + testPair := NewBTCUSD() testPair.Delimiter = "~" result := CopyPairFormat(testPair, pairs, false) @@ -529,7 +529,7 @@ func TestCopyPairFormat(t *testing.T) { func TestPairsToStringArray(t *testing.T) { var pairs Pairs - pairs = append(pairs, NewPair(BTC, USD)) + pairs = append(pairs, NewBTCUSD()) expected := []string{defaultPair} actual := pairs.Strings() @@ -552,7 +552,7 @@ func TestRandomPairFromPairs(t *testing.T) { // Test that a populated pairs array returns a non-empty currency pair var pairs Pairs - pairs = append(pairs, NewPair(BTC, USD)) + pairs = append(pairs, NewBTCUSD()) result, err = pairs.GetRandomPair() if !errors.Is(err, nil) { t.Fatalf("received: '%v' but expected: '%v'", err, nil) @@ -748,7 +748,7 @@ func TestOther(t *testing.T) { } func TestIsPopulated(t *testing.T) { - if receiver := NewPair(BTC, USDT).IsPopulated(); !receiver { + if receiver := NewBTCUSDT().IsPopulated(); !receiver { t.Fatal("unexpected value") } if receiver := NewPair(BTC, NewCode("USD-1245")).IsPopulated(); !receiver { @@ -765,7 +765,7 @@ func TestIsPopulated(t *testing.T) { func TestGetOrderParameters(t *testing.T) { t.Parallel() - p := NewPair(BTC, USDT) + p := NewBTCUSDT() testCases := []struct { Pair Pair currency Code @@ -847,10 +847,10 @@ func TestIsAssociated(t *testing.T) { associate Pair expectedResult bool }{ - {Pair: NewPair(BTC, USDT), associate: NewPair(BTC, USDT), expectedResult: true}, - {Pair: NewPair(USDT, BTC), associate: NewPair(BTC, USDT), expectedResult: true}, - {Pair: NewPair(BTC, USDT), associate: NewPair(USDT, BTC), expectedResult: true}, - {Pair: NewPair(BTC, USDT), associate: NewPair(XRP, USDT), expectedResult: true}, + {Pair: NewBTCUSDT(), associate: NewBTCUSDT(), expectedResult: true}, + {Pair: NewPair(USDT, BTC), associate: NewBTCUSDT(), expectedResult: true}, + {Pair: NewBTCUSDT(), associate: NewPair(USDT, BTC), expectedResult: true}, + {Pair: NewBTCUSDT(), associate: NewPair(XRP, USDT), expectedResult: true}, {Pair: NewPair(BTC, LTC), associate: NewPair(XRP, USDT), expectedResult: false}, {Pair: NewPair(MA, LTC), associate: NewPair(LTC, USDT), expectedResult: true}, } @@ -867,7 +867,7 @@ func TestIsAssociated(t *testing.T) { func TestPair_GetFormatting(t *testing.T) { t.Parallel() - pFmt, err := NewPair(BTC, USDT).GetFormatting() + pFmt, err := NewBTCUSDT().GetFormatting() require.NoError(t, err) assert.True(t, pFmt.Uppercase) assert.Empty(t, pFmt.Delimiter) diff --git a/currency/pairs_test.go b/currency/pairs_test.go index 24aff225..d250f505 100644 --- a/currency/pairs_test.go +++ b/currency/pairs_test.go @@ -171,7 +171,7 @@ func TestPairsMarshalJSON(t *testing.T) { func TestRemovePairsByFilter(t *testing.T) { t.Parallel() pairs := Pairs{ - NewPair(BTC, USD), + NewBTCUSD(), NewPair(LTC, USD), NewPair(LTC, USDT), } @@ -185,7 +185,7 @@ func TestRemovePairsByFilter(t *testing.T) { func TestGetPairsByFilter(t *testing.T) { t.Parallel() pairs := Pairs{ - NewPair(BTC, USD), + NewBTCUSD(), NewPair(LTC, USD), NewPair(LTC, USDT), } @@ -200,7 +200,7 @@ func TestGetPairsByFilter(t *testing.T) { func TestRemove(t *testing.T) { t.Parallel() oldPairs := Pairs{ - NewPair(BTC, USD), + NewBTCUSD(), NewPair(LTC, USD), NewPair(LTC, USDT), } @@ -221,9 +221,9 @@ func TestRemove(t *testing.T) { func TestAdd(t *testing.T) { t.Parallel() - orig := Pairs{NewPair(BTC, USD), NewPair(LTC, USD), NewPair(LTC, USDT)} + orig := Pairs{NewBTCUSD(), NewPair(LTC, USD), NewPair(LTC, USDT)} p := slices.Clone(orig) - p2 := Pairs{NewPair(BTC, USDT), NewPair(ETH, USD), NewPair(BTC, ETH)} + p2 := Pairs{NewBTCUSDT(), NewPair(ETH, USD), NewPair(BTC, ETH)} pT := p.Add(p...) assert.Equal(t, pT.Join(), orig.Join(), "Adding only existing pairs should return same Pairs") @@ -244,12 +244,12 @@ func TestAdd(t *testing.T) { func TestContains(t *testing.T) { t.Parallel() pairs := Pairs{ - NewPair(BTC, USD), + NewBTCUSD(), NewPair(LTC, USD), NewPair(USD, ZRX), } - if !pairs.Contains(NewPair(BTC, USD), true) { + if !pairs.Contains(NewBTCUSD(), true) { t.Errorf("TestContains: Expected pair was not found") } @@ -269,7 +269,7 @@ func TestContains(t *testing.T) { func TestContainsAll(t *testing.T) { t.Parallel() pairs := Pairs{ - NewPair(BTC, USD), + NewBTCUSD(), NewPair(LTC, USD), NewPair(USD, ZRX), } @@ -279,7 +279,7 @@ func TestContainsAll(t *testing.T) { t.Fatalf("received: '%v' but expected: '%v'", err, ErrCurrencyPairsEmpty) } - err = pairs.ContainsAll(Pairs{NewPair(BTC, USD)}, true) + err = pairs.ContainsAll(Pairs{NewBTCUSD()}, true) if !errors.Is(err, nil) { t.Fatalf("received: '%v' but expected: '%v'", err, nil) } @@ -310,7 +310,7 @@ func TestContainsAll(t *testing.T) { } duplication := Pairs{ - NewPair(BTC, USD), + NewBTCUSD(), NewPair(LTC, USD), NewPair(USD, ZRX), NewPair(USD, ZRX), @@ -329,7 +329,7 @@ func TestDeriveFrom(t *testing.T) { t.Fatalf("received: '%v' but expected: '%v'", err, ErrCurrencyPairsEmpty) } testCases := Pairs{ - NewPair(BTC, USDT), + NewBTCUSDT(), NewPair(USDC, USDT), NewPair(USDC, USD), NewPair(BTC, LTC), @@ -359,7 +359,7 @@ func TestDeriveFrom(t *testing.T) { func TestGetCrypto(t *testing.T) { t.Parallel() pairs := Pairs{ - NewPair(BTC, USD), + NewBTCUSD(), NewPair(LTC, USD), NewPair(USD, NZD), NewPair(LTC, USDT), @@ -370,7 +370,7 @@ func TestGetCrypto(t *testing.T) { func TestGetFiat(t *testing.T) { t.Parallel() pairs := Pairs{ - NewPair(BTC, USD), + NewBTCUSD(), NewPair(LTC, USD), NewPair(USD, NZD), NewPair(LTC, USDT), @@ -381,7 +381,7 @@ func TestGetFiat(t *testing.T) { func TestGetCurrencies(t *testing.T) { t.Parallel() pairs := Pairs{ - NewPair(BTC, USD), + NewBTCUSD(), NewPair(LTC, USD), NewPair(USD, NZD), NewPair(LTC, USDT), @@ -392,7 +392,7 @@ func TestGetCurrencies(t *testing.T) { func TestGetStables(t *testing.T) { t.Parallel() pairs := Pairs{ - NewPair(BTC, USD), + NewBTCUSD(), NewPair(LTC, USD), NewPair(USD, NZD), NewPair(LTC, USDT), @@ -420,7 +420,7 @@ codes: // Prior: 2575473 474.2 ns/op 112 B/op 3 allocs/op func BenchmarkGetCrypto(b *testing.B) { pairs := Pairs{ - NewPair(BTC, USD), + NewBTCUSD(), NewPair(LTC, USD), NewPair(USD, NZD), NewPair(LTC, USDT), @@ -434,7 +434,7 @@ func BenchmarkGetCrypto(b *testing.B) { func TestGetMatch(t *testing.T) { t.Parallel() pairs := Pairs{ - NewPair(BTC, USD), + NewBTCUSD(), NewPair(LTC, USD), NewPair(USD, NZD), NewPair(LTC, USDT), @@ -445,7 +445,7 @@ func TestGetMatch(t *testing.T) { t.Fatalf("received: '%v' but expected '%v'", err, ErrPairNotFound) } - expected := NewPair(BTC, USD) + expected := NewBTCUSD() match, err := pairs.GetMatch(expected) if !errors.Is(err, nil) { t.Fatalf("received: '%v' but expected '%v'", err, nil) @@ -467,7 +467,7 @@ func TestGetMatch(t *testing.T) { func TestGetStablesMatch(t *testing.T) { t.Parallel() pairs := Pairs{ - NewPair(BTC, USD), + NewBTCUSD(), NewPair(LTC, USD), NewPair(USD, NZD), NewPair(LTC, USDT), @@ -517,7 +517,7 @@ func TestGetStablesMatch(t *testing.T) { // Prev: 3490366 373.4 ns/op 296 B/op 11 allocs/op func BenchmarkPairsString(b *testing.B) { pairs := Pairs{ - NewPair(BTC, USD), + NewBTCUSD(), NewPair(LTC, USD), NewPair(USD, NZD), NewPair(LTC, USDT), @@ -535,7 +535,7 @@ func BenchmarkPairsString(b *testing.B) { // Prev: 3746151 317.1 ns/op 720 B/op 4 allocs/op func BenchmarkPairsFormat(b *testing.B) { pairs := Pairs{ - NewPair(BTC, USD), + NewBTCUSD(), NewPair(LTC, USD), NewPair(USD, NZD), NewPair(LTC, USDT), @@ -555,7 +555,7 @@ func BenchmarkPairsFormat(b *testing.B) { // prev: 8188616 148.0 ns/op 336 B/op 3 allocs/op func BenchmarkRemovePairsByFilter(b *testing.B) { pairs := Pairs{ - NewPair(BTC, USD), + NewBTCUSD(), NewPair(LTC, USD), NewPair(USD, NZD), NewPair(LTC, USDT), @@ -572,7 +572,7 @@ func BenchmarkRemovePairsByFilter(b *testing.B) { func TestPairsContainsCurrency(t *testing.T) { t.Parallel() pairs := Pairs{ - NewPair(BTC, USD), + NewBTCUSD(), NewPair(LTC, USD), NewPair(USD, NZD), NewPair(LTC, USDT), @@ -604,7 +604,7 @@ func TestPairsContainsCurrency(t *testing.T) { func TestGetPairsByCurrencies(t *testing.T) { t.Parallel() available := Pairs{ - NewPair(BTC, USD), + NewBTCUSD(), NewPair(LTC, USD), NewPair(USD, NZD), NewPair(LTC, USDT), @@ -619,8 +619,8 @@ func TestGetPairsByCurrencies(t *testing.T) { } enabled = available.GetPairsByCurrencies(Currencies{USD, BTC}) - if !enabled.Contains(NewPair(BTC, USD), true) { - t.Fatalf("received %v but expected to contain %v", enabled, NewPair(BTC, USD)) + if !enabled.Contains(NewBTCUSD(), true) { + t.Fatalf("received %v but expected to contain %v", enabled, NewBTCUSD()) } enabled = available.GetPairsByCurrencies(Currencies{USD, BTC, LTC, NZD, USDT, DAI}) @@ -633,7 +633,7 @@ func TestValidateAndConform(t *testing.T) { t.Parallel() conformMe := Pairs{ - NewPair(BTC, USD), + NewBTCUSD(), NewPair(LTC, USD), NewPair(USD, NZD), NewPair(LTC, USDT), @@ -653,7 +653,7 @@ func TestValidateAndConform(t *testing.T) { } conformMe = Pairs{ - NewPair(BTC, USD), + NewBTCUSD(), NewPair(LTC, USD), NewPair(LINK, USDT), NewPair(USD, NZD), @@ -669,7 +669,7 @@ func TestValidateAndConform(t *testing.T) { } conformMe = Pairs{ - NewPair(BTC, USD), + NewBTCUSD(), NewPair(LTC, USD), NewPair(LINK, USDT), NewPair(USD, NZD), @@ -718,7 +718,7 @@ func TestValidateAndConform(t *testing.T) { func TestPairs_GetFormatting(t *testing.T) { t.Parallel() - pFmt, err := Pairs{NewPair(BTC, USDT)}.GetFormatting() + pFmt, err := Pairs{NewBTCUSDT()}.GetFormatting() require.NoError(t, err) assert.True(t, pFmt.Uppercase) assert.Empty(t, pFmt.Delimiter) @@ -728,7 +728,7 @@ func TestPairs_GetFormatting(t *testing.T) { assert.False(t, pFmt.Uppercase) assert.Equal(t, "/", pFmt.Delimiter) - _, err = Pairs{NewPair(BTC, USDT), NewPairWithDelimiter("eth", "usdt", "/")}.GetFormatting() + _, err = Pairs{NewBTCUSDT(), NewPairWithDelimiter("eth", "usdt", "/")}.GetFormatting() require.ErrorIs(t, err, errPairFormattingInconsistent) _, err = Pairs{NewPairWithDelimiter("eth", "USDT", "/")}.GetFormatting() @@ -763,7 +763,7 @@ func TestGetPairsByQuote(t *testing.T) { } available = Pairs{ - NewPair(BTC, USD), + NewBTCUSD(), NewPair(LTC, USD), NewPair(USD, NZD), NewPair(LTC, USDT), @@ -804,7 +804,7 @@ func TestGetPairsByBase(t *testing.T) { } available = Pairs{ - NewPair(BTC, USD), + NewBTCUSD(), NewPair(LTC, USD), NewPair(USD, NZD), NewPair(LTC, USDT), diff --git a/currency/translation_test.go b/currency/translation_test.go index 8e16eda7..13691879 100644 --- a/currency/translation_test.go +++ b/currency/translation_test.go @@ -8,7 +8,7 @@ import ( ) func TestGetTranslation(t *testing.T) { - currencyPair := NewPair(BTC, USD) + currencyPair := NewBTCUSD() expected := XBT actual := GetTranslation(currencyPair.Base) if !expected.Equal(actual) { @@ -56,7 +56,7 @@ func TestFindMatchingPairsBetween(t *testing.T) { ltcusd := NewPair(LTC, USD) spotPairs := Pairs{ - NewPair(BTC, USD).Format(PairFormat{Delimiter: "DELIMITER"}), + NewBTCUSD().Format(PairFormat{Delimiter: "DELIMITER"}), NewPair(ETH, USD), NewPair(ETH, BTC).Format(PairFormat{Delimiter: "DELIMITER"}), ltcusd, @@ -84,7 +84,7 @@ func TestFindMatchingPairsBetween(t *testing.T) { }) expected := map[keyPair]Pair{ - NewPair(BTC, USD).keyPair(): NewPair(XBT, USDM), + NewBTCUSD().keyPair(): NewPair(XBT, USDM), NewPair(ETH, USD).keyPair(): NewPair(XETH, USDM), NewPair(ETH, BTC).keyPair(): NewPair(XETH, BTCM), ltcusd.keyPair(): ltcusd, @@ -124,7 +124,7 @@ func BenchmarkFindMatchingPairsBetween(b *testing.B) { ltcusd := NewPair(LTC, USD) spotPairs := Pairs{ - NewPair(BTC, USD), + NewBTCUSD(), NewPair(ETH, USD), NewPair(ETH, BTC), ltcusd, diff --git a/docs/ADD_NEW_EXCHANGE.md b/docs/ADD_NEW_EXCHANGE.md index e9334dff..cd7ddd65 100644 --- a/docs/ADD_NEW_EXCHANGE.md +++ b/docs/ADD_NEW_EXCHANGE.md @@ -280,7 +280,7 @@ for i := range bot.Exchanges { // Public calls - wrapper functions -pair := currency.NewPair(currency.BTC, currency.USD) +pair := currency.NewBTCUSD() // Fetches current ticker information tick, err := e.GetCachedTicker(context.Background(), pair, asset.Spot) // e -> f diff --git a/docs/EXCHANGE_API.md b/docs/EXCHANGE_API.md index 4ab04a29..09a90ce7 100644 --- a/docs/EXCHANGE_API.md +++ b/docs/EXCHANGE_API.md @@ -40,7 +40,7 @@ supplied meet the requirements to make an authenticated request. ```go var b bitstamp.Bitstamp b.SetDefaults() - ticker, err := b.GetCachedTicker(context.Background(), currency.NewPair(currency.BTC, currency.USD), asset.Spot) + ticker, err := b.GetCachedTicker(context.Background(), currency.NewBTCUSD(), asset.Spot) if err != nil { // Handle error } @@ -76,7 +76,7 @@ supplied meet the requirements to make an authenticated request. o := &order.Submit{ Exchange: b.Name, // or method GetName() if exchange.IBotInterface - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), Side: order.Sell, Type: order.Limit, Price: 1000000, diff --git a/engine/currency_state_manager_test.go b/engine/currency_state_manager_test.go index 1ad31c17..bba25775 100644 --- a/engine/currency_state_manager_test.go +++ b/engine/currency_state_manager_test.go @@ -118,7 +118,7 @@ func (f *fakerino) GetAvailablePairs(_ asset.Item) (currency.Pairs, error) { if f.GetAvailablePairsError { return nil, errExchange } - return currency.Pairs{currency.NewPair(currency.BTC, currency.USD)}, nil + return currency.Pairs{currency.NewBTCUSD()}, nil } func (f *fakerino) GetBase() *exchange.Base { diff --git a/engine/datahistory_manager_test.go b/engine/datahistory_manager_test.go index fb9f443f..adf8969a 100644 --- a/engine/datahistory_manager_test.go +++ b/engine/datahistory_manager_test.go @@ -155,7 +155,7 @@ func TestUpsertJob(t *testing.T) { t.Errorf("error '%v', expected '%v'", err, errCurrencyNotEnabled) } - dhj.Pair = currency.NewPair(currency.BTC, currency.USD) + dhj.Pair = currency.NewBTCUSD() err = m.UpsertJob(dhj, false) if !errors.Is(err, kline.ErrUnsupportedInterval) { t.Errorf("error '%v', expected '%v'", err, kline.ErrUnsupportedInterval) @@ -182,7 +182,7 @@ func TestUpsertJob(t *testing.T) { Nickname: dhj.Nickname, Exchange: testExchange, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), StartDate: startDate, EndDate: time.Now().Add(-time.Minute), Interval: kline.FifteenMin, @@ -217,7 +217,7 @@ func TestSetJobStatus(t *testing.T) { Nickname: "TestSetJobStatus", Exchange: testExchange, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), StartDate: time.Now().Add(-time.Minute * 5), EndDate: time.Now(), Interval: kline.OneMin, @@ -295,7 +295,7 @@ func TestGetByNickname(t *testing.T) { Nickname: "TestGetByNickname", Exchange: testExchange, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), StartDate: time.Now().Add(-time.Minute * 5), EndDate: time.Now(), Interval: kline.OneMin, @@ -338,7 +338,7 @@ func TestGetByID(t *testing.T) { Nickname: "TestGetByID", Exchange: testExchange, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), StartDate: time.Now().Add(-time.Minute * 5), EndDate: time.Now(), Interval: kline.OneMin, @@ -382,7 +382,7 @@ func TestRetrieveJobs(t *testing.T) { Nickname: "TestRetrieveJobs", Exchange: testExchange, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), StartDate: time.Now().Add(-time.Minute * 5), EndDate: time.Now(), Interval: kline.OneMin, @@ -421,7 +421,7 @@ func TestGetActiveJobs(t *testing.T) { Nickname: "TestGetActiveJobs", Exchange: testExchange, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), StartDate: time.Now().Add(-time.Minute * 5), EndDate: time.Now(), Interval: kline.OneMin, @@ -487,7 +487,7 @@ func TestValidateJob(t *testing.T) { t.Errorf("error '%v', expected '%v'", err, errCurrencyNotEnabled) } - dhj.Pair = currency.NewPair(currency.BTC, currency.USD) + dhj.Pair = currency.NewBTCUSD() err = m.validateJob(dhj) if !errors.Is(err, kline.ErrUnsupportedInterval) { t.Errorf("error '%v', expected '%v'", err, kline.ErrUnsupportedInterval) @@ -547,7 +547,7 @@ func TestGetAllJobStatusBetween(t *testing.T) { Nickname: "TestGetActiveJobs", Exchange: testExchange, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), StartDate: time.Now().Add(-time.Minute * 5), EndDate: time.Now(), Interval: kline.OneMin, @@ -613,7 +613,7 @@ func TestCompareJobsToData(t *testing.T) { Nickname: "TestGenerateJobSummary", Exchange: testExchange, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), StartDate: tt.Add(-time.Minute * 5), EndDate: tt, Interval: kline.OneMin, @@ -662,7 +662,7 @@ func TestRunJob(t *testing.T) { //nolint:tparallel // There is a race condition Nickname: "TestRunJobDataHistoryCandleDataType", Exchange: testExchange, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), StartDate: tt.Add(-kline.FifteenMin.Duration()), EndDate: tt, Interval: kline.FifteenMin, @@ -672,7 +672,7 @@ func TestRunJob(t *testing.T) { //nolint:tparallel // There is a race condition Nickname: "TestRunJobDataHistoryTradeDataType", Exchange: testExchange, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), StartDate: tt.Add(-kline.OneMin.Duration()), EndDate: tt, Interval: kline.OneMin, @@ -682,7 +682,7 @@ func TestRunJob(t *testing.T) { //nolint:tparallel // There is a race condition Nickname: "TestRunJobDataHistoryConvertCandlesDataType", Exchange: testExchange, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), StartDate: tt.Add(-kline.OneHour.Duration()), EndDate: tt, Interval: kline.FifteenMin, @@ -693,7 +693,7 @@ func TestRunJob(t *testing.T) { //nolint:tparallel // There is a race condition Nickname: "TestRunJobDataHistoryConvertTradesDataType", Exchange: testExchange, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), StartDate: tt.Add(-kline.OneHour.Duration()), EndDate: tt, Interval: kline.FifteenMin, @@ -704,7 +704,7 @@ func TestRunJob(t *testing.T) { //nolint:tparallel // There is a race condition Nickname: "TestRunJobDataHistoryCandleValidationDataType", Exchange: testExchange, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), StartDate: tt.Add(-kline.OneHour.Duration()), EndDate: tt, Interval: kline.OneHour, @@ -714,7 +714,7 @@ func TestRunJob(t *testing.T) { //nolint:tparallel // There is a race condition Nickname: "TestRunJobDataHistoryCandleSecondaryValidationDataType", Exchange: testExchange, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), StartDate: tt.Add(-kline.OneMin.Duration()), EndDate: tt, Interval: kline.OneMin, @@ -774,7 +774,7 @@ func TestGenerateJobSummaryTest(t *testing.T) { Nickname: "TestGenerateJobSummary", Exchange: testExchange, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), StartDate: time.Now().Add(-time.Minute * 5), EndDate: time.Now(), Interval: kline.OneMin, @@ -842,7 +842,7 @@ func TestConverters(t *testing.T) { Nickname: "TestProcessJobs", Exchange: testExchange, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), StartDate: time.Now().Add(-time.Hour * 24), EndDate: time.Now(), Interval: kline.OneHour, @@ -915,8 +915,8 @@ func createDHM(t *testing.T) (*DataHistoryManager, *datahistoryjob.DataHistoryJo if !errors.Is(err, nil) { t.Fatalf("error '%v', expected '%v'", err, nil) } - cp := currency.NewPair(currency.BTC, currency.USD) - cp2 := currency.NewPair(currency.BTC, currency.USDT) + cp := currency.NewBTCUSD() + cp2 := currency.NewBTCUSDT() exch.SetDefaults() b := exch.GetBase() b.CurrencyPairs.Pairs = make(map[asset.Item]*currency.PairStore) @@ -1011,7 +1011,7 @@ func TestProcessCandleData(t *testing.T) { Nickname: "", Exchange: testExchange, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), StartDate: time.Now().Add(-kline.OneHour.Duration() * 2).Truncate(kline.OneHour.Duration()), EndDate: time.Now().Truncate(kline.OneHour.Duration()), Interval: kline.OneHour, @@ -1067,7 +1067,7 @@ func TestProcessTradeData(t *testing.T) { Nickname: "", Exchange: testExchange, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), StartDate: time.Now().Add(-kline.OneHour.Duration() * 2).Truncate(kline.OneHour.Duration()), EndDate: time.Now().Truncate(kline.OneHour.Duration()), Interval: kline.OneHour, @@ -1122,7 +1122,7 @@ func TestConvertJobTradesToCandles(t *testing.T) { Nickname: "", Exchange: testExchange, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), StartDate: time.Now().Add(-kline.OneHour.Duration() * 2), EndDate: time.Now(), Interval: kline.OneHour, @@ -1154,7 +1154,7 @@ func TestUpscaleJobCandleData(t *testing.T) { Nickname: "", Exchange: testExchange, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), StartDate: time.Now().Add(-kline.OneHour.Duration() * 24), EndDate: time.Now(), Interval: kline.OneHour, @@ -1186,7 +1186,7 @@ func TestValidateCandles(t *testing.T) { Nickname: "", Exchange: testExchange, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), StartDate: time.Now().Add(-kline.OneHour.Duration() * 2), EndDate: time.Now(), Interval: kline.OneHour, diff --git a/engine/event_manager_test.go b/engine/event_manager_test.go index 49663230..6d888dee 100644 --- a/engine/event_manager_test.go +++ b/engine/event_manager_test.go @@ -284,7 +284,7 @@ func TestCheckEventCondition(t *testing.T) { err = em.Add(exch) require.NoError(t, err, "ExchangeManager Add must not error") - _, err = m.Add(testExchange, ItemPrice, cond, currency.NewPair(currency.BTC, currency.USD), asset.Spot, action) + _, err = m.Add(testExchange, ItemPrice, cond, currency.NewBTCUSD(), asset.Spot, action) require.NoError(t, err, "eventManager Add must not error") m.m.Lock() @@ -292,7 +292,7 @@ func TestCheckEventCondition(t *testing.T) { assert.ErrorIs(t, err, ticker.ErrTickerNotFound) m.m.Unlock() - _, err = exch.UpdateTicker(t.Context(), currency.NewPair(currency.BTC, currency.USD), asset.Spot) + _, err = exch.UpdateTicker(t.Context(), currency.NewBTCUSD(), asset.Spot) require.NoError(t, err, "UpdateTicker must not error") m.m.Lock() @@ -310,7 +310,7 @@ func TestCheckEventCondition(t *testing.T) { assert.ErrorIs(t, err, orderbook.ErrOrderbookNotFound) m.m.Unlock() - _, err = exch.UpdateOrderbook(t.Context(), currency.NewPair(currency.BTC, currency.USD), asset.Spot) + _, err = exch.UpdateOrderbook(t.Context(), currency.NewBTCUSD(), asset.Spot) require.NoError(t, err, "UpdateOrderbook must not error") m.m.Lock() diff --git a/engine/helpers_test.go b/engine/helpers_test.go index 1ca2d141..17b12e2e 100644 --- a/engine/helpers_test.go +++ b/engine/helpers_test.go @@ -42,8 +42,8 @@ var testExchange = "Bitstamp" func CreateTestBot(tb testing.TB) *Engine { tb.Helper() cFormat := ¤cy.PairFormat{Uppercase: true} - cp1 := currency.NewPair(currency.BTC, currency.USD) - cp2 := currency.NewPair(currency.BTC, currency.USDT) + cp1 := currency.NewBTCUSD() + cp2 := currency.NewBTCUSDT() pairs1 := map[asset.Item]*currency.PairStore{ asset.Spot: { @@ -377,8 +377,8 @@ func TestGetSpecificAvailablePairs(t *testing.T) { CurrencyPairs: ¤cy.PairsManager{Pairs: map[asset.Item]*currency.PairStore{ asset.Spot: { AssetEnabled: true, - Enabled: currency.Pairs{currency.NewPair(currency.BTC, currency.USD), currency.NewPair(currency.BTC, c)}, - Available: currency.Pairs{currency.NewPair(currency.BTC, currency.USD), currency.NewPair(currency.BTC, c)}, + Enabled: currency.Pairs{currency.NewBTCUSD(), currency.NewPair(currency.BTC, c)}, + Available: currency.Pairs{currency.NewBTCUSD(), currency.NewPair(currency.BTC, c)}, ConfigFormat: ¤cy.PairFormat{ Uppercase: true, }, @@ -390,7 +390,7 @@ func TestGetSpecificAvailablePairs(t *testing.T) { assetType := asset.Spot result := e.GetSpecificAvailablePairs(true, true, true, true, assetType) - btcUSD := currency.NewPair(currency.BTC, currency.USD) + btcUSD := currency.NewBTCUSD() if !result.Contains(btcUSD, true) { t.Error("Unexpected result") } @@ -682,7 +682,7 @@ func TestMapCurrenciesByExchange(t *testing.T) { e := CreateTestBot(t) pairs := []currency.Pair{ - currency.NewPair(currency.BTC, currency.USD), + currency.NewBTCUSD(), currency.NewPair(currency.BTC, currency.EUR), } @@ -956,11 +956,11 @@ func createDepositEngine(opts *fakeDepositExchangeOpts) *Engine { ps := currency.PairStore{ AssetEnabled: true, Enabled: currency.Pairs{ - currency.NewPair(currency.BTC, currency.USDT), + currency.NewBTCUSDT(), currency.NewPair(currency.XRP, currency.USDT), }, Available: currency.Pairs{ - currency.NewPair(currency.BTC, currency.USDT), + currency.NewBTCUSDT(), currency.NewPair(currency.XRP, currency.USDT), }, } diff --git a/engine/order_manager_test.go b/engine/order_manager_test.go index fe790f2e..6e70aee7 100644 --- a/engine/order_manager_test.go +++ b/engine/order_manager_test.go @@ -29,7 +29,7 @@ type omfExchange struct { exchange.IBotExchange } -var btcusdPair = currency.NewPair(currency.BTC, currency.USD) +var btcusdPair = currency.NewBTCUSD() // CancelOrder overrides testExchange's cancel order function // to do the bare minimum required with no API calls or credentials required @@ -1160,7 +1160,7 @@ func Test_getActiveOrders(t *testing.T) { func TestGetFuturesPositionsForExchange(t *testing.T) { t.Parallel() o := &OrderManager{} - cp := currency.NewPair(currency.BTC, currency.USDT) + cp := currency.NewBTCUSDT() _, err := o.GetFuturesPositionsForExchange("test", asset.Spot, cp) if !errors.Is(err, ErrSubSystemNotStarted) { t.Errorf("received '%v', expected '%v'", err, ErrSubSystemNotStarted) @@ -1208,7 +1208,7 @@ func TestGetFuturesPositionsForExchange(t *testing.T) { func TestClearFuturesPositionsForExchange(t *testing.T) { t.Parallel() o := &OrderManager{} - cp := currency.NewPair(currency.BTC, currency.USDT) + cp := currency.NewBTCUSDT() err := o.ClearFuturesTracking("test", asset.Spot, cp) if !errors.Is(err, ErrSubSystemNotStarted) { t.Errorf("received '%v', expected '%v'", err, ErrSubSystemNotStarted) @@ -1260,7 +1260,7 @@ func TestClearFuturesPositionsForExchange(t *testing.T) { func TestUpdateOpenPositionUnrealisedPNL(t *testing.T) { t.Parallel() o := &OrderManager{} - cp := currency.NewPair(currency.BTC, currency.USDT) + cp := currency.NewBTCUSDT() _, err := o.UpdateOpenPositionUnrealisedPNL("test", asset.Spot, cp, 1, time.Now()) if !errors.Is(err, ErrSubSystemNotStarted) { t.Errorf("received '%v', expected '%v'", err, ErrSubSystemNotStarted) @@ -1395,7 +1395,7 @@ func TestUpdateExisting(t *testing.T) { od.Exchange = testExchange od.AssetType = asset.Futures od.OrderID = "123" - od.Pair = currency.NewPair(currency.BTC, currency.USDT) + od.Pair = currency.NewBTCUSDT() od.Side = order.Buy od.Type = order.Market od.Date = time.Now() diff --git a/engine/rpcserver_test.go b/engine/rpcserver_test.go index b124e0ea..f32698c0 100644 --- a/engine/rpcserver_test.go +++ b/engine/rpcserver_test.go @@ -479,7 +479,7 @@ func RPCTestSetup(t *testing.T) *Engine { } exch.SetDefaults() b := exch.GetBase() - cp := currency.NewPair(currency.BTC, currency.USD) + cp := currency.NewBTCUSD() b.CurrencyPairs.Pairs = make(map[asset.Item]*currency.PairStore) b.CurrencyPairs.Pairs[asset.Spot] = ¤cy.PairStore{ Available: currency.Pairs{cp}, @@ -499,7 +499,7 @@ func RPCTestSetup(t *testing.T) *Engine { } exch.SetDefaults() b = exch.GetBase() - cp = currency.NewPair(currency.BTC, currency.USDT) + cp = currency.NewBTCUSDT() b.CurrencyPairs.Pairs = make(map[asset.Item]*currency.PairStore) b.CurrencyPairs.Pairs[asset.Spot] = ¤cy.PairStore{ Available: currency.Pairs{cp}, @@ -774,7 +774,7 @@ func TestGetHistoricCandles(t *testing.T) { // error checks defaultStart := time.Date(2020, 0, 0, 0, 0, 0, 0, time.UTC) defaultEnd := time.Date(2020, 0, 0, 1, 0, 0, 0, time.UTC) - cp := currency.NewPair(currency.BTC, currency.USD) + cp := currency.NewBTCUSD() _, err := s.GetHistoricCandles(t.Context(), &gctrpc.GetHistoricCandlesRequest{ Exchange: "", Pair: &gctrpc.CurrencyPair{ @@ -935,7 +935,7 @@ func TestFindMissingSavedTradeIntervals(t *testing.T) { t.Error(err) return } - cp := currency.NewPair(currency.BTC, currency.USD) + cp := currency.NewBTCUSD() // no data found response defaultStart := time.Date(2020, 1, 1, 0, 0, 0, 0, time.UTC).UTC() defaultEnd := time.Date(2020, 1, 2, 0, 0, 0, 0, time.UTC).UTC() @@ -1037,7 +1037,7 @@ func TestFindMissingSavedCandleIntervals(t *testing.T) { t.Error(err) return } - cp := currency.NewPair(currency.BTC, currency.USD) + cp := currency.NewBTCUSD() // no data found response defaultStart := time.Date(2020, 0, 0, 0, 0, 0, 0, time.UTC) defaultEnd := time.Date(2020, 0, 0, 4, 0, 0, 0, time.UTC) @@ -1338,7 +1338,7 @@ func TestGetOrders(t *testing.T) { } exch.SetDefaults() b := exch.GetBase() - cp := currency.NewPair(currency.BTC, currency.USDT) + cp := currency.NewBTCUSDT() b.CurrencyPairs.Pairs = make(map[asset.Item]*currency.PairStore) b.CurrencyPairs.Pairs[asset.Spot] = ¤cy.PairStore{ Available: currency.Pairs{cp}, @@ -1449,7 +1449,7 @@ func TestGetOrder(t *testing.T) { } exch.SetDefaults() b := exch.GetBase() - cp := currency.NewPair(currency.BTC, currency.USDT) + cp := currency.NewBTCUSDT() b.CurrencyPairs.Pairs = make(map[asset.Item]*currency.PairStore) b.CurrencyPairs.Pairs[asset.Spot] = ¤cy.PairStore{ Available: currency.Pairs{cp}, @@ -1536,16 +1536,16 @@ func TestGetOrder(t *testing.T) { func TestCheckVars(t *testing.T) { t.Parallel() var e exchange.IBotExchange - err := checkParams("Binance", e, asset.Spot, currency.NewPair(currency.BTC, currency.USDT)) + err := checkParams("Binance", e, asset.Spot, currency.NewBTCUSDT()) assert.ErrorIs(t, err, errExchangeNotLoaded, "checkParams should error correctly") e = &binance.Binance{} - err = checkParams("Binance", e, asset.Spot, currency.NewPair(currency.BTC, currency.USDT)) + err = checkParams("Binance", e, asset.Spot, currency.NewBTCUSDT()) assert.ErrorIs(t, err, errExchangeNotEnabled, "checkParams should error correctly") e.SetEnabled(true) - err = checkParams("Binance", e, asset.Spot, currency.NewPair(currency.BTC, currency.USDT)) + err = checkParams("Binance", e, asset.Spot, currency.NewBTCUSDT()) assert.ErrorIs(t, err, currency.ErrPairManagerNotInitialised, "checkParams should error correctly") b := e.GetBase() @@ -1566,7 +1566,7 @@ func TestCheckVars(t *testing.T) { require.NoError(t, b.SetAssetPairStore(a, ps), "SetAssetPairStore must not error") } - err = checkParams("Binance", e, asset.Spot, currency.NewPair(currency.BTC, currency.USDT)) + err = checkParams("Binance", e, asset.Spot, currency.NewBTCUSDT()) assert.ErrorIs(t, err, errCurrencyPairInvalid, "checkParams should error correctly") data := []currency.Pair{ @@ -1576,13 +1576,13 @@ func TestCheckVars(t *testing.T) { err = b.CurrencyPairs.StorePairs(asset.Spot, data, false) require.NoError(t, err, "StorePairs must not error") - err = checkParams("Binance", e, asset.Spot, currency.NewPair(currency.BTC, currency.USDT)) + err = checkParams("Binance", e, asset.Spot, currency.NewBTCUSDT()) require.ErrorIs(t, err, errCurrencyNotEnabled, "checkParams must error correctly") err = b.CurrencyPairs.EnablePair(asset.Spot, currency.Pair{Delimiter: currency.DashDelimiter, Base: currency.BTC, Quote: currency.USDT}) require.NoError(t, err, "EnablePair must not error") - err = checkParams("Binance", e, asset.Spot, currency.NewPair(currency.BTC, currency.USDT)) + err = checkParams("Binance", e, asset.Spot, currency.NewBTCUSDT()) require.NoError(t, err, "checkParams must not error") } @@ -1658,7 +1658,7 @@ func TestRPCServerUpsertDataHistoryJob(t *testing.T) { } exch.SetDefaults() b := exch.GetBase() - cp := currency.NewPair(currency.BTC, currency.USD) + cp := currency.NewBTCUSD() b.CurrencyPairs.Pairs = make(map[asset.Item]*currency.PairStore) b.CurrencyPairs.Pairs[asset.Spot] = ¤cy.PairStore{ Available: currency.Pairs{cp}, @@ -1713,7 +1713,7 @@ func TestGetDataHistoryJobDetails(t *testing.T) { Nickname: "TestGetDataHistoryJobDetails", Exchange: testExchange, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), StartDate: time.Now().UTC().Add(-time.Minute * 2), EndDate: time.Now().UTC(), Interval: kline.OneMin, @@ -1769,7 +1769,7 @@ func TestSetDataHistoryJobStatus(t *testing.T) { Nickname: "TestDeleteDataHistoryJob", Exchange: testExchange, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), StartDate: time.Now().UTC().Add(-time.Minute * 2), EndDate: time.Now().UTC(), Interval: kline.OneMin, @@ -1827,7 +1827,7 @@ func TestGetActiveDataHistoryJobs(t *testing.T) { Nickname: "TestGetActiveDataHistoryJobs", Exchange: testExchange, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), StartDate: time.Now().UTC().Add(-time.Minute * 2), EndDate: time.Now().UTC(), Interval: kline.OneMin, @@ -1855,7 +1855,7 @@ func TestGetDataHistoryJobsBetween(t *testing.T) { Nickname: "GetDataHistoryJobsBetween", Exchange: testExchange, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), StartDate: time.Now().UTC().Add(-time.Minute * 2), EndDate: time.Now().UTC(), Interval: kline.OneMin, @@ -1900,7 +1900,7 @@ func TestGetDataHistoryJobSummary(t *testing.T) { Nickname: "TestGetDataHistoryJobSummary", Exchange: testExchange, Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), StartDate: time.Now().UTC().Add(-time.Minute * 2), EndDate: time.Now().UTC(), Interval: kline.OneMin, @@ -1929,7 +1929,7 @@ func TestGetManagedOrders(t *testing.T) { } exch.SetDefaults() b := exch.GetBase() - cp := currency.NewPair(currency.BTC, currency.USDT) + cp := currency.NewBTCUSDT() b.CurrencyPairs.Pairs = make(map[asset.Item]*currency.PairStore) b.CurrencyPairs.Pairs[asset.Spot] = ¤cy.PairStore{ Available: currency.Pairs{cp}, @@ -2002,7 +2002,7 @@ func TestGetManagedOrders(t *testing.T) { Side: order.Sell, Status: order.New, AssetType: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), } err = om.Add(&o) if err != nil { @@ -4254,8 +4254,8 @@ func TestGetCurrencyTradeURL(t *testing.T) { b.CurrencyPairs.Pairs = make(map[asset.Item]*currency.PairStore) err = b.CurrencyPairs.Store(asset.Spot, ¤cy.PairStore{ AssetEnabled: true, - Enabled: []currency.Pair{currency.NewPair(currency.BTC, currency.USDT)}, - Available: []currency.Pair{currency.NewPair(currency.BTC, currency.USDT)}, + Enabled: []currency.Pair{currency.NewBTCUSDT()}, + Available: []currency.Pair{currency.NewBTCUSDT()}, RequestFormat: ¤cy.PairFormat{Uppercase: true}, ConfigFormat: ¤cy.PairFormat{Uppercase: true}, }) diff --git a/engine/sync_manager_test.go b/engine/sync_manager_test.go index 950be921..c377b38b 100644 --- a/engine/sync_manager_test.go +++ b/engine/sync_manager_test.go @@ -170,7 +170,7 @@ func TestPrintTickerSummary(t *testing.T) { } atomic.StoreInt32(&m.started, 1) m.PrintTickerSummary(&ticker.Price{ - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), }, "REST", nil) m.fiatDisplayCurrency = currency.USD m.PrintTickerSummary(&ticker.Price{ diff --git a/engine/websocketroutine_manager_test.go b/engine/websocketroutine_manager_test.go index 201383a4..cb15c540 100644 --- a/engine/websocketroutine_manager_test.go +++ b/engine/websocketroutine_manager_test.go @@ -246,7 +246,7 @@ func TestWebsocketRoutineManagerHandleData(t *testing.T) { err = m.websocketDataHandler(exchName, &orderbook.Base{ Exchange: "Bitstamp", - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), }) if err != nil { t.Error(err) diff --git a/exchange/websocket/manager_test.go b/exchange/websocket/manager_test.go index a45a62c1..ebf71fa1 100644 --- a/exchange/websocket/manager_test.go +++ b/exchange/websocket/manager_test.go @@ -861,7 +861,7 @@ func TestFlushChannels(t *testing.T) { newgen := GenSubs{EnabledPairs: []currency.Pair{ currency.NewPair(currency.BTC, currency.AUD), - currency.NewPair(currency.BTC, currency.USDT), + currency.NewBTCUSDT(), }} w := NewManager() diff --git a/exchanges/binance/binance_test.go b/exchanges/binance/binance_test.go index fcf269c7..1e5dbddb 100644 --- a/exchanges/binance/binance_test.go +++ b/exchanges/binance/binance_test.go @@ -203,7 +203,7 @@ func TestUExchangeInfo(t *testing.T) { func TestUFuturesOrderbook(t *testing.T) { t.Parallel() - _, err := b.UFuturesOrderbook(t.Context(), currency.NewPair(currency.BTC, currency.USDT), 1000) + _, err := b.UFuturesOrderbook(t.Context(), currency.NewBTCUSDT(), 1000) if err != nil { t.Error(err) } @@ -211,7 +211,7 @@ func TestUFuturesOrderbook(t *testing.T) { func TestURecentTrades(t *testing.T) { t.Parallel() - _, err := b.URecentTrades(t.Context(), currency.NewPair(currency.BTC, currency.USDT), "", 1000) + _, err := b.URecentTrades(t.Context(), currency.NewBTCUSDT(), "", 1000) if err != nil { t.Error(err) } @@ -219,7 +219,7 @@ func TestURecentTrades(t *testing.T) { func TestUCompressedTrades(t *testing.T) { t.Parallel() - _, err := b.UCompressedTrades(t.Context(), currency.NewPair(currency.BTC, currency.USDT), "", 5, time.Time{}, time.Time{}) + _, err := b.UCompressedTrades(t.Context(), currency.NewBTCUSDT(), "", 5, time.Time{}, time.Time{}) if err != nil { t.Error(err) } @@ -232,7 +232,7 @@ func TestUCompressedTrades(t *testing.T) { func TestUKlineData(t *testing.T) { t.Parallel() - _, err := b.UKlineData(t.Context(), currency.NewPair(currency.BTC, currency.USDT), "1d", 5, time.Time{}, time.Time{}) + _, err := b.UKlineData(t.Context(), currency.NewBTCUSDT(), "1d", 5, time.Time{}, time.Time{}) if err != nil { t.Error(err) } @@ -245,7 +245,7 @@ func TestUKlineData(t *testing.T) { func TestUGetMarkPrice(t *testing.T) { t.Parallel() - _, err := b.UGetMarkPrice(t.Context(), currency.NewPair(currency.BTC, currency.USDT)) + _, err := b.UGetMarkPrice(t.Context(), currency.NewBTCUSDT()) if err != nil { t.Error(err) } @@ -257,7 +257,7 @@ func TestUGetMarkPrice(t *testing.T) { func TestUGetFundingHistory(t *testing.T) { t.Parallel() - _, err := b.UGetFundingHistory(t.Context(), currency.NewPair(currency.BTC, currency.USDT), 1, time.Time{}, time.Time{}) + _, err := b.UGetFundingHistory(t.Context(), currency.NewBTCUSDT(), 1, time.Time{}, time.Time{}) if err != nil { t.Error(err) } @@ -270,7 +270,7 @@ func TestUGetFundingHistory(t *testing.T) { func TestU24HTickerPriceChangeStats(t *testing.T) { t.Parallel() - _, err := b.U24HTickerPriceChangeStats(t.Context(), currency.NewPair(currency.BTC, currency.USDT)) + _, err := b.U24HTickerPriceChangeStats(t.Context(), currency.NewBTCUSDT()) if err != nil { t.Error(err) } @@ -282,7 +282,7 @@ func TestU24HTickerPriceChangeStats(t *testing.T) { func TestUSymbolPriceTicker(t *testing.T) { t.Parallel() - _, err := b.USymbolPriceTicker(t.Context(), currency.NewPair(currency.BTC, currency.USDT)) + _, err := b.USymbolPriceTicker(t.Context(), currency.NewBTCUSDT()) if err != nil { t.Error(err) } @@ -294,7 +294,7 @@ func TestUSymbolPriceTicker(t *testing.T) { func TestUSymbolOrderbookTicker(t *testing.T) { t.Parallel() - _, err := b.USymbolOrderbookTicker(t.Context(), currency.NewPair(currency.BTC, currency.USDT)) + _, err := b.USymbolOrderbookTicker(t.Context(), currency.NewBTCUSDT()) if err != nil { t.Error(err) } @@ -306,7 +306,7 @@ func TestUSymbolOrderbookTicker(t *testing.T) { func TestUOpenInterest(t *testing.T) { t.Parallel() - _, err := b.UOpenInterest(t.Context(), currency.NewPair(currency.BTC, currency.USDT)) + _, err := b.UOpenInterest(t.Context(), currency.NewBTCUSDT()) if err != nil { t.Error(err) } @@ -314,7 +314,7 @@ func TestUOpenInterest(t *testing.T) { func TestUOpenInterestStats(t *testing.T) { t.Parallel() - _, err := b.UOpenInterestStats(t.Context(), currency.NewPair(currency.BTC, currency.USDT), "5m", 1, time.Time{}, time.Time{}) + _, err := b.UOpenInterestStats(t.Context(), currency.NewBTCUSDT(), "5m", 1, time.Time{}, time.Time{}) if err != nil { t.Error(err) } @@ -327,12 +327,12 @@ func TestUOpenInterestStats(t *testing.T) { func TestUTopAcccountsLongShortRatio(t *testing.T) { t.Parallel() - _, err := b.UTopAcccountsLongShortRatio(t.Context(), currency.NewPair(currency.BTC, currency.USDT), "5m", 2, time.Time{}, time.Time{}) + _, err := b.UTopAcccountsLongShortRatio(t.Context(), currency.NewBTCUSDT(), "5m", 2, time.Time{}, time.Time{}) if err != nil { t.Error(err) } start, end := getTime() - _, err = b.UTopAcccountsLongShortRatio(t.Context(), currency.NewPair(currency.BTC, currency.USDT), "5m", 2, start, end) + _, err = b.UTopAcccountsLongShortRatio(t.Context(), currency.NewBTCUSDT(), "5m", 2, start, end) if err != nil { t.Error(err) } @@ -340,12 +340,12 @@ func TestUTopAcccountsLongShortRatio(t *testing.T) { func TestUTopPostionsLongShortRatio(t *testing.T) { t.Parallel() - _, err := b.UTopPostionsLongShortRatio(t.Context(), currency.NewPair(currency.BTC, currency.USDT), "5m", 3, time.Time{}, time.Time{}) + _, err := b.UTopPostionsLongShortRatio(t.Context(), currency.NewBTCUSDT(), "5m", 3, time.Time{}, time.Time{}) if err != nil { t.Error(err) } start, end := getTime() - _, err = b.UTopPostionsLongShortRatio(t.Context(), currency.NewPair(currency.BTC, currency.USDT), "1d", 0, start, end) + _, err = b.UTopPostionsLongShortRatio(t.Context(), currency.NewBTCUSDT(), "1d", 0, start, end) if err != nil { t.Error(err) } @@ -353,12 +353,12 @@ func TestUTopPostionsLongShortRatio(t *testing.T) { func TestUGlobalLongShortRatio(t *testing.T) { t.Parallel() - _, err := b.UGlobalLongShortRatio(t.Context(), currency.NewPair(currency.BTC, currency.USDT), "5m", 3, time.Time{}, time.Time{}) + _, err := b.UGlobalLongShortRatio(t.Context(), currency.NewBTCUSDT(), "5m", 3, time.Time{}, time.Time{}) if err != nil { t.Error(err) } start, end := getTime() - _, err = b.UGlobalLongShortRatio(t.Context(), currency.NewPair(currency.BTC, currency.USDT), "4h", 0, start, end) + _, err = b.UGlobalLongShortRatio(t.Context(), currency.NewBTCUSDT(), "4h", 0, start, end) if err != nil { t.Error(err) } @@ -367,7 +367,7 @@ func TestUGlobalLongShortRatio(t *testing.T) { func TestUTakerBuySellVol(t *testing.T) { t.Parallel() start, end := getTime() - _, err := b.UTakerBuySellVol(t.Context(), currency.NewPair(currency.BTC, currency.USDT), "5m", 10, start, end) + _, err := b.UTakerBuySellVol(t.Context(), currency.NewBTCUSDT(), "5m", 10, start, end) if err != nil { t.Error(err) } @@ -394,7 +394,7 @@ func TestUFuturesNewOrder(t *testing.T) { sharedtestvalues.SkipTestIfCredentialsUnset(t, b, canManipulateRealOrders) _, err := b.UFuturesNewOrder(t.Context(), &UFuturesNewOrderRequest{ - Symbol: currency.NewPair(currency.BTC, currency.USDT), + Symbol: currency.NewBTCUSDT(), Side: "BUY", OrderType: "LIMIT", TimeInForce: "GTC", @@ -428,7 +428,7 @@ func TestUPlaceBatchOrders(t *testing.T) { func TestUGetOrderData(t *testing.T) { t.Parallel() sharedtestvalues.SkipTestIfCredentialsUnset(t, b) - _, err := b.UGetOrderData(t.Context(), currency.NewPair(currency.BTC, currency.USDT), "123", "") + _, err := b.UGetOrderData(t.Context(), currency.NewBTCUSDT(), "123", "") if err != nil { t.Error(err) } @@ -437,7 +437,7 @@ func TestUGetOrderData(t *testing.T) { func TestUCancelOrder(t *testing.T) { t.Parallel() sharedtestvalues.SkipTestIfCredentialsUnset(t, b, canManipulateRealOrders) - _, err := b.UCancelOrder(t.Context(), currency.NewPair(currency.BTC, currency.USDT), "123", "") + _, err := b.UCancelOrder(t.Context(), currency.NewBTCUSDT(), "123", "") if err != nil { t.Error(err) } @@ -446,7 +446,7 @@ func TestUCancelOrder(t *testing.T) { func TestUCancelAllOpenOrders(t *testing.T) { t.Parallel() sharedtestvalues.SkipTestIfCredentialsUnset(t, b, canManipulateRealOrders) - _, err := b.UCancelAllOpenOrders(t.Context(), currency.NewPair(currency.BTC, currency.USDT)) + _, err := b.UCancelAllOpenOrders(t.Context(), currency.NewBTCUSDT()) if err != nil { t.Error(err) } @@ -455,7 +455,7 @@ func TestUCancelAllOpenOrders(t *testing.T) { func TestUCancelBatchOrders(t *testing.T) { t.Parallel() sharedtestvalues.SkipTestIfCredentialsUnset(t, b, canManipulateRealOrders) - _, err := b.UCancelBatchOrders(t.Context(), currency.NewPair(currency.BTC, currency.USDT), []string{"123"}, []string{}) + _, err := b.UCancelBatchOrders(t.Context(), currency.NewBTCUSDT(), []string{"123"}, []string{}) if err != nil { t.Error(err) } @@ -464,7 +464,7 @@ func TestUCancelBatchOrders(t *testing.T) { func TestUAutoCancelAllOpenOrders(t *testing.T) { t.Parallel() sharedtestvalues.SkipTestIfCredentialsUnset(t, b, canManipulateRealOrders) - _, err := b.UAutoCancelAllOpenOrders(t.Context(), currency.NewPair(currency.BTC, currency.USDT), 30) + _, err := b.UAutoCancelAllOpenOrders(t.Context(), currency.NewBTCUSDT(), 30) if err != nil { t.Error(err) } @@ -473,7 +473,7 @@ func TestUAutoCancelAllOpenOrders(t *testing.T) { func TestUFetchOpenOrder(t *testing.T) { t.Parallel() sharedtestvalues.SkipTestIfCredentialsUnset(t, b) - _, err := b.UFetchOpenOrder(t.Context(), currency.NewPair(currency.BTC, currency.USDT), "123", "") + _, err := b.UFetchOpenOrder(t.Context(), currency.NewBTCUSDT(), "123", "") if err != nil { t.Error(err) } @@ -482,7 +482,7 @@ func TestUFetchOpenOrder(t *testing.T) { func TestUAllAccountOpenOrders(t *testing.T) { t.Parallel() sharedtestvalues.SkipTestIfCredentialsUnset(t, b) - _, err := b.UAllAccountOpenOrders(t.Context(), currency.NewPair(currency.BTC, currency.USDT)) + _, err := b.UAllAccountOpenOrders(t.Context(), currency.NewBTCUSDT()) if err != nil { t.Error(err) } @@ -495,7 +495,7 @@ func TestUAllAccountOrders(t *testing.T) { if err != nil { t.Error(err) } - _, err = b.UAllAccountOrders(t.Context(), currency.NewPair(currency.BTC, currency.USDT), 0, 5, time.Now().Add(-time.Hour*4), time.Now()) + _, err = b.UAllAccountOrders(t.Context(), currency.NewBTCUSDT(), 0, 5, time.Now().Add(-time.Hour*4), time.Now()) if err != nil { t.Error(err) } @@ -522,7 +522,7 @@ func TestUAccountInformationV2(t *testing.T) { func TestUChangeInitialLeverageRequest(t *testing.T) { t.Parallel() sharedtestvalues.SkipTestIfCredentialsUnset(t, b, canManipulateRealOrders) - _, err := b.UChangeInitialLeverageRequest(t.Context(), currency.NewPair(currency.BTC, currency.USDT), 2) + _, err := b.UChangeInitialLeverageRequest(t.Context(), currency.NewBTCUSDT(), 2) if err != nil { t.Error(err) } @@ -531,7 +531,7 @@ func TestUChangeInitialLeverageRequest(t *testing.T) { func TestUChangeInitialMarginType(t *testing.T) { t.Parallel() sharedtestvalues.SkipTestIfCredentialsUnset(t, b, canManipulateRealOrders) - err := b.UChangeInitialMarginType(t.Context(), currency.NewPair(currency.BTC, currency.USDT), "ISOLATED") + err := b.UChangeInitialMarginType(t.Context(), currency.NewBTCUSDT(), "ISOLATED") if err != nil { t.Error(err) } @@ -540,7 +540,7 @@ func TestUChangeInitialMarginType(t *testing.T) { func TestUModifyIsolatedPositionMarginReq(t *testing.T) { t.Parallel() sharedtestvalues.SkipTestIfCredentialsUnset(t, b, canManipulateRealOrders) - _, err := b.UModifyIsolatedPositionMarginReq(t.Context(), currency.NewPair(currency.BTC, currency.USDT), "LONG", "add", 5) + _, err := b.UModifyIsolatedPositionMarginReq(t.Context(), currency.NewBTCUSDT(), "LONG", "add", 5) if err != nil { t.Error(err) } @@ -549,7 +549,7 @@ func TestUModifyIsolatedPositionMarginReq(t *testing.T) { func TestUPositionMarginChangeHistory(t *testing.T) { t.Parallel() sharedtestvalues.SkipTestIfCredentialsUnset(t, b, canManipulateRealOrders) - _, err := b.UPositionMarginChangeHistory(t.Context(), currency.NewPair(currency.BTC, currency.USDT), "add", 5, time.Time{}, time.Time{}) + _, err := b.UPositionMarginChangeHistory(t.Context(), currency.NewBTCUSDT(), "add", 5, time.Time{}, time.Time{}) if err != nil { t.Error(err) } @@ -558,7 +558,7 @@ func TestUPositionMarginChangeHistory(t *testing.T) { func TestUPositionsInfoV2(t *testing.T) { t.Parallel() sharedtestvalues.SkipTestIfCredentialsUnset(t, b) - _, err := b.UPositionsInfoV2(t.Context(), currency.NewPair(currency.BTC, currency.USDT)) + _, err := b.UPositionsInfoV2(t.Context(), currency.NewBTCUSDT()) if err != nil { t.Error(err) } @@ -567,7 +567,7 @@ func TestUPositionsInfoV2(t *testing.T) { func TestUAccountTradesHistory(t *testing.T) { t.Parallel() sharedtestvalues.SkipTestIfCredentialsUnset(t, b) - _, err := b.UAccountTradesHistory(t.Context(), currency.NewPair(currency.BTC, currency.USDT), "", 5, time.Time{}, time.Time{}) + _, err := b.UAccountTradesHistory(t.Context(), currency.NewBTCUSDT(), "", 5, time.Time{}, time.Time{}) if err != nil { t.Error(err) } @@ -585,7 +585,7 @@ func TestUAccountIncomeHistory(t *testing.T) { func TestUGetNotionalAndLeverageBrackets(t *testing.T) { t.Parallel() sharedtestvalues.SkipTestIfCredentialsUnset(t, b) - _, err := b.UGetNotionalAndLeverageBrackets(t.Context(), currency.NewPair(currency.BTC, currency.USDT)) + _, err := b.UGetNotionalAndLeverageBrackets(t.Context(), currency.NewBTCUSDT()) if err != nil { t.Error(err) } @@ -594,7 +594,7 @@ func TestUGetNotionalAndLeverageBrackets(t *testing.T) { func TestUPositionsADLEstimate(t *testing.T) { t.Parallel() sharedtestvalues.SkipTestIfCredentialsUnset(t, b) - _, err := b.UPositionsADLEstimate(t.Context(), currency.NewPair(currency.BTC, currency.USDT)) + _, err := b.UPositionsADLEstimate(t.Context(), currency.NewBTCUSDT()) if err != nil { t.Error(err) } @@ -603,7 +603,7 @@ func TestUPositionsADLEstimate(t *testing.T) { func TestUAccountForcedOrders(t *testing.T) { t.Parallel() sharedtestvalues.SkipTestIfCredentialsUnset(t, b) - _, err := b.UAccountForcedOrders(t.Context(), currency.NewPair(currency.BTC, currency.USDT), "ADL", 5, time.Time{}, time.Time{}) + _, err := b.UAccountForcedOrders(t.Context(), currency.NewBTCUSDT(), "ADL", 5, time.Time{}, time.Time{}) if err != nil { t.Error(err) } @@ -933,7 +933,7 @@ func TestAutoCancelAllOpenOrders(t *testing.T) { func TestFuturesOpenOrderData(t *testing.T) { t.Parallel() sharedtestvalues.SkipTestIfCredentialsUnset(t, b) - _, err := b.FuturesOpenOrderData(t.Context(), currency.NewPair(currency.BTC, currency.USDT), "", "") + _, err := b.FuturesOpenOrderData(t.Context(), currency.NewBTCUSDT(), "", "") if err != nil { t.Error(err) } @@ -1111,7 +1111,7 @@ func TestGetOrderBook(t *testing.T) { t.Parallel() _, err := b.GetOrderBook(t.Context(), OrderBookDataRequestParams{ - Symbol: currency.NewPair(currency.BTC, currency.USDT), + Symbol: currency.NewBTCUSDT(), Limit: 1000, }) if err != nil { @@ -1123,7 +1123,7 @@ func TestGetMostRecentTrades(t *testing.T) { t.Parallel() _, err := b.GetMostRecentTrades(t.Context(), RecentTradeRequestParams{ - Symbol: currency.NewPair(currency.BTC, currency.USDT), + Symbol: currency.NewBTCUSDT(), Limit: 15, }) if err != nil { @@ -1145,7 +1145,7 @@ func TestGetAggregatedTrades(t *testing.T) { t.Parallel() _, err := b.GetAggregatedTrades(t.Context(), &AggregatedTradeRequestParams{ - Symbol: currency.NewPair(currency.BTC, currency.USDT), + Symbol: currency.NewBTCUSDT(), Limit: 5, }) if err != nil { @@ -1158,7 +1158,7 @@ func TestGetSpotKline(t *testing.T) { start, end := getTime() _, err := b.GetSpotKline(t.Context(), &KlinesRequestParams{ - Symbol: currency.NewPair(currency.BTC, currency.USDT), + Symbol: currency.NewBTCUSDT(), Interval: kline.FiveMin.Short(), Limit: 24, StartTime: start, @@ -1172,7 +1172,7 @@ func TestGetSpotKline(t *testing.T) { func TestGetAveragePrice(t *testing.T) { t.Parallel() - _, err := b.GetAveragePrice(t.Context(), currency.NewPair(currency.BTC, currency.USDT)) + _, err := b.GetAveragePrice(t.Context(), currency.NewBTCUSDT()) if err != nil { t.Error("Binance GetAveragePrice() error", err) } @@ -1181,7 +1181,7 @@ func TestGetAveragePrice(t *testing.T) { func TestGetPriceChangeStats(t *testing.T) { t.Parallel() - _, err := b.GetPriceChangeStats(t.Context(), currency.NewPair(currency.BTC, currency.USDT)) + _, err := b.GetPriceChangeStats(t.Context(), currency.NewBTCUSDT()) if err != nil { t.Error("Binance GetPriceChangeStats() error", err) } @@ -1193,7 +1193,7 @@ func TestGetTickers(t *testing.T) { require.NoError(t, err) resp, err := b.GetTickers(t.Context(), - currency.NewPair(currency.BTC, currency.USDT), + currency.NewBTCUSDT(), currency.NewPair(currency.ETH, currency.USDT)) require.NoError(t, err) require.Len(t, resp, 2) @@ -1202,7 +1202,7 @@ func TestGetTickers(t *testing.T) { func TestGetLatestSpotPrice(t *testing.T) { t.Parallel() - _, err := b.GetLatestSpotPrice(t.Context(), currency.NewPair(currency.BTC, currency.USDT)) + _, err := b.GetLatestSpotPrice(t.Context(), currency.NewBTCUSDT()) if err != nil { t.Error("Binance GetLatestSpotPrice() error", err) } @@ -1211,7 +1211,7 @@ func TestGetLatestSpotPrice(t *testing.T) { func TestGetBestPrice(t *testing.T) { t.Parallel() - _, err := b.GetBestPrice(t.Context(), currency.NewPair(currency.BTC, currency.USDT)) + _, err := b.GetBestPrice(t.Context(), currency.NewBTCUSDT()) if err != nil { t.Error("Binance GetBestPrice() error", err) } @@ -1220,7 +1220,7 @@ func TestGetBestPrice(t *testing.T) { func TestQueryOrder(t *testing.T) { t.Parallel() - _, err := b.QueryOrder(t.Context(), currency.NewPair(currency.BTC, currency.USDT), "", 1337) + _, err := b.QueryOrder(t.Context(), currency.NewBTCUSDT(), "", 1337) switch { case sharedtestvalues.AreAPICredentialsSet(b) && err != nil: t.Error("QueryOrder() error", err) @@ -1239,7 +1239,7 @@ func TestOpenOrders(t *testing.T) { t.Error(err) } - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() _, err = b.OpenOrders(t.Context(), p) if err != nil { t.Error(err) @@ -1249,7 +1249,7 @@ func TestOpenOrders(t *testing.T) { func TestAllOrders(t *testing.T) { t.Parallel() - _, err := b.AllOrders(t.Context(), currency.NewPair(currency.BTC, currency.USDT), "", "") + _, err := b.AllOrders(t.Context(), currency.NewBTCUSDT(), "", "") switch { case sharedtestvalues.AreAPICredentialsSet(b) && err != nil: t.Error("AllOrders() error", err) @@ -1452,7 +1452,7 @@ func TestNewOrderTest(t *testing.T) { func TestGetHistoricTrades(t *testing.T) { t.Parallel() - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() start := time.Unix(1577977445, 0) // 2020-01-02 15:04:05 end := start.Add(15 * time.Minute) // 2020-01-02 15:19:05 result, err := b.GetHistoricTrades(t.Context(), p, asset.Spot, start, end) @@ -1516,7 +1516,7 @@ func TestGetAggregatedTradesBatched(t *testing.T) { name: "mock custom limit with start time set, no end time", mock: true, args: &AggregatedTradeRequestParams{ - Symbol: currency.NewPair(currency.BTC, currency.USDT), + Symbol: currency.NewBTCUSDT(), StartTime: start, Limit: 1001, }, @@ -1526,7 +1526,7 @@ func TestGetAggregatedTradesBatched(t *testing.T) { { name: "custom limit with start time set, no end time", args: &AggregatedTradeRequestParams{ - Symbol: currency.NewPair(currency.BTC, currency.USDT), + Symbol: currency.NewBTCUSDT(), StartTime: time.Date(2020, 11, 18, 23, 0, 28, 921, time.UTC), Limit: 1001, }, @@ -1537,7 +1537,7 @@ func TestGetAggregatedTradesBatched(t *testing.T) { name: "mock recent trades", mock: true, args: &AggregatedTradeRequestParams{ - Symbol: currency.NewPair(currency.BTC, currency.USDT), + Symbol: currency.NewBTCUSDT(), Limit: 3, }, numExpected: 3, @@ -1578,14 +1578,14 @@ func TestGetAggregatedTradesErrors(t *testing.T) { { name: "get recent trades does not support custom limit", args: &AggregatedTradeRequestParams{ - Symbol: currency.NewPair(currency.BTC, currency.USDT), + Symbol: currency.NewBTCUSDT(), Limit: 1001, }, }, { name: "start time and fromId cannot be both set", args: &AggregatedTradeRequestParams{ - Symbol: currency.NewPair(currency.BTC, currency.USDT), + Symbol: currency.NewBTCUSDT(), StartTime: start, EndTime: start.Add(75 * time.Minute), FromID: 2, @@ -1594,7 +1594,7 @@ func TestGetAggregatedTradesErrors(t *testing.T) { { name: "can't get most recent 5000 (more than 1000 not allowed)", args: &AggregatedTradeRequestParams{ - Symbol: currency.NewPair(currency.BTC, currency.USDT), + Symbol: currency.NewBTCUSDT(), Limit: 5000, }, }, @@ -2383,7 +2383,7 @@ func TestBinance_FormatExchangeKlineInterval(t *testing.T) { func TestGetRecentTrades(t *testing.T) { t.Parallel() - pair := currency.NewPair(currency.BTC, currency.USDT) + pair := currency.NewBTCUSDT() _, err := b.GetRecentTrades(t.Context(), pair, asset.Spot) if err != nil { @@ -2418,7 +2418,7 @@ func TestGetAvailableTransferChains(t *testing.T) { func TestSeedLocalCache(t *testing.T) { t.Parallel() - err := b.SeedLocalCache(t.Context(), currency.NewPair(currency.BTC, currency.USDT)) + err := b.SeedLocalCache(t.Context(), currency.NewBTCUSDT()) if err != nil { t.Fatal(err) } @@ -2471,7 +2471,7 @@ func TestProcessUpdate(t *testing.T) { b := new(Binance) //nolint:govet // Intentional shadow to avoid future copy/paste mistakes require.NoError(t, testexch.Setup(b), "Test instance Setup must not error") b.setupOrderbookManager() - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() var depth WebsocketDepthStream err := json.Unmarshal(websocketDepthUpdate, &depth) if err != nil { @@ -2586,7 +2586,7 @@ func TestWsOrderExecutionReport(t *testing.T) { AssetType: asset.Spot, Date: time.UnixMilli(1616627567900), LastUpdated: time.UnixMilli(1616627567900), - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), } // empty the channel. otherwise mock_test will fail for len(b.Websocket.DataHandler) > 0 { @@ -2775,7 +2775,7 @@ func TestUpdateOrderExecutionLimits(t *testing.T) { t.Parallel() tests := map[asset.Item]currency.Pair{ - asset.Spot: currency.NewPair(currency.BTC, currency.USDT), + asset.Spot: currency.NewBTCUSDT(), asset.Margin: currency.NewPair(currency.ETH, currency.BTC), } for _, a := range []asset.Item{asset.CoinMarginedFutures, asset.USDTMarginedFutures} { @@ -2821,7 +2821,7 @@ func TestGetHistoricalFundingRates(t *testing.T) { s, e := getTime() _, err := b.GetHistoricalFundingRates(t.Context(), &fundingrate.HistoricalRatesRequest{ Asset: asset.USDTMarginedFutures, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), StartDate: s, EndDate: e, IncludePayments: true, @@ -2833,7 +2833,7 @@ func TestGetHistoricalFundingRates(t *testing.T) { _, err = b.GetHistoricalFundingRates(t.Context(), &fundingrate.HistoricalRatesRequest{ Asset: asset.USDTMarginedFutures, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), StartDate: s, EndDate: e, PaymentCurrency: currency.DOGE, @@ -2844,7 +2844,7 @@ func TestGetHistoricalFundingRates(t *testing.T) { r := &fundingrate.HistoricalRatesRequest{ Asset: asset.USDTMarginedFutures, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), StartDate: s, EndDate: e, } @@ -2869,7 +2869,7 @@ func TestGetHistoricalFundingRates(t *testing.T) { func TestGetLatestFundingRates(t *testing.T) { t.Parallel() - cp := currency.NewPair(currency.BTC, currency.USDT) + cp := currency.NewBTCUSDT() _, err := b.GetLatestFundingRates(t.Context(), &fundingrate.LatestRateRequest{ Asset: asset.USDTMarginedFutures, Pair: cp, @@ -2899,7 +2899,7 @@ func TestGetLatestFundingRates(t *testing.T) { func TestIsPerpetualFutureCurrency(t *testing.T) { t.Parallel() - is, err := b.IsPerpetualFutureCurrency(asset.Binary, currency.NewPair(currency.BTC, currency.USDT)) + is, err := b.IsPerpetualFutureCurrency(asset.Binary, currency.NewBTCUSDT()) if err != nil { t.Error(err) } @@ -2907,7 +2907,7 @@ func TestIsPerpetualFutureCurrency(t *testing.T) { t.Error("expected false") } - is, err = b.IsPerpetualFutureCurrency(asset.CoinMarginedFutures, currency.NewPair(currency.BTC, currency.USDT)) + is, err = b.IsPerpetualFutureCurrency(asset.CoinMarginedFutures, currency.NewBTCUSDT()) if err != nil { t.Error(err) } @@ -2922,7 +2922,7 @@ func TestIsPerpetualFutureCurrency(t *testing.T) { t.Error("expected true") } - is, err = b.IsPerpetualFutureCurrency(asset.USDTMarginedFutures, currency.NewPair(currency.BTC, currency.USDT)) + is, err = b.IsPerpetualFutureCurrency(asset.USDTMarginedFutures, currency.NewBTCUSDT()) if err != nil { t.Error(err) } @@ -2941,7 +2941,7 @@ func TestIsPerpetualFutureCurrency(t *testing.T) { func TestGetUserMarginInterestHistory(t *testing.T) { t.Parallel() sharedtestvalues.SkipTestIfCredentialsUnset(t, b) - _, err := b.GetUserMarginInterestHistory(t.Context(), currency.USDT, currency.NewPair(currency.BTC, currency.USDT), time.Now().Add(-time.Hour*24), time.Now(), 1, 10, false) + _, err := b.GetUserMarginInterestHistory(t.Context(), currency.USDT, currency.NewBTCUSDT(), time.Now().Add(-time.Hour*24), time.Now(), 1, 10, false) if err != nil { t.Error(err) } @@ -3106,7 +3106,7 @@ func TestSetMarginType(t *testing.T) { t.Parallel() sharedtestvalues.SkipTestIfCredentialsUnset(t, b, canManipulateRealOrders) - err := b.SetMarginType(t.Context(), asset.USDTMarginedFutures, currency.NewPair(currency.BTC, currency.USDT), margin.Isolated) + err := b.SetMarginType(t.Context(), asset.USDTMarginedFutures, currency.NewBTCUSDT(), margin.Isolated) if !errors.Is(err, nil) { t.Error(err) } @@ -3120,7 +3120,7 @@ func TestSetMarginType(t *testing.T) { t.Error(err) } - err = b.SetMarginType(t.Context(), asset.Spot, currency.NewPair(currency.BTC, currency.USDT), margin.Isolated) + err = b.SetMarginType(t.Context(), asset.Spot, currency.NewBTCUSDT(), margin.Isolated) if !errors.Is(err, asset.ErrNotSupported) { t.Error(err) } diff --git a/exchanges/binanceus/binanceus_test.go b/exchanges/binanceus/binanceus_test.go index a5cc7336..56732467 100644 --- a/exchanges/binanceus/binanceus_test.go +++ b/exchanges/binanceus/binanceus_test.go @@ -34,7 +34,7 @@ const ( var ( bi = &Binanceus{} - testPairMapping = currency.NewPair(currency.BTC, currency.USDT) + testPairMapping = currency.NewBTCUSDT() // this lock guards against orderbook tests race binanceusOrderBookLock = &sync.Mutex{} ) @@ -210,7 +210,7 @@ func TestSubmitOrder(t *testing.T) { func TestCancelOrder(t *testing.T) { t.Parallel() - pair := currency.NewPair(currency.BTC, currency.USD) + pair := currency.NewBTCUSD() err := bi.CancelOrder(t.Context(), &order.Cancel{ AssetType: asset.Spot, OrderID: "1337", @@ -385,7 +385,7 @@ func TestGetFee(t *testing.T) { func TestGetHistoricCandles(t *testing.T) { t.Parallel() - pair := currency.NewPair(currency.BTC, currency.USDT) + pair := currency.NewBTCUSDT() startTime := time.Date(2020, 9, 1, 0, 0, 0, 0, time.UTC) endTime := time.Date(2021, 2, 15, 0, 0, 0, 0, time.UTC) @@ -402,7 +402,7 @@ func TestGetHistoricCandles(t *testing.T) { func TestGetHistoricCandlesExtended(t *testing.T) { t.Parallel() - pair := currency.NewPair(currency.BTC, currency.USDT) + pair := currency.NewBTCUSDT() startTime := time.Date(2020, 9, 1, 0, 0, 0, 0, time.UTC) endTime := time.Date(2021, 2, 15, 0, 0, 0, 0, time.UTC) @@ -426,7 +426,7 @@ func TestGetHistoricCandlesExtended(t *testing.T) { func TestGetMostRecentTrades(t *testing.T) { t.Parallel() _, err := bi.GetMostRecentTrades(t.Context(), RecentTradeRequestParams{ - Symbol: currency.NewPair(currency.BTC, currency.USDT), + Symbol: currency.NewBTCUSDT(), Limit: 15, }) if err != nil { @@ -451,7 +451,7 @@ func TestGetAggregateTrades(t *testing.T) { t.Parallel() _, err := bi.GetAggregateTrades(t.Context(), &AggregatedTradeRequestParams{ - Symbol: currency.NewPair(currency.BTC, currency.USDT), + Symbol: currency.NewBTCUSDT(), Limit: 5, }) if err != nil { @@ -462,7 +462,7 @@ func TestGetAggregateTrades(t *testing.T) { func TestGetOrderBookDepth(t *testing.T) { t.Parallel() _, er := bi.GetOrderBookDepth(t.Context(), &OrderBookDataRequestParams{ - Symbol: currency.NewPair(currency.BTC, currency.USDT), + Symbol: currency.NewBTCUSDT(), Limit: 1000, }) if er != nil { @@ -473,7 +473,7 @@ func TestGetOrderBookDepth(t *testing.T) { func TestGetCandlestickData(t *testing.T) { t.Parallel() _, er := bi.GetSpotKline(t.Context(), &KlinesRequestParams{ - Symbol: currency.NewPair(currency.BTC, currency.USDT), + Symbol: currency.NewBTCUSDT(), Interval: kline.FiveMin.Short(), Limit: 24, StartTime: time.Unix(1577836800, 0), @@ -505,7 +505,7 @@ func TestGetSinglePriceData(t *testing.T) { func TestGetAveragePrice(t *testing.T) { t.Parallel() - _, err := bi.GetAveragePrice(t.Context(), currency.NewPair(currency.BTC, currency.USDT)) + _, err := bi.GetAveragePrice(t.Context(), currency.NewBTCUSDT()) if err != nil { t.Error("Binance GetAveragePrice() error", err) } @@ -513,7 +513,7 @@ func TestGetAveragePrice(t *testing.T) { func TestGetBestPrice(t *testing.T) { t.Parallel() - _, err := bi.GetBestPrice(t.Context(), currency.NewPair(currency.BTC, currency.USDT)) + _, err := bi.GetBestPrice(t.Context(), currency.NewBTCUSDT()) if err != nil { t.Error("Binanceus GetBestPrice() error", err) } @@ -521,7 +521,7 @@ func TestGetBestPrice(t *testing.T) { func TestGetPriceChangeStats(t *testing.T) { t.Parallel() - _, err := bi.GetPriceChangeStats(t.Context(), currency.NewPair(currency.BTC, currency.USDT)) + _, err := bi.GetPriceChangeStats(t.Context(), currency.NewBTCUSDT()) if err != nil { t.Error("Binance GetPriceChangeStats() error", err) } @@ -1704,7 +1704,7 @@ func TestProcessUpdate(t *testing.T) { t.Parallel() binanceusOrderBookLock.Lock() defer binanceusOrderBookLock.Unlock() - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() var depth WebsocketDepthStream err := json.Unmarshal(websocketDepthUpdate, &depth) if err != nil { @@ -1742,7 +1742,7 @@ func TestWebsocketOrderExecutionReport(t *testing.T) { AssetType: asset.Spot, Date: time.UnixMilli(1616627567900), LastUpdated: time.UnixMilli(1616627567900), - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), } for len(bi.Websocket.DataHandler) > 0 { <-bi.Websocket.DataHandler diff --git a/exchanges/bitfinex/bitfinex_test.go b/exchanges/bitfinex/bitfinex_test.go index 18c111f2..f613b5fc 100644 --- a/exchanges/bitfinex/bitfinex_test.go +++ b/exchanges/bitfinex/bitfinex_test.go @@ -39,7 +39,7 @@ const ( var ( b *Bitfinex - btcusdPair = currency.NewPair(currency.BTC, currency.USD) + btcusdPair = currency.NewBTCUSD() ) func TestMain(m *testing.M) { @@ -998,7 +998,7 @@ func TestModifyOrder(t *testing.T) { &order.Modify{ OrderID: "1337", AssetType: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), }) if err != nil { t.Error(err) @@ -1179,7 +1179,7 @@ func TestWSSubscribe(t *testing.T) { b := new(Bitfinex) //nolint:govet // Intentional shadow of b to avoid future copy/paste mistakes require.NoError(t, testexch.Setup(b), "TestInstance must not error") testexch.SetupWs(t, b) - err := b.Subscribe(subscription.List{{Channel: subscription.TickerChannel, Pairs: currency.Pairs{currency.NewPair(currency.BTC, currency.USD)}, Asset: asset.Spot}}) + err := b.Subscribe(subscription.List{{Channel: subscription.TickerChannel, Pairs: currency.Pairs{currency.NewBTCUSD()}, Asset: asset.Spot}}) require.NoError(t, err, "Subrcribe should not error") catcher := func() (ok bool) { i := <-b.Websocket.ToRoutine @@ -1192,7 +1192,7 @@ func TestWSSubscribe(t *testing.T) { require.NoError(t, err, "GetSubscriptions should not error") require.Len(t, subs, 1, "We should only have 1 subscription; subID subscription should have been Removed by subscribeToChan") - err = b.Subscribe(subscription.List{{Channel: subscription.TickerChannel, Pairs: currency.Pairs{currency.NewPair(currency.BTC, currency.USD)}, Asset: asset.Spot}}) + err = b.Subscribe(subscription.List{{Channel: subscription.TickerChannel, Pairs: currency.Pairs{currency.NewBTCUSD()}, Asset: asset.Spot}}) require.ErrorContains(t, err, "subscribe: dup (code: 10301)", "Duplicate subscription should error correctly") assert.EventuallyWithT(t, func(t *assert.CollectT) { @@ -1218,7 +1218,7 @@ func TestWSSubscribe(t *testing.T) { err = b.Subscribe(subscription.List{{ Channel: subscription.TickerChannel, - Pairs: currency.Pairs{currency.NewPair(currency.BTC, currency.USD)}, + Pairs: currency.Pairs{currency.NewBTCUSD()}, Asset: asset.Spot, Params: map[string]any{"key": "tBTCUSD"}, }}) @@ -1230,7 +1230,7 @@ func TestSubToMap(t *testing.T) { s := &subscription.Subscription{ Channel: subscription.CandlesChannel, Asset: asset.Spot, - Pairs: currency.Pairs{currency.NewPair(currency.BTC, currency.USD)}, + Pairs: currency.Pairs{currency.NewBTCUSD()}, Interval: kline.OneMin, } diff --git a/exchanges/bitmex/bitmex_test.go b/exchanges/bitmex/bitmex_test.go index 652bcbf5..b5ace317 100644 --- a/exchanges/bitmex/bitmex_test.go +++ b/exchanges/bitmex/bitmex_test.go @@ -973,7 +973,7 @@ func TestGetOrderInfo(t *testing.T) { t.Parallel() sharedtestvalues.SkipTestIfCredentialsUnset(t, b) - _, err := b.GetOrderInfo(t.Context(), "1234", currency.NewPair(currency.BTC, currency.USD), asset.Spot) + _, err := b.GetOrderInfo(t.Context(), "1234", currency.NewBTCUSD(), asset.Spot) require.NoError(t, err) } @@ -984,7 +984,7 @@ func TestCancelBatchOrders(t *testing.T) { { OrderID: "1234", AssetType: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), }, }) require.NoError(t, err) @@ -1009,7 +1009,7 @@ func TestGetLatestFundingRates(t *testing.T) { t.Parallel() _, err := b.GetLatestFundingRates(t.Context(), &fundingrate.LatestRateRequest{ Asset: asset.USDTMarginedFutures, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), IncludePredictedRate: true, }) assert.ErrorIs(t, err, common.ErrFunctionNotSupported) @@ -1036,11 +1036,11 @@ func TestGetLatestFundingRates(t *testing.T) { func TestIsPerpetualFutureCurrency(t *testing.T) { t.Parallel() - isPerp, err := b.IsPerpetualFutureCurrency(asset.Futures, currency.NewPair(currency.BTC, currency.USD)) + isPerp, err := b.IsPerpetualFutureCurrency(asset.Futures, currency.NewBTCUSD()) require.NoError(t, err) require.False(t, isPerp) - isPerp, err = b.IsPerpetualFutureCurrency(asset.PerpetualContract, currency.NewPair(currency.BTC, currency.USD)) + isPerp, err = b.IsPerpetualFutureCurrency(asset.PerpetualContract, currency.NewBTCUSD()) require.NoError(t, err) require.True(t, isPerp) } diff --git a/exchanges/bitstamp/bitstamp_test.go b/exchanges/bitstamp/bitstamp_test.go index 8080f0de..5069d9c7 100644 --- a/exchanges/bitstamp/bitstamp_test.go +++ b/exchanges/bitstamp/bitstamp_test.go @@ -32,7 +32,7 @@ const ( var ( b = &Bitstamp{} - btcusdPair = currency.NewPair(currency.BTC, currency.USD) + btcusdPair = currency.NewBTCUSD() ) func setFeeBuilder() *exchange.FeeBuilder { @@ -252,7 +252,7 @@ func TestUpdateOrderExecutionLimits(t *testing.T) { tests := map[asset.Item][]limitTest{ asset.Spot: { {currency.NewPair(currency.ETH, currency.USDT), 0.01, 20}, - {currency.NewPair(currency.BTC, currency.USDT), 0.01, 20}, + {currency.NewBTCUSDT(), 0.01, 20}, }, } for assetItem, limitTests := range tests { diff --git a/exchanges/btse/btse_test.go b/exchanges/btse/btse_test.go index ae616e96..3ebeab6d 100644 --- a/exchanges/btse/btse_test.go +++ b/exchanges/btse/btse_test.go @@ -677,7 +677,7 @@ func TestGetLatestFundingRates(t *testing.T) { t.Parallel() _, err := b.GetLatestFundingRates(t.Context(), &fundingrate.LatestRateRequest{ Asset: asset.USDTMarginedFutures, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), IncludePredictedRate: true, }) assert.ErrorIs(t, err, asset.ErrNotSupported, "GetLatestFundingRates should error on Margin") @@ -696,7 +696,7 @@ func TestGetLatestFundingRates(t *testing.T) { func TestIsPerpetualFutureCurrency(t *testing.T) { t.Parallel() - isPerp, err := b.IsPerpetualFutureCurrency(asset.CoinMarginedFutures, currency.NewPair(currency.BTC, currency.USD)) + isPerp, err := b.IsPerpetualFutureCurrency(asset.CoinMarginedFutures, currency.NewBTCUSD()) assert.NoError(t, err, "IsPerpetualFutureCurrency should not error") assert.False(t, isPerp, "IsPerpetualFutureCurrency should return true for a Margin pair") diff --git a/exchanges/coinut/coinut_test.go b/exchanges/coinut/coinut_test.go index bf24ff1e..48a15bab 100644 --- a/exchanges/coinut/coinut_test.go +++ b/exchanges/coinut/coinut_test.go @@ -269,7 +269,7 @@ func TestGetOrderHistoryWrapper(t *testing.T) { getOrdersRequest := order.MultiOrderRequest{ Type: order.AnyType, AssetType: asset.Spot, - Pairs: []currency.Pair{currency.NewPair(currency.BTC, currency.USD)}, + Pairs: []currency.Pair{currency.NewBTCUSD()}, Side: order.AnySide, } @@ -311,7 +311,7 @@ func TestCancelExchangeOrder(t *testing.T) { t.Parallel() sharedtestvalues.SkipTestIfCannotManipulateOrders(t, c, canManipulateRealOrders) - currencyPair := currency.NewPair(currency.BTC, currency.USD) + currencyPair := currency.NewBTCUSD() orderCancellation := &order.Cancel{ OrderID: "1", AccountID: "1", @@ -1139,7 +1139,7 @@ func TestCancelBatchOrders(t *testing.T) { { OrderID: "1234", AssetType: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), }, }) if err != nil { diff --git a/exchanges/currencystate/currency_state_test.go b/exchanges/currencystate/currency_state_test.go index 7a8938e6..2e976a0d 100644 --- a/exchanges/currencystate/currency_state_test.go +++ b/exchanges/currencystate/currency_state_test.go @@ -53,7 +53,7 @@ func TestCanTradePair(t *testing.T) { t.Fatalf("received: %v, but expected: %v", err, errEmptyCurrency) } - cp := currency.NewPair(currency.BTC, currency.USD) + cp := currency.NewBTCUSD() err = (&States{}).CanTradePair(cp, asset.Empty) if !errors.Is(err, asset.ErrNotSupported) { t.Fatalf("received: %v, but expected: %v", err, asset.ErrNotSupported) diff --git a/exchanges/deribit/deribit_test.go b/exchanges/deribit/deribit_test.go index bb695c0c..08690164 100644 --- a/exchanges/deribit/deribit_test.go +++ b/exchanges/deribit/deribit_test.go @@ -3836,7 +3836,7 @@ func TestGetLatestFundingRates(t *testing.T) { t.Parallel() _, err := d.GetLatestFundingRates(t.Context(), &fundingrate.LatestRateRequest{ Asset: asset.USDTMarginedFutures, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), IncludePredictedRate: true, }) require.ErrorIs(t, err, asset.ErrNotSupported) diff --git a/exchanges/exchange_test.go b/exchanges/exchange_test.go index ac2f1746..3b4c35c3 100644 --- a/exchanges/exchange_test.go +++ b/exchanges/exchange_test.go @@ -923,7 +923,7 @@ func TestSetPairs(t *testing.T) { } pairs := currency.Pairs{ - currency.NewPair(currency.BTC, currency.USD), + currency.NewBTCUSD(), } err := b.SetPairs(pairs, asset.Spot, true) if err != nil { @@ -1078,7 +1078,7 @@ func TestUpdatePairs(t *testing.T) { pairs := currency.Pairs{ currency.NewPair(currency.XRP, currency.USD), - currency.NewPair(currency.BTC, currency.USD), + currency.NewBTCUSD(), currency.NewPair(currency.LTC, currency.USD), currency.NewPair(currency.LTC, currency.USDT), } @@ -1105,7 +1105,7 @@ func TestUpdatePairs(t *testing.T) { if uacEnabledPairs.Contains(currency.NewPair(currency.XRP, currency.USD), true) { t.Fatal("expected currency pair not found") } - if uacEnabledPairs.Contains(currency.NewPair(currency.BTC, currency.USD), true) { + if uacEnabledPairs.Contains(currency.NewBTCUSD(), true) { t.Fatal("expected currency pair not found") } if uacEnabledPairs.Contains(currency.NewPair(currency.LTC, currency.USD), true) { @@ -1308,7 +1308,7 @@ func TestPrintEnabledPairs(t *testing.T) { b.CurrencyPairs.Pairs = make(map[asset.Item]*currency.PairStore) b.CurrencyPairs.Pairs[asset.Spot] = ¤cy.PairStore{ Enabled: currency.Pairs{ - currency.NewPair(currency.BTC, currency.USD), + currency.NewBTCUSD(), }, } @@ -1332,7 +1332,7 @@ func TestGetBase(t *testing.T) { func TestGetAssetType(t *testing.T) { var b Base - p := currency.NewPair(currency.BTC, currency.USD) + p := currency.NewBTCUSD() if _, err := b.GetPairAssetType(p); err == nil { t.Fatal("error cannot be nil") } @@ -1340,10 +1340,10 @@ func TestGetAssetType(t *testing.T) { b.CurrencyPairs.Pairs[asset.Spot] = ¤cy.PairStore{ AssetEnabled: true, Enabled: currency.Pairs{ - currency.NewPair(currency.BTC, currency.USD), + currency.NewBTCUSD(), }, Available: currency.Pairs{ - currency.NewPair(currency.BTC, currency.USD), + currency.NewBTCUSD(), }, ConfigFormat: ¤cy.PairFormat{Delimiter: "-"}, } @@ -1378,10 +1378,10 @@ func TestGetFormattedPairAndAssetType(t *testing.T) { b.CurrencyPairs.Pairs[asset.Spot] = ¤cy.PairStore{ AssetEnabled: true, Enabled: currency.Pairs{ - currency.NewPair(currency.BTC, currency.USD), + currency.NewBTCUSD(), }, Available: currency.Pairs{ - currency.NewPair(currency.BTC, currency.USD), + currency.NewBTCUSD(), }, } p, a, err := b.GetRequestFormattedPairAndAssetType("btc#usd") @@ -2099,7 +2099,7 @@ func TestGetFundingRates(t *testing.T) { func TestIsPerpetualFutureCurrency(t *testing.T) { t.Parallel() var b Base - if _, err := b.IsPerpetualFutureCurrency(asset.Spot, currency.NewPair(currency.BTC, currency.USD)); !errors.Is(err, common.ErrNotYetImplemented) { + if _, err := b.IsPerpetualFutureCurrency(asset.Spot, currency.NewBTCUSD()); !errors.Is(err, common.ErrNotYetImplemented) { t.Errorf("received: %v, expected: %v", err, common.ErrNotYetImplemented) } } @@ -2248,7 +2248,7 @@ func TestGetKlineRequest(t *testing.T) { t.Fatalf("received: '%v' but expected: '%v'", err, currency.ErrCurrencyPairEmpty) } - pair := currency.NewPair(currency.BTC, currency.USDT) + pair := currency.NewBTCUSDT() _, err = b.GetKlineRequest(pair, asset.Empty, 0, time.Time{}, time.Time{}, false) if !errors.Is(err, asset.ErrNotSupported) { t.Fatalf("received: '%v' but expected: '%v'", err, asset.ErrNotSupported) @@ -2412,7 +2412,7 @@ func TestGetKlineExtendedRequest(t *testing.T) { t.Fatalf("received: '%v' but expected: '%v'", err, currency.ErrCurrencyPairEmpty) } - pair := currency.NewPair(currency.BTC, currency.USDT) + pair := currency.NewBTCUSDT() _, err = b.GetKlineExtendedRequest(pair, asset.Empty, 0, time.Time{}, time.Time{}) if !errors.Is(err, asset.ErrNotSupported) { t.Fatalf("received: '%v' but expected: '%v'", err, asset.ErrNotSupported) @@ -2571,7 +2571,7 @@ func TestEnsureOnePairEnabled(t *testing.T) { asset.Spot: { AssetEnabled: true, Available: []currency.Pair{ - currency.NewPair(currency.BTC, currency.USDT), + currency.NewBTCUSDT(), }, }, }, @@ -2640,7 +2640,7 @@ func TestGetStandardConfig(t *testing.T) { func TestMatchSymbolWithAvailablePairs(t *testing.T) { t.Parallel() b := Base{Name: "test"} - whatIWant := currency.NewPair(currency.BTC, currency.USDT) + whatIWant := currency.NewBTCUSDT() err := b.CurrencyPairs.Store(asset.Spot, ¤cy.PairStore{ AssetEnabled: true, Available: []currency.Pair{whatIWant}, @@ -2676,7 +2676,7 @@ func TestMatchSymbolWithAvailablePairs(t *testing.T) { func TestMatchSymbolCheckEnabled(t *testing.T) { t.Parallel() b := Base{Name: "test"} - whatIWant := currency.NewPair(currency.BTC, currency.USDT) + whatIWant := currency.NewBTCUSDT() availButNoEnabled := currency.NewPair(currency.BTC, currency.AUD) err := b.CurrencyPairs.Store(asset.Spot, ¤cy.PairStore{ AssetEnabled: true, @@ -2735,7 +2735,7 @@ func TestMatchSymbolCheckEnabled(t *testing.T) { func TestIsPairEnabled(t *testing.T) { t.Parallel() b := Base{Name: "test"} - whatIWant := currency.NewPair(currency.BTC, currency.USDT) + whatIWant := currency.NewBTCUSDT() availButNoEnabled := currency.NewPair(currency.BTC, currency.AUD) err := b.CurrencyPairs.Store(asset.Spot, ¤cy.PairStore{ AssetEnabled: true, @@ -2906,7 +2906,7 @@ func TestCanUseAuthenticatedWebsocketEndpoints(t *testing.T) { func TestGetCachedTicker(t *testing.T) { t.Parallel() b := Base{Name: "test"} - pair := currency.NewPair(currency.BTC, currency.USDT) + pair := currency.NewBTCUSDT() _, err := b.GetCachedTicker(pair, asset.Spot) assert.ErrorIs(t, err, ticker.ErrTickerNotFound) @@ -2921,7 +2921,7 @@ func TestGetCachedTicker(t *testing.T) { func TestGetCachedOrderbook(t *testing.T) { t.Parallel() b := Base{Name: "test"} - pair := currency.NewPair(currency.BTC, currency.USDT) + pair := currency.NewBTCUSDT() _, err := b.GetCachedOrderbook(pair, asset.Spot) assert.ErrorIs(t, err, orderbook.ErrOrderbookNotFound) @@ -3116,7 +3116,7 @@ func (f *FakeBase) GetFuturesContractDetails(context.Context, asset.Item) ([]fut func TestGetCurrencyTradeURL(t *testing.T) { t.Parallel() b := Base{} - _, err := b.GetCurrencyTradeURL(t.Context(), asset.Spot, currency.NewPair(currency.BTC, currency.USDT)) + _, err := b.GetCurrencyTradeURL(t.Context(), asset.Spot, currency.NewBTCUSDT()) require.ErrorIs(t, err, common.ErrFunctionNotSupported) } diff --git a/exchanges/exmo/exmo_test.go b/exchanges/exmo/exmo_test.go index 77ec4f05..01a63452 100644 --- a/exchanges/exmo/exmo_test.go +++ b/exchanges/exmo/exmo_test.go @@ -274,7 +274,7 @@ func TestGetOrderHistory(t *testing.T) { AssetType: asset.Spot, Side: order.AnySide, } - currPair := currency.NewPair(currency.BTC, currency.USD) + currPair := currency.NewBTCUSD() currPair.Delimiter = "_" getOrdersRequest.Pairs = []currency.Pair{currPair} diff --git a/exchanges/futures/futures_test.go b/exchanges/futures/futures_test.go index bccdd35a..4df414dd 100644 --- a/exchanges/futures/futures_test.go +++ b/exchanges/futures/futures_test.go @@ -245,7 +245,7 @@ func TestSetupMultiPositionTracker(t *testing.T) { t.Error(err) } - setup.Pair = currency.NewPair(currency.BTC, currency.USDT) + setup.Pair = currency.NewBTCUSDT() _, err = SetupMultiPositionTracker(setup) if !errors.Is(err, errEmptyUnderlying) { t.Error(err) @@ -277,7 +277,7 @@ func TestMultiPositionTrackerTrackNewOrder(t *testing.T) { t.Parallel() exch := testExchange item := asset.Futures - pair := currency.NewPair(currency.BTC, currency.USDT) + pair := currency.NewBTCUSDT() setup := &MultiPositionTrackerSetup{ Asset: item, Pair: pair, @@ -460,7 +460,7 @@ func TestPositionControllerTestTrackNewOrder(t *testing.T) { err = pc.TrackNewOrder(&order.Detail{ Date: time.Now(), Exchange: "hi", - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), AssetType: asset.Spot, Side: order.Long, OrderID: "lol", @@ -471,7 +471,7 @@ func TestPositionControllerTestTrackNewOrder(t *testing.T) { err = pc.TrackNewOrder(&order.Detail{ Date: time.Now(), - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), AssetType: asset.Futures, Side: order.Long, OrderID: "lol", @@ -483,7 +483,7 @@ func TestPositionControllerTestTrackNewOrder(t *testing.T) { err = pc.TrackNewOrder(&order.Detail{ Exchange: testExchange, Date: time.Now(), - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), AssetType: asset.Futures, Side: order.Long, OrderID: "lol", @@ -588,7 +588,7 @@ func TestGetPositions(t *testing.T) { func TestGetPositionsForExchange(t *testing.T) { t.Parallel() c := &PositionController{} - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() _, err := c.GetPositionsForExchange("", asset.Futures, p) if !errors.Is(err, errExchangeNameEmpty) { @@ -677,7 +677,7 @@ func TestGetPositionsForExchange(t *testing.T) { func TestClearPositionsForExchange(t *testing.T) { t.Parallel() c := &PositionController{} - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() err := c.ClearPositionsForExchange("", asset.Futures, p) if !errors.Is(err, errExchangeNameEmpty) { t.Errorf("received '%v' expected '%v", err, errExchangeNameEmpty) @@ -805,7 +805,7 @@ func TestSetupPositionTracker(t *testing.T) { t.Error("expected nil") } - cp := currency.NewPair(currency.BTC, currency.USDT) + cp := currency.NewBTCUSDT() p, err = SetupPositionTracker(&PositionTrackerSetup{ Exchange: testExchange, Asset: asset.Futures, @@ -893,17 +893,17 @@ func TestUpdateOpenPositionUnrealisedPNL(t *testing.T) { t.Parallel() pc := SetupPositionController() - _, err := pc.UpdateOpenPositionUnrealisedPNL("", asset.Futures, currency.NewPair(currency.BTC, currency.USDT), 2, time.Now()) + _, err := pc.UpdateOpenPositionUnrealisedPNL("", asset.Futures, currency.NewBTCUSDT(), 2, time.Now()) if !errors.Is(err, errExchangeNameEmpty) { t.Errorf("received '%v' expected '%v", err, errExchangeNameEmpty) } - _, err = pc.UpdateOpenPositionUnrealisedPNL("hi", asset.Futures, currency.NewPair(currency.BTC, currency.USDT), 2, time.Now()) + _, err = pc.UpdateOpenPositionUnrealisedPNL("hi", asset.Futures, currency.NewBTCUSDT(), 2, time.Now()) if !errors.Is(err, ErrPositionNotFound) { t.Errorf("received '%v' expected '%v", err, ErrPositionNotFound) } - _, err = pc.UpdateOpenPositionUnrealisedPNL("hi", asset.Spot, currency.NewPair(currency.BTC, currency.USDT), 2, time.Now()) + _, err = pc.UpdateOpenPositionUnrealisedPNL("hi", asset.Spot, currency.NewBTCUSDT(), 2, time.Now()) if !errors.Is(err, ErrNotFuturesAsset) { t.Errorf("received '%v' expected '%v", err, ErrNotFuturesAsset) } @@ -911,7 +911,7 @@ func TestUpdateOpenPositionUnrealisedPNL(t *testing.T) { err = pc.TrackNewOrder(&order.Detail{ Date: time.Now(), Exchange: "hi", - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), AssetType: asset.Futures, Side: order.Long, OrderID: "lol", @@ -922,12 +922,12 @@ func TestUpdateOpenPositionUnrealisedPNL(t *testing.T) { t.Errorf("received '%v' expected '%v", err, nil) } - _, err = pc.UpdateOpenPositionUnrealisedPNL("hi2", asset.Futures, currency.NewPair(currency.BTC, currency.USDT), 2, time.Now()) + _, err = pc.UpdateOpenPositionUnrealisedPNL("hi2", asset.Futures, currency.NewBTCUSDT(), 2, time.Now()) if !errors.Is(err, ErrPositionNotFound) { t.Errorf("received '%v' expected '%v", err, ErrPositionNotFound) } - _, err = pc.UpdateOpenPositionUnrealisedPNL("hi", asset.PerpetualSwap, currency.NewPair(currency.BTC, currency.USDT), 2, time.Now()) + _, err = pc.UpdateOpenPositionUnrealisedPNL("hi", asset.PerpetualSwap, currency.NewBTCUSDT(), 2, time.Now()) if !errors.Is(err, ErrPositionNotFound) { t.Errorf("received '%v' expected '%v", err, ErrPositionNotFound) } @@ -937,7 +937,7 @@ func TestUpdateOpenPositionUnrealisedPNL(t *testing.T) { t.Errorf("received '%v' expected '%v", err, ErrPositionNotFound) } - pnl, err := pc.UpdateOpenPositionUnrealisedPNL("hi", asset.Futures, currency.NewPair(currency.BTC, currency.USDT), 2, time.Now()) + pnl, err := pc.UpdateOpenPositionUnrealisedPNL("hi", asset.Futures, currency.NewBTCUSDT(), 2, time.Now()) if !errors.Is(err, nil) { t.Errorf("received '%v' expected '%v", err, nil) } @@ -946,7 +946,7 @@ func TestUpdateOpenPositionUnrealisedPNL(t *testing.T) { } var nilPC *PositionController - _, err = nilPC.UpdateOpenPositionUnrealisedPNL("hi", asset.Futures, currency.NewPair(currency.BTC, currency.USDT), 2, time.Now()) + _, err = nilPC.UpdateOpenPositionUnrealisedPNL("hi", asset.Futures, currency.NewBTCUSDT(), 2, time.Now()) if !errors.Is(err, common.ErrNilPointer) { t.Errorf("received '%v' expected '%v", err, common.ErrNilPointer) } @@ -964,7 +964,7 @@ func TestSetCollateralCurrency(t *testing.T) { if !errors.Is(err, ErrNotFuturesAsset) { t.Errorf("received '%v' expected '%v", err, ErrNotFuturesAsset) } - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() pc.multiPositionTrackers = make(map[key.ExchangePairAsset]*MultiPositionTracker) err = pc.SetCollateralCurrency("hi", asset.Futures, p, currency.DOGE) if !errors.Is(err, ErrPositionNotFound) { @@ -1025,7 +1025,7 @@ func TestSetCollateralCurrency(t *testing.T) { func TestMPTUpdateOpenPositionUnrealisedPNL(t *testing.T) { t.Parallel() - p := currency.NewPair(currency.BTC, currency.USDT) + p := currency.NewBTCUSDT() pc := SetupPositionController() err := pc.TrackNewOrder(&order.Detail{ Date: time.Now(), @@ -1578,7 +1578,7 @@ func TestCheckTrackerPrerequisitesLowerExchange(t *testing.T) { if !errors.Is(err, order.ErrPairIsEmpty) { t.Errorf("received '%v' expected '%v", err, order.ErrPairIsEmpty) } - lowerExch, err := checkTrackerPrerequisitesLowerExchange(upperExch, asset.Futures, currency.NewPair(currency.BTC, currency.USDT)) + lowerExch, err := checkTrackerPrerequisitesLowerExchange(upperExch, asset.Futures, currency.NewBTCUSDT()) if !errors.Is(err, nil) { t.Errorf("received '%v' expected '%v", err, nil) } diff --git a/exchanges/gateio/gateio_test.go b/exchanges/gateio/gateio_test.go index 7e680056..9b96530b 100644 --- a/exchanges/gateio/gateio_test.go +++ b/exchanges/gateio/gateio_test.go @@ -521,7 +521,7 @@ func TestRepayALoan(t *testing.T) { t.Parallel() sharedtestvalues.SkipTestIfCredentialsUnset(t, g) if _, err := g.RepayALoan(t.Context(), "1234", &RepayLoanRequestParam{ - CurrencyPair: currency.NewPair(currency.BTC, currency.USDT), + CurrencyPair: currency.NewBTCUSDT(), Currency: currency.BTC, Mode: "all", }); err != nil { @@ -558,7 +558,7 @@ func TestModifyALoanRecord(t *testing.T) { sharedtestvalues.SkipTestIfCredentialsUnset(t, g) if _, err := g.ModifyALoanRecord(t.Context(), "1234", &ModifyLoanRequestParam{ Currency: currency.USDT, - CurrencyPair: currency.NewPair(currency.BTC, currency.USDT), + CurrencyPair: currency.NewBTCUSDT(), Side: "lend", AutoRenew: true, LoanID: "1234", @@ -1196,7 +1196,7 @@ func TestPlaceFuturesOrder(t *testing.T) { func TestGetFuturesOrders(t *testing.T) { t.Parallel() sharedtestvalues.SkipTestIfCredentialsUnset(t, g) - _, err := g.GetFuturesOrders(t.Context(), currency.NewPair(currency.BTC, currency.USD), statusOpen, "", currency.BTC, 0, 0, 1) + _, err := g.GetFuturesOrders(t.Context(), currency.NewBTCUSD(), statusOpen, "", currency.BTC, 0, 0, 1) assert.NoError(t, err, "GetFuturesOrders should not error") } @@ -1947,7 +1947,7 @@ func TestGetUnderlyingFromCurrencyPair(t *testing.T) { t.Parallel() if uly, err := g.GetUnderlyingFromCurrencyPair(currency.Pair{Delimiter: currency.UnderscoreDelimiter, Base: currency.BTC, Quote: currency.NewCode("USDT_LLK")}); err != nil { t.Error(err) - } else if !uly.Equal(currency.NewPair(currency.BTC, currency.USDT)) { + } else if !uly.Equal(currency.NewBTCUSDT()) { t.Error("unexpected underlying") } } @@ -2615,14 +2615,14 @@ func TestGetLatestFundingRates(t *testing.T) { t.Parallel() _, err := g.GetLatestFundingRates(t.Context(), &fundingrate.LatestRateRequest{ Asset: asset.USDTMarginedFutures, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), IncludePredictedRate: true, }) assert.NoError(t, err) _, err = g.GetLatestFundingRates(t.Context(), &fundingrate.LatestRateRequest{ Asset: asset.CoinMarginedFutures, - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), }) assert.NoError(t, err) @@ -2947,7 +2947,7 @@ func TestDeriveSpotWebsocketOrderResponse(t *testing.T) { Exchange: g.Name, OrderID: "766075454481", AssetType: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USDT).Format(currency.PairFormat{Uppercase: true, Delimiter: "_"}), + Pair: currency.NewBTCUSDT().Format(currency.PairFormat{Uppercase: true, Delimiter: "_"}), ClientOrderID: "t-1735720637181634009", Date: time.UnixMilli(1735720637188), LastUpdated: time.UnixMilli(1735720637188), @@ -2990,7 +2990,7 @@ func TestDeriveSpotWebsocketOrderResponses(t *testing.T) { Exchange: g.Name, OrderID: "766075454481", AssetType: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USDT).Format(currency.PairFormat{Uppercase: true, Delimiter: "_"}), + Pair: currency.NewBTCUSDT().Format(currency.PairFormat{Uppercase: true, Delimiter: "_"}), ClientOrderID: "t-1735720637181634009", Date: time.UnixMilli(1735720637188), LastUpdated: time.UnixMilli(1735720637188), @@ -3043,7 +3043,7 @@ func TestDeriveSpotWebsocketOrderResponses(t *testing.T) { Exchange: g.Name, OrderID: "766504537761", AssetType: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USDT).Format(currency.PairFormat{Uppercase: true, Delimiter: "_"}), + Pair: currency.NewBTCUSDT().Format(currency.PairFormat{Uppercase: true, Delimiter: "_"}), ClientOrderID: "t-1735780321603944400", Date: time.UnixMilli(1735780321729), LastUpdated: time.UnixMilli(1735780321729), @@ -3181,7 +3181,7 @@ func TestDeriveFuturesWebsocketOrderResponses(t *testing.T) { Exchange: g.Name, OrderID: "596746193678", AssetType: asset.Futures, - Pair: currency.NewPair(currency.BTC, currency.USDT).Format(currency.PairFormat{Uppercase: true, Delimiter: "_"}), + Pair: currency.NewBTCUSDT().Format(currency.PairFormat{Uppercase: true, Delimiter: "_"}), Date: time.UnixMilli(1735789790476), LastUpdated: time.UnixMilli(1735789790476), RemainingAmount: 1, @@ -3195,7 +3195,7 @@ func TestDeriveFuturesWebsocketOrderResponses(t *testing.T) { Exchange: g.Name, OrderID: "596748780649", AssetType: asset.Futures, - Pair: currency.NewPair(currency.BTC, currency.USDT).Format(currency.PairFormat{Uppercase: true, Delimiter: "_"}), + Pair: currency.NewBTCUSDT().Format(currency.PairFormat{Uppercase: true, Delimiter: "_"}), Date: time.UnixMilli(1735790222185), LastUpdated: time.UnixMilli(1735790222185), RemainingAmount: 1, @@ -3209,7 +3209,7 @@ func TestDeriveFuturesWebsocketOrderResponses(t *testing.T) { Exchange: g.Name, OrderID: "36028797827161124", AssetType: asset.Futures, - Pair: currency.NewPair(currency.BTC, currency.USDT).Format(currency.PairFormat{Uppercase: true, Delimiter: "_"}), + Pair: currency.NewBTCUSDT().Format(currency.PairFormat{Uppercase: true, Delimiter: "_"}), Date: time.UnixMilli(1740108860761), LastUpdated: time.UnixMilli(1740108860761), Amount: 1, @@ -3223,7 +3223,7 @@ func TestDeriveFuturesWebsocketOrderResponses(t *testing.T) { Exchange: g.Name, OrderID: "36028797827225781", AssetType: asset.Futures, - Pair: currency.NewPair(currency.BTC, currency.USDT).Format(currency.PairFormat{Uppercase: true, Delimiter: "_"}), + Pair: currency.NewBTCUSDT().Format(currency.PairFormat{Uppercase: true, Delimiter: "_"}), Date: time.UnixMilli(1740109172060), LastUpdated: time.UnixMilli(1740109172060), Amount: 1, diff --git a/exchanges/gemini/gemini_test.go b/exchanges/gemini/gemini_test.go index d705768d..aecb633e 100644 --- a/exchanges/gemini/gemini_test.go +++ b/exchanges/gemini/gemini_test.go @@ -53,7 +53,7 @@ func TestFetchTradablePairs(t *testing.T) { if !pairs.Contains(currency.NewPair(currency.STORJ, currency.USD), false) { t.Error("expected pair STORJ-USD") } - if !pairs.Contains(currency.NewPair(currency.BTC, currency.USD), false) { + if !pairs.Contains(currency.NewBTCUSD(), false) { t.Error("expected pair BTC-USD") } if !pairs.Contains(currency.NewPair(currency.AAVE, currency.USD), false) { @@ -430,7 +430,7 @@ func TestCancelExchangeOrder(t *testing.T) { orderCancellation := &order.Cancel{ OrderID: "266029865", AssetType: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), } err := g.CancelOrder(t.Context(), orderCancellation) diff --git a/exchanges/hitbtc/hitbtc_test.go b/exchanges/hitbtc/hitbtc_test.go index 463ba209..4ff61a2d 100644 --- a/exchanges/hitbtc/hitbtc_test.go +++ b/exchanges/hitbtc/hitbtc_test.go @@ -1055,7 +1055,7 @@ func TestGetOrderInfo(t *testing.T) { t.Parallel() sharedtestvalues.SkipTestIfCredentialsUnset(t, h) - _, err := h.GetOrderInfo(t.Context(), "1234", currency.NewPair(currency.BTC, currency.USD), asset.Spot) + _, err := h.GetOrderInfo(t.Context(), "1234", currency.NewBTCUSD(), asset.Spot) if err != nil { t.Error(err) } diff --git a/exchanges/huobi/huobi_test.go b/exchanges/huobi/huobi_test.go index 79038d8d..fefa88b3 100644 --- a/exchanges/huobi/huobi_test.go +++ b/exchanges/huobi/huobi_test.go @@ -486,7 +486,7 @@ func TestGetOrderHistory(t *testing.T) { updatePairsOnce(t, h) getOrdersRequest := order.MultiOrderRequest{ Type: order.AnyType, - Pairs: []currency.Pair{currency.NewPair(currency.BTC, currency.USDT)}, + Pairs: []currency.Pair{currency.NewBTCUSDT()}, AssetType: asset.Spot, Side: order.AnySide, } @@ -1156,7 +1156,7 @@ func TestGetActiveOrders(t *testing.T) { getOrdersRequest := order.MultiOrderRequest{ AssetType: asset.Spot, Type: order.AnyType, - Pairs: []currency.Pair{currency.NewPair(currency.BTC, currency.USDT)}, + Pairs: []currency.Pair{currency.NewBTCUSDT()}, Side: order.AnySide, } @@ -1680,7 +1680,7 @@ func TestFormatFuturesPair(t *testing.T) { assert.Len(t, r, 9, "Should be an 9 character string") assert.Equal(t, "BTC2", r[0:4], "Should start with btc and a date this millennium") - r, err = h.formatFuturesPair(currency.NewPair(currency.BTC, currency.USDT), false) + r, err = h.formatFuturesPair(currency.NewBTCUSDT(), false) require.NoError(t, err) assert.Equal(t, "BTC-USDT", r) } @@ -1706,7 +1706,7 @@ func TestCancelBatchOrders(t *testing.T) { { OrderID: "1234", AssetType: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), }, }) require.NoError(t, err) @@ -1740,19 +1740,19 @@ func TestGetLatestFundingRates(t *testing.T) { _, err := h.GetLatestFundingRates(t.Context(), &fundingrate.LatestRateRequest{ Asset: asset.USDTMarginedFutures, - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), IncludePredictedRate: true, }) require.ErrorIs(t, err, asset.ErrNotSupported) _, err = h.GetLatestFundingRates(t.Context(), &fundingrate.LatestRateRequest{ Asset: asset.CoinMarginedFutures, - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), IncludePredictedRate: true, }) require.NoError(t, err) - err = h.CurrencyPairs.EnablePair(asset.CoinMarginedFutures, currency.NewPair(currency.BTC, currency.USD)) + err = h.CurrencyPairs.EnablePair(asset.CoinMarginedFutures, currency.NewBTCUSD()) require.ErrorIs(t, err, currency.ErrPairAlreadyEnabled) _, err = h.GetLatestFundingRates(t.Context(), &fundingrate.LatestRateRequest{ @@ -1764,11 +1764,11 @@ func TestGetLatestFundingRates(t *testing.T) { func TestIsPerpetualFutureCurrency(t *testing.T) { t.Parallel() - is, err := h.IsPerpetualFutureCurrency(asset.Binary, currency.NewPair(currency.BTC, currency.USDT)) + is, err := h.IsPerpetualFutureCurrency(asset.Binary, currency.NewBTCUSDT()) require.NoError(t, err) assert.False(t, is) - is, err = h.IsPerpetualFutureCurrency(asset.CoinMarginedFutures, currency.NewPair(currency.BTC, currency.USDT)) + is, err = h.IsPerpetualFutureCurrency(asset.CoinMarginedFutures, currency.NewBTCUSDT()) require.NoError(t, err) assert.True(t, is) } @@ -1896,7 +1896,7 @@ func TestContractOpenInterestUSDT(t *testing.T) { assert.NoError(t, err) assert.NotEmpty(t, resp) - cp := currency.NewPair(currency.BTC, currency.USDT) + cp := currency.NewBTCUSDT() resp, err = h.ContractOpenInterestUSDT(t.Context(), cp, currency.EMPTYPAIR, "", "") assert.NoError(t, err) assert.NotEmpty(t, resp) diff --git a/exchanges/kline/kline_test.go b/exchanges/kline/kline_test.go index eb01083c..18f808d7 100644 --- a/exchanges/kline/kline_test.go +++ b/exchanges/kline/kline_test.go @@ -90,7 +90,7 @@ func TestValidateData(t *testing.T) { func TestCreateKline(t *testing.T) { t.Parallel() - pair := currency.NewPair(currency.BTC, currency.USD) + pair := currency.NewBTCUSD() _, err := CreateKline(nil, OneMin, pair, asset.Spot, "Binance") if !errors.Is(err, errInsufficientTradeData) { t.Fatalf("received: '%v' but expected '%v'", err, errInsufficientTradeData) @@ -459,7 +459,7 @@ func TestItem_SortCandlesByTimestamp(t *testing.T) { t.Parallel() tempKline := Item{ Exchange: "testExchange", - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), Asset: asset.Spot, Interval: OneDay, } @@ -699,7 +699,7 @@ func genOHCLVData() (out candle.Item, outItem Item, err error) { outItem.Interval = OneDay outItem.Asset = asset.Spot - outItem.Pair = currency.NewPair(currency.BTC, currency.USDT) + outItem.Pair = currency.NewBTCUSDT() outItem.Exchange = testExchanges[0].Name for x := range 365 { @@ -913,7 +913,7 @@ func TestConvertToNewInterval(t *testing.T) { old := &Item{ Exchange: "lol", - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), Asset: asset.Spot, Interval: OneDay, Candles: []Candle{ diff --git a/exchanges/kline/request_test.go b/exchanges/kline/request_test.go index c0dbc09c..40957cba 100644 --- a/exchanges/kline/request_test.go +++ b/exchanges/kline/request_test.go @@ -23,7 +23,7 @@ func TestCreateKlineRequest(t *testing.T) { t.Fatalf("received: '%v', but expected '%v'", err, currency.ErrCurrencyPairEmpty) } - pair := currency.NewPair(currency.BTC, currency.USDT) + pair := currency.NewBTCUSDT() _, err = CreateKlineRequest("name", pair, currency.EMPTYPAIR, 0, 0, 0, time.Time{}, time.Time{}, 0) if !errors.Is(err, currency.ErrCurrencyPairEmpty) { t.Fatalf("received: '%v', but expected '%v'", err, currency.ErrCurrencyPairEmpty) @@ -118,7 +118,7 @@ func TestGetRanges(t *testing.T) { start := time.Date(2020, 1, 1, 0, 0, 0, 0, time.UTC) end := start.AddDate(0, 0, 1) - pair := currency.NewPair(currency.BTC, currency.USDT) + pair := currency.NewBTCUSDT() var r *Request _, err := r.GetRanges(100) @@ -198,7 +198,7 @@ func TestRequest_ProcessResponse(t *testing.T) { start := time.Date(2020, 1, 1, 0, 0, 0, 0, time.UTC) end := start.AddDate(0, 0, 1) - pair := currency.NewPair(currency.BTC, currency.USDT) + pair := currency.NewBTCUSDT() var r *Request _, err := r.ProcessResponse(nil) @@ -333,7 +333,7 @@ func TestExtendedRequest_ProcessResponse(t *testing.T) { ohc := getOneHour() start := ohc[0].Time end := ohc[len(ohc)-1].Time.Add(OneHour.Duration()) - pair := currency.NewPair(currency.BTC, currency.USDT) + pair := currency.NewBTCUSDT() var rExt *ExtendedRequest _, err := rExt.ProcessResponse(nil) diff --git a/exchanges/kraken/kraken_test.go b/exchanges/kraken/kraken_test.go index d4a5688a..ae8922f5 100644 --- a/exchanges/kraken/kraken_test.go +++ b/exchanges/kraken/kraken_test.go @@ -1526,7 +1526,7 @@ func TestGetLatestFundingRates(t *testing.T) { t.Parallel() _, err := k.GetLatestFundingRates(t.Context(), &fundingrate.LatestRateRequest{ Asset: asset.USDTMarginedFutures, - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), IncludePredictedRate: true, }) assert.ErrorIs(t, err, asset.ErrNotSupported, "GetLatestFundingRates should error") @@ -1548,11 +1548,11 @@ func TestGetLatestFundingRates(t *testing.T) { func TestIsPerpetualFutureCurrency(t *testing.T) { t.Parallel() - is, err := k.IsPerpetualFutureCurrency(asset.Binary, currency.NewPair(currency.BTC, currency.USDT)) + is, err := k.IsPerpetualFutureCurrency(asset.Binary, currency.NewBTCUSDT()) assert.NoError(t, err) assert.False(t, is, "IsPerpetualFutureCurrency should return false for a binary asset") - is, err = k.IsPerpetualFutureCurrency(asset.Futures, currency.NewPair(currency.BTC, currency.USDT)) + is, err = k.IsPerpetualFutureCurrency(asset.Futures, currency.NewBTCUSDT()) assert.NoError(t, err) assert.False(t, is, "IsPerpetualFutureCurrency should return false for a non-perpetual future") diff --git a/exchanges/kucoin/kucoin_test.go b/exchanges/kucoin/kucoin_test.go index 34869bf5..83b65165 100644 --- a/exchanges/kucoin/kucoin_test.go +++ b/exchanges/kucoin/kucoin_test.go @@ -3110,7 +3110,7 @@ func TestGetLatestFundingRates(t *testing.T) { req := &fundingrate.LatestRateRequest{ Asset: asset.Futures, - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), } _, err = ku.GetLatestFundingRates(t.Context(), req) require.ErrorIs(t, err, futures.ErrNotPerpetualFuture) diff --git a/exchanges/okx/okx_test.go b/exchanges/okx/okx_test.go index b9fdc81f..07e12bbe 100644 --- a/exchanges/okx/okx_test.go +++ b/exchanges/okx/okx_test.go @@ -3326,7 +3326,7 @@ func TestUpdateOrderExecutionLimits(t *testing.T) { tests := map[asset.Item][]currency.Pair{ asset.Spot: { currency.NewPair(currency.ETH, currency.USDT), - currency.NewPair(currency.BTC, currency.USDT), + currency.NewBTCUSDT(), }, asset.Margin: { currency.NewPair(currency.ETH, currency.USDT), @@ -3360,7 +3360,7 @@ func TestUpdateOrderExecutionLimits(t *testing.T) { func TestUpdateTicker(t *testing.T) { t.Parallel() - result, err := ok.UpdateTicker(contextGenerate(), currency.NewPair(currency.BTC, currency.USDT), asset.Spot) + result, err := ok.UpdateTicker(contextGenerate(), currency.NewBTCUSDT(), asset.Spot) require.NoError(t, err) assert.NotNil(t, result) } @@ -3410,10 +3410,10 @@ func TestGetWithdrawalsHistory(t *testing.T) { func TestGetRecentTrades(t *testing.T) { t.Parallel() - result, err := ok.GetRecentTrades(contextGenerate(), currency.NewPair(currency.BTC, currency.USDT), asset.PerpetualSwap) + result, err := ok.GetRecentTrades(contextGenerate(), currency.NewBTCUSDT(), asset.PerpetualSwap) require.NoError(t, err) require.NotNil(t, result) - result, err = ok.GetRecentTrades(contextGenerate(), currency.NewPair(currency.BTC, currency.USDT), asset.Spread) + result, err = ok.GetRecentTrades(contextGenerate(), currency.NewBTCUSDT(), asset.Spread) require.NoError(t, err) assert.NotNil(t, result) } @@ -3889,7 +3889,7 @@ func TestValidateAPICredentials(t *testing.T) { func TestGetHistoricCandles(t *testing.T) { t.Parallel() - pair := currency.NewPair(currency.BTC, currency.USDT) + pair := currency.NewBTCUSDT() startTime := time.Date(2021, 2, 1, 0, 0, 0, 0, time.UTC) endTime := startTime.AddDate(0, 0, 100) _, err := ok.GetHistoricCandles(contextGenerate(), pair, asset.Spot, kline.Interval(time.Hour*4), startTime, endTime) @@ -3902,7 +3902,7 @@ func TestGetHistoricCandles(t *testing.T) { func TestGetHistoricCandlesExtended(t *testing.T) { t.Parallel() - currencyPair := currency.NewPair(currency.BTC, currency.USDT) + currencyPair := currency.NewBTCUSDT() result, err := ok.GetHistoricCandlesExtended(contextGenerate(), currencyPair, asset.Spot, kline.OneMin, time.Now().Add(-time.Hour), time.Now()) require.NoError(t, err) assert.NotNil(t, result) @@ -4046,7 +4046,7 @@ func TestPushDataDynamic(t *testing.T) { func TestGetHistoricTrades(t *testing.T) { t.Parallel() - result, err := ok.GetHistoricTrades(contextGenerate(), currency.NewPair(currency.BTC, currency.USDT), asset.Spot, time.Now().Add(-time.Minute*4), time.Now().Add(-time.Minute*2)) + result, err := ok.GetHistoricTrades(contextGenerate(), currency.NewBTCUSDT(), asset.Spot, time.Now().Add(-time.Minute*4), time.Now().Add(-time.Minute*2)) require.NoError(t, err) assert.NotNil(t, result) } @@ -4138,15 +4138,15 @@ func TestWSProcessTrades(t *testing.T) { func TestInstrumentsSubscription(t *testing.T) { t.Parallel() - err := ok.InstrumentsSubscription(contextGenerate(), "subscribe", asset.Spot, currency.NewPair(currency.BTC, currency.USDT)) + err := ok.InstrumentsSubscription(contextGenerate(), "subscribe", asset.Spot, currency.NewBTCUSDT()) assert.NoError(t, err) } func TestTickersSubscription(t *testing.T) { t.Parallel() - err := ok.TickersSubscription(contextGenerate(), "subscribe", asset.Margin, currency.NewPair(currency.BTC, currency.USDT)) + err := ok.TickersSubscription(contextGenerate(), "subscribe", asset.Margin, currency.NewBTCUSDT()) require.NoError(t, err) - err = ok.TickersSubscription(contextGenerate(), "unsubscribe", asset.Spot, currency.NewPair(currency.BTC, currency.USDT)) + err = ok.TickersSubscription(contextGenerate(), "unsubscribe", asset.Spot, currency.NewBTCUSDT()) assert.NoError(t, err) } @@ -4169,7 +4169,7 @@ func TestCandlesticksSubscription(t *testing.T) { func TestTradesSubscription(t *testing.T) { t.Parallel() - err := ok.TradesSubscription(contextGenerate(), "subscribe", asset.Spot, currency.NewPair(currency.BTC, currency.USDT)) + err := ok.TradesSubscription(contextGenerate(), "subscribe", asset.Spot, currency.NewBTCUSDT()) assert.NoError(t, err) } @@ -4275,9 +4275,9 @@ func TestPublicStructureBlockTradesSubscription(t *testing.T) { func TestBlockTickerSubscription(t *testing.T) { t.Parallel() - err := ok.BlockTickerSubscription(contextGenerate(), "subscribe", asset.Options, currency.NewPair(currency.BTC, currency.USDT)) + err := ok.BlockTickerSubscription(contextGenerate(), "subscribe", asset.Options, currency.NewBTCUSDT()) require.NoError(t, err) - err = ok.BlockTickerSubscription(contextGenerate(), "unsubscribe", asset.Options, currency.NewPair(currency.BTC, currency.USDT)) + err = ok.BlockTickerSubscription(contextGenerate(), "unsubscribe", asset.Options, currency.NewBTCUSDT()) assert.NoError(t, err) } @@ -4294,7 +4294,7 @@ func TestPublicBlockTradesSubscription(t *testing.T) { func TestWsAccountSubscription(t *testing.T) { t.Parallel() sharedtestvalues.SkipTestIfCredentialsUnset(t, ok) - err := ok.WsAccountSubscription(contextGenerate(), "subscribe", asset.Spot, currency.NewPair(currency.BTC, currency.USDT)) + err := ok.WsAccountSubscription(contextGenerate(), "subscribe", asset.Spot, currency.NewBTCUSDT()) assert.NoError(t, err) } @@ -4796,7 +4796,7 @@ func TestGetHistoricalFundingRates(t *testing.T) { func TestIsPerpetualFutureCurrency(t *testing.T) { t.Parallel() - is, err := ok.IsPerpetualFutureCurrency(asset.Binary, currency.NewPair(currency.BTC, currency.USDT)) + is, err := ok.IsPerpetualFutureCurrency(asset.Binary, currency.NewBTCUSDT()) require.NoError(t, err) require.False(t, is) diff --git a/exchanges/order/limits_test.go b/exchanges/order/limits_test.go index 072c9c5a..4dd24e02 100644 --- a/exchanges/order/limits_test.go +++ b/exchanges/order/limits_test.go @@ -10,7 +10,7 @@ import ( ) var ( - btcusd = currency.NewPair(currency.BTC, currency.USD) + btcusd = currency.NewBTCUSD() ltcusd = currency.NewPair(currency.LTC, currency.USD) btcltc = currency.NewPair(currency.BTC, currency.LTC) ) diff --git a/exchanges/order/order_test.go b/exchanges/order/order_test.go index 7e5cdd21..4a69a0e6 100644 --- a/exchanges/order/order_test.go +++ b/exchanges/order/order_test.go @@ -635,7 +635,7 @@ func TestFilterOrdersByPairs(t *testing.T) { orders := []Detail{ { - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), }, { Pair: currency.NewPair(currency.LTC, currency.EUR), @@ -647,7 +647,7 @@ func TestFilterOrdersByPairs(t *testing.T) { } currencies := []currency.Pair{ - currency.NewPair(currency.BTC, currency.USD), + currency.NewBTCUSD(), currency.NewPair(currency.LTC, currency.EUR), currency.NewPair(currency.DOGE, currency.RUB), } @@ -657,7 +657,7 @@ func TestFilterOrdersByPairs(t *testing.T) { } currencies = []currency.Pair{ - currency.NewPair(currency.BTC, currency.USD), + currency.NewBTCUSD(), currency.NewPair(currency.LTC, currency.EUR), } FilterOrdersByPairs(&orders, currencies) @@ -665,7 +665,7 @@ func TestFilterOrdersByPairs(t *testing.T) { t.Errorf("Orders failed to be filtered. Expected %v, received %v", 2, len(orders)) } - currencies = []currency.Pair{currency.NewPair(currency.BTC, currency.USD)} + currencies = []currency.Pair{currency.NewBTCUSD()} FilterOrdersByPairs(&orders, currencies) if len(orders) != 2 { t.Errorf("Orders failed to be filtered. Expected %v, received %v", 1, len(orders)) @@ -690,16 +690,16 @@ func TestFilterOrdersByPairs(t *testing.T) { } var filterOrdersByPairsBenchmark = &[]Detail{ - {Pair: currency.NewPair(currency.BTC, currency.USD)}, - {Pair: currency.NewPair(currency.BTC, currency.USD)}, - {Pair: currency.NewPair(currency.BTC, currency.USD)}, - {Pair: currency.NewPair(currency.BTC, currency.USD)}, - {Pair: currency.NewPair(currency.BTC, currency.USD)}, - {Pair: currency.NewPair(currency.BTC, currency.USD)}, - {Pair: currency.NewPair(currency.BTC, currency.USD)}, - {Pair: currency.NewPair(currency.BTC, currency.USD)}, - {Pair: currency.NewPair(currency.BTC, currency.USD)}, - {Pair: currency.NewPair(currency.BTC, currency.USD)}, + {Pair: currency.NewBTCUSD()}, + {Pair: currency.NewBTCUSD()}, + {Pair: currency.NewBTCUSD()}, + {Pair: currency.NewBTCUSD()}, + {Pair: currency.NewBTCUSD()}, + {Pair: currency.NewBTCUSD()}, + {Pair: currency.NewBTCUSD()}, + {Pair: currency.NewBTCUSD()}, + {Pair: currency.NewBTCUSD()}, + {Pair: currency.NewBTCUSD()}, } // BenchmarkFilterOrdersByPairs benchmark @@ -707,7 +707,7 @@ var filterOrdersByPairsBenchmark = &[]Detail{ // 400032 2977 ns/op 15840 B/op 5 allocs/op // PREV // 6977242 172.8 ns/op 0 B/op 0 allocs/op // CURRENT func BenchmarkFilterOrdersByPairs(b *testing.B) { - pairs := []currency.Pair{currency.NewPair(currency.BTC, currency.USD)} + pairs := []currency.Pair{currency.NewBTCUSD()} for b.Loop() { FilterOrdersByPairs(filterOrdersByPairsBenchmark, pairs) } @@ -1381,7 +1381,7 @@ func TestValidationOnOrderTypes(t *testing.T) { t.Errorf("received '%v' expected '%v'", err, ErrPairIsEmpty) } - cancelMe.Pair = currency.NewPair(currency.BTC, currency.USDT) + cancelMe.Pair = currency.NewBTCUSDT() err = cancelMe.Validate(cancelMe.PairAssetRequired()) if err == nil || err.Error() != ErrAssetNotSet.Error() { t.Errorf("received '%v' expected '%v'", err, ErrAssetNotSet) diff --git a/exchanges/orderbook/calculator_test.go b/exchanges/orderbook/calculator_test.go index 714ce445..eafb763b 100644 --- a/exchanges/orderbook/calculator_test.go +++ b/exchanges/orderbook/calculator_test.go @@ -12,7 +12,7 @@ import ( func testSetup() Base { return Base{ Exchange: "a", - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), Asks: []Tranche{ {Price: 7000, Amount: 1}, {Price: 7001, Amount: 2}, diff --git a/exchanges/orderbook/orderbook_test.go b/exchanges/orderbook/orderbook_test.go index 368b501d..56edf166 100644 --- a/exchanges/orderbook/orderbook_test.go +++ b/exchanges/orderbook/orderbook_test.go @@ -31,7 +31,7 @@ func TestSubscribeToExchangeOrderbooks(t *testing.T) { _, err := SubscribeToExchangeOrderbooks("") assert.ErrorIs(t, err, ErrOrderbookNotFound) - p := currency.NewPair(currency.BTC, currency.USD) + p := currency.NewBTCUSD() b := Base{ Pair: p, @@ -51,7 +51,7 @@ func TestVerify(t *testing.T) { b := Base{ Exchange: "TestExchange", Asset: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), VerifyOrderbook: true, } diff --git a/exchanges/orderbook/simulator/simulator_test.go b/exchanges/orderbook/simulator/simulator_test.go index 3e03ef2d..63e1d739 100644 --- a/exchanges/orderbook/simulator/simulator_test.go +++ b/exchanges/orderbook/simulator/simulator_test.go @@ -24,7 +24,7 @@ func TestSimulate(t *testing.T) { }, } o, err := b.UpdateOrderbook(t.Context(), - currency.NewPair(currency.BTC, currency.USD), asset.Spot) + currency.NewBTCUSD(), asset.Spot) if err != nil { t.Fatal(err) } diff --git a/exchanges/poloniex/poloniex_test.go b/exchanges/poloniex/poloniex_test.go index 280287fd..ae6c0b98 100644 --- a/exchanges/poloniex/poloniex_test.go +++ b/exchanges/poloniex/poloniex_test.go @@ -446,7 +446,7 @@ func TestModifyOrder(t *testing.T) { OrderID: "1337", Price: 1337, AssetType: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USDT), + Pair: currency.NewBTCUSDT(), }) switch { case sharedtestvalues.AreAPICredentialsSet(p) && err != nil && mockTests: @@ -1096,7 +1096,7 @@ func TestCancelBatchOrders(t *testing.T) { { OrderID: "1234", AssetType: asset.Spot, - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), }, }) if err != nil { diff --git a/exchanges/subscription/subscription_test.go b/exchanges/subscription/subscription_test.go index 3aac0389..a5b774f7 100644 --- a/exchanges/subscription/subscription_test.go +++ b/exchanges/subscription/subscription_test.go @@ -11,7 +11,7 @@ import ( ) var ( - btcusdtPair = currency.NewPair(currency.BTC, currency.USDT) + btcusdtPair = currency.NewBTCUSDT() ethusdcPair = currency.NewPair(currency.ETH, currency.USDC) ltcusdcPair = currency.NewPair(currency.LTC, currency.USDC) ) @@ -81,7 +81,7 @@ func TestSubscriptionMarshaling(t *testing.T) { assert.NoError(t, err, "Marshalling should not error") assert.JSONEq(t, `{"enabled":true,"channel":"orderbook","interval":"5m","levels":4}`, string(j), "Marshalling should be clean and concise") - j, err = json.Marshal(&Subscription{Enabled: true, Channel: OrderbookChannel, Interval: kline.FiveMin, Levels: 4, Pairs: currency.Pairs{currency.NewPair(currency.BTC, currency.USDT)}}) + j, err = json.Marshal(&Subscription{Enabled: true, Channel: OrderbookChannel, Interval: kline.FiveMin, Levels: 4, Pairs: currency.Pairs{currency.NewBTCUSDT()}}) assert.NoError(t, err, "Marshalling should not error") assert.JSONEq(t, `{"enabled":true,"channel":"orderbook","pairs":"BTCUSDT","interval":"5m","levels":4}`, string(j), "Marshalling should be clean and concise") diff --git a/exchanges/ticker/ticker_test.go b/exchanges/ticker/ticker_test.go index a93ff279..ee0b4552 100644 --- a/exchanges/ticker/ticker_test.go +++ b/exchanges/ticker/ticker_test.go @@ -38,7 +38,7 @@ func TestSubscribeTicker(t *testing.T) { t.Error("error cannot be nil") } - p := currency.NewPair(currency.BTC, currency.USD) + p := currency.NewBTCUSD() // force error service.mux = nil @@ -104,7 +104,7 @@ func TestSubscribeToExchangeTickers(t *testing.T) { t.Error("error cannot be nil") } - p := currency.NewPair(currency.BTC, currency.USD) + p := currency.NewBTCUSD() err = ProcessTicker(&Price{ Pair: p, @@ -279,7 +279,7 @@ func TestProcessTicker(t *testing.T) { // non-appending function to tickers err = ProcessTicker(&Price{ ExchangeName: "Bitfinex", - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), AssetType: asset.Margin, Bid: 1337, Ask: 1337, @@ -288,7 +288,7 @@ func TestProcessTicker(t *testing.T) { // non-appending function to tickers err = ProcessTicker(&Price{ ExchangeName: "Bitfinex", - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), AssetType: asset.Margin, Bid: 1338, Ask: 1336, @@ -299,7 +299,7 @@ func TestProcessTicker(t *testing.T) { // non-appending function to tickers err = ProcessTicker(&Price{ ExchangeName: "Bitfinex", - Pair: currency.NewPair(currency.BTC, currency.USD), + Pair: currency.NewBTCUSD(), AssetType: asset.MarginFunding, Bid: 1338, Ask: 1336, diff --git a/exchanges/trade/trade_test.go b/exchanges/trade/trade_test.go index ef5ced2c..28faa7ba 100644 --- a/exchanges/trade/trade_test.go +++ b/exchanges/trade/trade_test.go @@ -130,7 +130,7 @@ func TestSqlDataToTrade(t *testing.T) { func TestTradeToSQLData(t *testing.T) { t.Parallel() - cp := currency.NewPair(currency.BTC, currency.USD) + cp := currency.NewBTCUSD() sqlData, err := tradeToSQLData(Data{ Timestamp: time.Now(), Exchange: "test!", diff --git a/exchanges/yobit/yobit_test.go b/exchanges/yobit/yobit_test.go index b8c76c03..6f297a1b 100644 --- a/exchanges/yobit/yobit_test.go +++ b/exchanges/yobit/yobit_test.go @@ -113,7 +113,7 @@ func TestGetOpenOrders(t *testing.T) { func TestGetOrderInfo(t *testing.T) { t.Parallel() sharedtestvalues.SkipTestIfCredentialsUnset(t, y) - _, err := y.GetOrderInfo(t.Context(), "1337", currency.NewPair(currency.BTC, currency.USD), asset.Spot) + _, err := y.GetOrderInfo(t.Context(), "1337", currency.NewBTCUSD(), asset.Spot) if err != nil { t.Error(err) } diff --git a/gctscript/wrappers/gct/exchange/exchange_test.go b/gctscript/wrappers/gct/exchange/exchange_test.go index 27e01f23..6de95a41 100644 --- a/gctscript/wrappers/gct/exchange/exchange_test.go +++ b/gctscript/wrappers/gct/exchange/exchange_test.go @@ -173,7 +173,7 @@ func TestExchange_CancelOrder(t *testing.T) { t.Skip("no exchange configured test skipped") } t.Parallel() - cp := currency.NewPair(currency.BTC, currency.USD) + cp := currency.NewBTCUSD() a := asset.Spot _, err := exchangeTest.CancelOrder(t.Context(), exchName, orderID, cp, a) diff --git a/gctscript/wrappers/validator/validator_test.go b/gctscript/wrappers/validator/validator_test.go index 7ff6ff94..95fa4eae 100644 --- a/gctscript/wrappers/validator/validator_test.go +++ b/gctscript/wrappers/validator/validator_test.go @@ -78,7 +78,7 @@ func TestWrapper_AccountInformation(t *testing.T) { func TestWrapper_CancelOrder(t *testing.T) { t.Parallel() - cp := currency.NewPair(currency.BTC, currency.USD) + cp := currency.NewBTCUSD() _, err := testWrapper.CancelOrder(t.Context(), exchName, orderID, cp, assetType) if err != nil {