GHA: Add additional checks for common issues (#1922)

* GHA, tests: Add additional checks for common issues

These checks include:
- Ensuring that all testify funcs use their formatted variants (e.g., `assert.Equalf(t, expected, actual)` instead of `assert.Equal(t, expected, actual)`).
- Replacing `%s` with %q
- Enforcing consistent usage of should/must wording for testify assert/require messages

* Add support for checking backticked string format specifiers and fix issues

* tests: Fix error comparisons

* tests: Replace errors.Is(err, nil) usage with testify and automate check

* refactor: Rename ExtractPort to ExtractPortOrDefault

* tests: Replace assert with require for error handling in multiple test files

* tests: Replace assert with require for error handling and improve assertions in data tests

* tests: Fix typo in assertion message for StreamVol test

* OKX: Fix GetOpenInterestAndVolumeStrike test with instrument selection and improved assertions

* OKX: Revert intentional error check

* Improve error message for expiry time check in GetOpenInterestAndVolumeStrike test
This commit is contained in:
Adrian Gallagher
2025-05-28 12:26:51 +10:00
committed by GitHub
parent 1e5739dffa
commit a5b638bfb7
165 changed files with 2565 additions and 4626 deletions

View File

@@ -205,7 +205,7 @@ func (k *Item) addPadding(start, exclusiveEnd time.Time, purgeOnPartial bool) er
padded[x].Time = start
case !k.Candles[target].Time.Equal(start):
if k.Candles[target].Time.Before(start) {
return fmt.Errorf("%w '%s' should be '%s' at '%s' interval",
return fmt.Errorf("%w %q should be %q at %q interval",
errCandleOpenTimeIsNotUTCAligned,
k.Candles[target].Time,
start.Add(k.Interval.Duration()),

View File

@@ -77,9 +77,7 @@ func TestValidateData(t *testing.T) {
}
err = validateData(trade4)
if !errors.Is(err, nil) {
t.Errorf("received '%v' expected '%v'", err, nil)
}
assert.NoError(t, err)
if trade4[0].TID != "1" || trade4[1].TID != "2" || trade4[2].TID != "3" {
t.Error("trade history sorted incorrectly")
@@ -651,9 +649,8 @@ func TestVerifyResultsHaveData(t *testing.T) {
tt2 := tt1.Add(OneDay.Duration())
tt3 := tt2.Add(OneDay.Duration()) // end date no longer inclusive
dateRanges, err := CalculateCandleDateRanges(tt1, tt3, OneDay, 0)
if !errors.Is(err, nil) {
t.Errorf("received '%v' expected '%v'", err, nil)
}
assert.NoError(t, err)
if dateRanges.HasDataAtDate(tt1) {
t.Error("unexpected true value")
}
@@ -666,9 +663,7 @@ func TestVerifyResultsHaveData(t *testing.T) {
Time: tt2,
},
})
if !errors.Is(err, nil) {
t.Errorf("received '%v' expected '%v'", err, nil)
}
assert.NoError(t, err)
if !dateRanges.HasDataAtDate(tt1) {
t.Error("expected true")
@@ -682,9 +677,8 @@ func TestVerifyResultsHaveData(t *testing.T) {
Low: 1337,
},
})
if !errors.Is(err, nil) {
t.Errorf("received '%v' expected '%v'", err, nil)
}
assert.NoError(t, err)
if dateRanges.HasDataAtDate(tt1) {
t.Error("expected false")
}
@@ -696,17 +690,15 @@ func TestDataSummary(t *testing.T) {
tt2 := time.Now().Round(OneDay.Duration())
tt3 := time.Now().Add(time.Hour * 24).Round(OneDay.Duration())
dateRanges, err := CalculateCandleDateRanges(tt1, tt2, OneDay, 0)
if !errors.Is(err, nil) {
t.Errorf("received '%v' expected '%v'", err, nil)
}
assert.NoError(t, err)
result := dateRanges.DataSummary(false)
if len(result) != 1 {
t.Errorf("expected %v received %v", 1, len(result))
}
dateRanges, err = CalculateCandleDateRanges(tt1, tt3, OneDay, 0)
if !errors.Is(err, nil) {
t.Errorf("received '%v' expected '%v'", err, nil)
}
assert.NoError(t, err)
dateRanges.Ranges[0].Intervals[0].HasData = true
result = dateRanges.DataSummary(true)
if len(result) != 2 {
@@ -724,9 +716,8 @@ func TestHasDataAtDate(t *testing.T) {
tt2 := tt1.Add(OneDay.Duration())
tt3 := tt2.Add(OneDay.Duration()) // end date no longer inclusive
dateRanges, err := CalculateCandleDateRanges(tt1, tt3, OneDay, 0)
if !errors.Is(err, nil) {
t.Errorf("received '%v' expected '%v'", err, nil)
}
assert.NoError(t, err)
if dateRanges.HasDataAtDate(tt2) {
t.Error("unexpected true value")
}
@@ -741,9 +732,7 @@ func TestHasDataAtDate(t *testing.T) {
Close: 1337,
},
})
if !errors.Is(err, nil) {
t.Errorf("received '%v' expected '%v'", err, nil)
}
assert.NoError(t, err)
if !dateRanges.HasDataAtDate(tt2) {
t.Error("unexpected false value")
@@ -871,9 +860,8 @@ func TestConvertToNewInterval(t *testing.T) {
old.Interval = OneDay
newInterval := ThreeDay
newCandle, err := old.ConvertToNewInterval(newInterval)
if !errors.Is(err, nil) {
t.Fatalf("received '%v' expected '%v'", err, nil)
}
require.NoError(t, err)
if len(newCandle.Candles) != 1 {
t.Error("expected one candle")
}
@@ -894,9 +882,8 @@ func TestConvertToNewInterval(t *testing.T) {
Volume: 111,
})
newCandle, err = old.ConvertToNewInterval(newInterval)
if !errors.Is(err, nil) {
t.Errorf("received '%v' expected '%v'", err, nil)
}
assert.NoError(t, err)
if len(newCandle.Candles) != 1 {
t.Error("expected one candle")
}
@@ -964,14 +951,10 @@ func TestConvertToNewInterval(t *testing.T) {
}
err = old.addPadding(tn, tn.AddDate(0, 0, 9), false)
if !errors.Is(err, nil) {
t.Fatalf("received '%v' expected '%v'", err, nil)
}
require.NoError(t, err)
newCandle, err = old.ConvertToNewInterval(newInterval)
if !errors.Is(err, nil) {
t.Fatalf("received '%v' expected '%v'", err, nil)
}
require.NoError(t, err)
if len(newCandle.Candles) != 3 {
t.Errorf("received '%v' expected '%v'", len(newCandle.Candles), 3)
@@ -1089,9 +1072,7 @@ func TestAddPadding(t *testing.T) {
}
err = k.addPadding(tn, tn.AddDate(0, 0, 3), false)
if !errors.Is(err, nil) {
t.Fatalf("received '%v' expected '%v'", err, nil)
}
require.NoError(t, err)
if len(k.Candles) != 3 {
t.Fatalf("received '%v' expected '%v'", len(k.Candles), 3)
@@ -1107,9 +1088,7 @@ func TestAddPadding(t *testing.T) {
})
err = k.addPadding(tn, tn.AddDate(0, 0, 6), false)
if !errors.Is(err, nil) {
t.Fatalf("received '%v' expected '%v'", err, nil)
}
require.NoError(t, err)
if len(k.Candles) != 6 {
t.Fatalf("received '%v' expected '%v'", len(k.Candles), 6)
@@ -1119,9 +1098,7 @@ func TestAddPadding(t *testing.T) {
k.Candles = nil
err = k.addPadding(tn, tn.AddDate(0, 0, 6), false)
if !errors.Is(err, nil) {
t.Errorf("received '%v' expected '%v'", err, nil)
}
assert.NoError(t, err)
if len(k.Candles) != 6 {
t.Errorf("received '%v' expected '%v'", len(k.Candles), 6)
@@ -1144,9 +1121,8 @@ func TestGetClosePriceAtTime(t *testing.T) {
},
}
price, err := k.GetClosePriceAtTime(tt)
if !errors.Is(err, nil) {
t.Errorf("received '%v' expected '%v'", err, nil)
}
assert.NoError(t, err)
if price != 1337 {
t.Errorf("received '%v' expected '%v'", price, 1337)
}
@@ -1179,9 +1155,7 @@ func TestDeployExchangeIntervals(t *testing.T) {
}
request, err := exchangeIntervals.Construct(OneWeek)
if !errors.Is(err, nil) {
t.Errorf("received '%v' expected '%v'", err, nil)
}
assert.NoError(t, err)
if request != OneWeek {
t.Errorf("received '%v' expected '%v'", request, OneWeek)
@@ -1190,9 +1164,7 @@ func TestDeployExchangeIntervals(t *testing.T) {
exchangeIntervals = DeployExchangeIntervals(IntervalCapacity{Interval: OneWeek}, IntervalCapacity{Interval: OneDay})
request, err = exchangeIntervals.Construct(OneMonth)
if !errors.Is(err, nil) {
t.Errorf("received '%v' expected '%v'", err, nil)
}
assert.NoError(t, err)
if request != OneDay {
t.Errorf("received '%v' expected '%v'", request, OneDay)
@@ -1204,14 +1176,11 @@ func TestSetHasDataFromCandles(t *testing.T) {
ohc := getOneHour()
localEnd := ohc[len(ohc)-1].Time.Add(OneHour.Duration())
i, err := CalculateCandleDateRanges(ohc[0].Time, localEnd, OneHour, 100000)
if !errors.Is(err, nil) {
t.Errorf("received '%v' expected '%v'", err, nil)
}
assert.NoError(t, err)
err = i.SetHasDataFromCandles(ohc)
if !errors.Is(err, nil) {
t.Errorf("received '%v' expected '%v'", err, nil)
}
assert.NoError(t, err)
if !i.Start.Equal(ohc[0].Time) {
t.Errorf("received '%v' expected '%v'", i.Start.Time, ohc[0].Time)
}
@@ -1224,14 +1193,11 @@ func TestSetHasDataFromCandles(t *testing.T) {
Candles: ohc[2:],
}
err = k.addPadding(i.Start.Time, i.End.Time, false)
if !errors.Is(err, nil) {
t.Errorf("received '%v' expected '%v'", err, nil)
}
assert.NoError(t, err)
err = i.SetHasDataFromCandles(k.Candles)
if !errors.Is(err, nil) {
t.Errorf("received '%v' expected '%v'", err, nil)
}
assert.NoError(t, err)
if !i.Start.Equal(k.Candles[0].Time) {
t.Errorf("received '%v' expected '%v'", i.Start.Time, k.Candles[0].Time)
}
@@ -1272,9 +1238,7 @@ func TestGetIntervalResultLimit(t *testing.T) {
}
limit, err := e.GetIntervalResultLimit(OneDay)
if !errors.Is(err, nil) {
t.Errorf("received '%v' expected '%v'", err, nil)
}
assert.NoError(t, err)
if limit != 100000 {
t.Errorf("received '%v' expected '%v'", limit, 100000)
@@ -1282,9 +1246,7 @@ func TestGetIntervalResultLimit(t *testing.T) {
e.GlobalResultLimit = 1337
limit, err = e.GetIntervalResultLimit(OneMin)
if !errors.Is(err, nil) {
t.Errorf("received '%v' expected '%v'", err, nil)
}
assert.NoError(t, err)
if limit != 1337 {
t.Errorf("received '%v' expected '%v'", limit, 1337)

View File

@@ -6,6 +6,7 @@ import (
"testing"
"time"
"github.com/stretchr/testify/require"
"github.com/thrasher-corp/gocryptotrader/common"
"github.com/thrasher-corp/gocryptotrader/currency"
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
@@ -63,9 +64,7 @@ func TestCreateKlineRequest(t *testing.T) {
}
r, err := CreateKlineRequest("name", pair, pair2, asset.Spot, OneHour, OneMin, start, end, 1)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v', but expected '%v'", err, nil)
}
require.NoError(t, err)
if r.Exchange != "name" {
t.Fatalf("received: '%v' but expected: '%v'", r.Exchange, "name")
@@ -104,9 +103,7 @@ func TestCreateKlineRequest(t *testing.T) {
end = end.Round(0)
end = end.Add(time.Second * 30)
r, err = CreateKlineRequest("name", pair, pair2, asset.Spot, OneHour, OneMin, start, end, 1)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v', but expected '%v'", err, nil)
}
require.NoError(t, err)
if !r.End.Equal(end.Add(OneHour.Duration() - (time.Second * 30))) {
t.Fatalf("received: '%v', but expected '%v'", r.End, end.Add(OneHour.Duration()-(time.Second*30)))
@@ -127,14 +124,10 @@ func TestGetRanges(t *testing.T) {
}
r, err = CreateKlineRequest("name", pair, pair, asset.Spot, OneHour, OneMin, start, end, 1)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v', but expected '%v'", err, nil)
}
require.NoError(t, err)
holder, err := r.GetRanges(100)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v', but expected '%v'", err, nil)
}
require.NoError(t, err)
if len(holder.Ranges) != 15 {
t.Fatalf("received: '%v', but expected '%v'", len(holder.Ranges), 15)
@@ -219,14 +212,10 @@ func TestRequest_ProcessResponse(t *testing.T) {
// no conversion
r, err = CreateKlineRequest("name", pair, pair, asset.Spot, OneHour, OneHour, start, end, 1)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v', but expected '%v'", err, nil)
}
require.NoError(t, err)
holder, err := r.ProcessResponse(getOneHour())
if !errors.Is(err, nil) {
t.Fatalf("received: '%v', but expected '%v'", err, nil)
}
require.NoError(t, err)
if len(holder.Candles) != 24 {
t.Fatalf("received: '%v', but expected '%v'", len(holder.Candles), 24)
@@ -234,14 +223,10 @@ func TestRequest_ProcessResponse(t *testing.T) {
// with conversion
r, err = CreateKlineRequest("name", pair, pair, asset.Spot, OneHour, OneMin, start, end, 1)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v', but expected '%v'", err, nil)
}
require.NoError(t, err)
holder, err = r.ProcessResponse(getOneMinute())
if !errors.Is(err, nil) {
t.Fatalf("received: '%v', but expected '%v'", err, nil)
}
require.NoError(t, err)
if len(holder.Candles) != 24 {
t.Fatalf("received: '%v', but expected '%v'", len(holder.Candles), 24)
@@ -251,9 +236,7 @@ func TestRequest_ProcessResponse(t *testing.T) {
end = time.Now().UTC()
start = end.AddDate(0, 0, -5).Truncate(time.Duration(OneDay))
r, err = CreateKlineRequest("name", pair, pair, asset.Spot, OneDay, OneDay, start, end, 1)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v', but expected '%v'", err, nil)
}
require.NoError(t, err)
if !r.PartialCandle {
t.Fatalf("received: '%v', but expected '%v'", r.PartialCandle, true)
@@ -269,9 +252,7 @@ func TestRequest_ProcessResponse(t *testing.T) {
}
sweetItem, err := r.ProcessResponse(hasIncomplete)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v', but expected '%v'", err, nil)
}
require.NoError(t, err)
if sweetItem.Candles[len(sweetItem.Candles)-1].ValidationIssues != PartialCandle {
t.Fatalf("received: '%v', but expected '%v'", "no issues", PartialCandle)
@@ -286,9 +267,7 @@ func TestRequest_ProcessResponse(t *testing.T) {
}
sweetItem, err = r.ProcessResponse(missingIncomplete)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v', but expected '%v'", err, nil)
}
require.NoError(t, err)
if sweetItem.Candles[len(sweetItem.Candles)-1].ValidationIssues == PartialCandle {
t.Fatalf("received: '%v', but expected '%v'", sweetItem.Candles[len(sweetItem.Candles)-1].ValidationIssues, "no issues")
@@ -296,23 +275,17 @@ func TestRequest_ProcessResponse(t *testing.T) {
// end date far into the dark depths of future reality
r, err = CreateKlineRequest("name", pair, pair, asset.Spot, OneDay, OneDay, start, end.AddDate(1, 0, 0), 1)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v', but expected '%v'", err, nil)
}
require.NoError(t, err)
sweetItem, err = r.ProcessResponse(hasIncomplete)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v', but expected '%v'", err, nil)
}
require.NoError(t, err)
if sweetItem.Candles[len(sweetItem.Candles)-1].ValidationIssues != PartialCandle {
t.Fatalf("received: '%v', but expected '%v'", "no issues", PartialCandle)
}
sweetItem, err = r.ProcessResponse(missingIncomplete)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v', but expected '%v'", err, nil)
}
require.NoError(t, err)
if len(sweetItem.Candles) != 5 {
t.Fatalf("received: '%v', but expected '%v'", len(sweetItem.Candles), 5)
@@ -349,21 +322,16 @@ func TestExtendedRequest_ProcessResponse(t *testing.T) {
// no conversion
r, err := CreateKlineRequest("name", pair, pair, asset.Spot, OneHour, OneHour, start, end, 1)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v', but expected '%v'", err, nil)
}
require.NoError(t, err)
r.ProcessedCandles = ohc
dates, err := r.GetRanges(100)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v', but expected '%v'", err, nil)
}
require.NoError(t, err)
rExt = &ExtendedRequest{r, dates}
holder, err := rExt.ProcessResponse(ohc)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v', but expected '%v'", err, nil)
}
require.NoError(t, err)
if len(holder.Candles) != 24 {
t.Fatalf("received: '%v', but expected '%v'", len(holder.Candles), 24)
@@ -372,21 +340,15 @@ func TestExtendedRequest_ProcessResponse(t *testing.T) {
// with conversion
ohc = getOneMinute()
r, err = CreateKlineRequest("name", pair, pair, asset.Spot, OneHour, OneMin, start, end, 1)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v', but expected '%v'", err, nil)
}
require.NoError(t, err)
dates, err = r.GetRanges(100)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v', but expected '%v'", err, nil)
}
require.NoError(t, err)
r.IsExtended = true
rExt = &ExtendedRequest{r, dates}
holder, err = rExt.ProcessResponse(ohc)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v', but expected '%v'", err, nil)
}
require.NoError(t, err)
if len(holder.Candles) != 24 {
t.Fatalf("received: '%v', but expected '%v'", len(holder.Candles), 24)

View File

@@ -3,6 +3,8 @@ package kline
import (
"errors"
"testing"
"github.com/stretchr/testify/require"
)
func TestGetOHLC(t *testing.T) {
@@ -51,15 +53,11 @@ func TestGetAverageTrueRange(t *testing.T) {
}
_, err = ohlc.GetAverageTrueRange(1)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
wrap := Item{Candles: []Candle{{High: 1337, Low: 1337, Close: 1337}}}
_, err = wrap.GetAverageTrueRange(1)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
}
func TestGetBollingerBands(t *testing.T) {
@@ -99,15 +97,11 @@ func TestGetBollingerBands(t *testing.T) {
}
_, err = ohlc.GetBollingerBands(9, 1, 1, 5)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
wrap := Item{Candles: []Candle{{Close: 1337}, {Close: 1337}, {Close: 1337}, {Close: 1337}, {Close: 1337}, {Close: 1337}, {Close: 1337}, {Close: 1337}, {Close: 1337}}}
_, err = wrap.GetBollingerBands(9, 1, 1, 5)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
}
func TestGetCorrelationCoefficient(t *testing.T) {
@@ -159,15 +153,11 @@ func TestGetCorrelationCoefficient(t *testing.T) {
}
_, err = ohlc.GetCorrelationCoefficient(&OHLC{Close: []float64{1337, 1337, 1337}}, 2)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
wrap := Item{Candles: []Candle{{Close: 1337}, {Close: 1337}, {Close: 1337}}}
_, err = wrap.GetCorrelationCoefficient(&Item{Candles: []Candle{{Close: 1337}, {Close: 1337}, {Close: 1337}}}, 2)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
}
func TestGetSimpleMovingAverage(t *testing.T) {
@@ -196,15 +186,11 @@ func TestGetSimpleMovingAverage(t *testing.T) {
}
_, err = ohlc.GetSimpleMovingAverage([]float64{1337, 1337}, 2)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
wrap := Item{Candles: []Candle{{Close: 1337}, {Close: 1337}}}
_, err = wrap.GetSimpleMovingAverageOnClose(2)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
}
func TestGetExponentialMovingAverage(t *testing.T) {
@@ -233,15 +219,11 @@ func TestGetExponentialMovingAverage(t *testing.T) {
}
_, err = ohlc.GetExponentialMovingAverage([]float64{1337, 1337, 1337}, 2)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
wrap := Item{Candles: []Candle{{Close: 1337}, {Close: 1337}, {Close: 1337}}}
_, err = wrap.GetExponentialMovingAverageOnClose(2)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
}
func TestGetMovingAverageConvergenceDivergence(t *testing.T) {
@@ -285,15 +267,11 @@ func TestGetMovingAverageConvergenceDivergence(t *testing.T) {
}
_, err = ohlc.GetMovingAverageConvergenceDivergence([]float64{1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337}, 1, 2, 1)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
wrap := Item{Candles: []Candle{{Close: 1337}, {Close: 1337}, {Close: 1337}, {Close: 1337}, {Close: 1337}, {Close: 1337}, {Close: 1337}, {Close: 1337}}}
_, err = wrap.GetMovingAverageConvergenceDivergenceOnClose(1, 2, 1)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
}
func TestGetMoneyFlowIndex(t *testing.T) {
@@ -347,9 +325,7 @@ func TestGetMoneyFlowIndex(t *testing.T) {
}
_, err = ohlc.GetMoneyFlowIndex(3)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
wrap := Item{Candles: []Candle{
{Close: 1337, High: 1337, Low: 1337, Volume: 1337},
@@ -357,9 +333,7 @@ func TestGetMoneyFlowIndex(t *testing.T) {
{Close: 1337, High: 1337, Low: 1337, Volume: 1337},
}}
_, err = wrap.GetMoneyFlowIndex(2)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
}
func TestGetOnBalanceVolume(t *testing.T) {
@@ -385,15 +359,11 @@ func TestGetOnBalanceVolume(t *testing.T) {
ohlc.Volume = append(ohlc.Volume, 0.00000001)
_, err = ohlc.GetOnBalanceVolume()
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
wrap := Item{Candles: []Candle{{Close: 1337, Volume: 1337}}}
_, err = wrap.GetOnBalanceVolume()
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
}
func TestGetRelativeStrengthIndex(t *testing.T) {
@@ -423,7 +393,5 @@ func TestGetRelativeStrengthIndex(t *testing.T) {
wrap := Item{Candles: []Candle{{Close: 1337}, {Close: 1337}, {Close: 1337}}}
_, err = wrap.GetRelativeStrengthIndexOnClose(2)
if !errors.Is(err, nil) {
t.Fatalf("received: '%v' but expected: '%v'", err, nil)
}
require.NoError(t, err)
}