mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-19 15:10:05 +00:00
Subscriptions: Add List.Clone (#1592)
This commit is contained in:
@@ -46,6 +46,15 @@ func (l List) GroupPairs() (n List) {
|
||||
return s.List()
|
||||
}
|
||||
|
||||
// Clone returns a deep clone of the List
|
||||
func (l List) Clone() List {
|
||||
n := make(List, len(l))
|
||||
for i, s := range l {
|
||||
n[i] = s.Clone()
|
||||
}
|
||||
return n
|
||||
}
|
||||
|
||||
// QualifiedChannels returns a sorted list of all the qualified Channels in the list
|
||||
func (l List) QualifiedChannels() []string {
|
||||
c := make([]string, len(l))
|
||||
|
||||
@@ -8,6 +8,7 @@ import (
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/thrasher-corp/gocryptotrader/currency"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/kline"
|
||||
)
|
||||
|
||||
// TestListStrings exercises List.Strings()
|
||||
@@ -91,3 +92,15 @@ func TestAssetPairs(t *testing.T) {
|
||||
assert.ErrorIs(t, err, expErr, "Should error correctly on GetPairFormat")
|
||||
}
|
||||
}
|
||||
|
||||
func TestListClone(t *testing.T) {
|
||||
t.Parallel()
|
||||
l := List{{Channel: TickerChannel}, {Channel: OrderbookChannel}}
|
||||
n := l.Clone()
|
||||
assert.NotSame(t, n, l, "Slices must not be the same")
|
||||
require.NotEmpty(t, n, "List must not be empty")
|
||||
assert.NotSame(t, n[0], l[0], "Subscriptions must be cloned")
|
||||
assert.Equal(t, n[0], l[0], "Subscriptions should be equal")
|
||||
l[0].Interval = kline.OneHour
|
||||
assert.NotEqual(t, n[0], l[0], "Subscriptions should be cloned")
|
||||
}
|
||||
|
||||
@@ -90,8 +90,7 @@ func TestSubscriptionMarshaling(t *testing.T) {
|
||||
assert.Equal(t, `{"enabled":true,"channel":"myTrades","authenticated":true}`, string(j), "Marshalling should be clean and concise")
|
||||
}
|
||||
|
||||
// TestClone exercises Clone
|
||||
func TestClone(t *testing.T) {
|
||||
func TestSubscriptionClone(t *testing.T) {
|
||||
t.Parallel()
|
||||
params := map[string]any{"a": 42}
|
||||
a := &Subscription{
|
||||
|
||||
Reference in New Issue
Block a user