mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-15 23:16:48 +00:00
* implemented binance and bitfinex GetHistoricCandles wrapper methods) * coinbene supported added * after and before clean up * gateio wrapper completed * merged upstream/master * Added bsaic KlineIntervalSupported() method * Converted binance fixed test * WIP * new KlineConvertToExchangeStandardString method added * end of day WIP * WIP * end of day WIP started migration of trade history * added kline support to hitbtc huobi lbank * added exchangehistory to all supported exchanges started work on coinbase 300 candles/request method * end of day WIP * removed unused ta and misc changes to flag ready for review * yobit cleanup * revert coinbase changES * general code clean up and added zb support * poloniex support added * renamed method to FormatExchangeKlineInterval other misc fixes * linter fixes * linter fixes * removed verbose * fixed poloniex test coverage * revert poloniex mock data * regenerated poloniex mock data * a very verbose clean up * binance mock clean up * removed unneeded t.Log() * setting verbose to true to debug CI issue * first pass changes addressed * common.ErrNotYetImplemented implemented :D * comments added * WIP-addressed exchange requests and reverted previous GetExchangeHistory changes * WIP-addressed exchange requests and reverted previous GetExchangeHistory changes * increased test coverage added kraken support * OKGroup support completed started work on address GetExchangeHistory feedback and migrating to own PR under https://github.com/xtda/gocryptotrader/tree/exchange_history * convert zb ratelimits * gofmt run on okcoin * increased delay on rate limit * gofmt package * fixed panic with coinbene and bithumb if conversion fails * very broken end of day WIP * added support for GetHistoricCandlesEx to coinbase and binance * gofmt package * coinbase, btcmarkets, zb ex wrapper function added * added all exchange support for ex regenerated mock data * update bithumb to return wrapper method * gofmt package * end of day started work on changes * reworked test coverage added okgroup support general fixes/change requests addressed * Added OneMonth * limit checks on supportedexchanges * reverted getexchangehistory * reworked binance tesT * added workaround for kraken panic * renamed command to extended removed interval check on non-implemented commands * added wrapperconfig back * increased test coverage for FormatExchangeKlineInterval * WIP * increased test coverage for FormatExchangeKlineInterval bitfinex/gateio/huobi * linter fixes * zb kraken lbank coinbene btcmarkets support added * removed verbose * OK group support for other asset types added * swapped margin to use spot endpoint * index support added test coverage added for asset types * added asset type to okcoin test * gofmt * add asset to extended method * removed verbose * add support for coinbene swap increase test coverage * removed verbose * small clean up of okgroup wrapper functions * verbose to troubleshoot CI issues * removed verbose * added error check reverted coinbasechanges * readme updated * removed unused start/finish started work on decoupling api requests from kline package * restructured coinbene, bithumb methods, added bitstamp support * kraken time fix * BTCMarkets restructure * typo fix * removed test for futures due to contact changing * added start/end date to extended method over range * converted to assettranslator * removed verbose * removed invalid char * reverted incorrectly removed return * added import * further template updates * macos hates my keyboard :D * misc canges * x -> i * removed verbose * updated fixCasing to allocate var before checks * removed time conversion * sort all outgoing kline candles * fixCasing fix * after/before checks added * added parallel to test * logic check on BTCmarkets * removed unused param, used correct iterator * converted HitBTC to use time.Time * add iszero false check to candle times * updated resultlimit to 5000 * new line added * added comment to exported const * use configured ratelimit * fixed pair for test * panic fixed WIP on fixCasing * fixCasing rework, started work on readme docs * enable rate limiter for wrapper issues tool * docs updated * removed err from return and formatted currency * updated Yobit supported status * Updated HitBTC to use onehour candles due to test exeuction times * added further details to gctcli output * added link to docs * added link to tempalte * disable FTX websocket in config_example * fix poloneix * regenerated poloniex mock data * removed recording flag
186 lines
4.7 KiB
Go
186 lines
4.7 KiB
Go
package convert
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestFloatFromString(t *testing.T) {
|
|
t.Parallel()
|
|
testString := "1.41421356237"
|
|
expectedOutput := float64(1.41421356237)
|
|
|
|
actualOutput, err := FloatFromString(testString)
|
|
if actualOutput != expectedOutput || err != nil {
|
|
t.Errorf("Common FloatFromString. Expected '%v'. Actual '%v'. Error: %s",
|
|
expectedOutput, actualOutput, err)
|
|
}
|
|
|
|
var testByte []byte
|
|
_, err = FloatFromString(testByte)
|
|
if err == nil {
|
|
t.Error("Common FloatFromString. Converted non-string.")
|
|
}
|
|
|
|
testString = " something unconvertible "
|
|
_, err = FloatFromString(testString)
|
|
if err == nil {
|
|
t.Error("Common FloatFromString. Converted invalid syntax.")
|
|
}
|
|
}
|
|
|
|
func TestIntFromString(t *testing.T) {
|
|
t.Parallel()
|
|
testString := "1337"
|
|
expectedOutput := 1337
|
|
|
|
actualOutput, err := IntFromString(testString)
|
|
if actualOutput != expectedOutput || err != nil {
|
|
t.Errorf("Common IntFromString. Expected '%v'. Actual '%v'. Error: %s",
|
|
expectedOutput, actualOutput, err)
|
|
}
|
|
|
|
var testByte []byte
|
|
_, err = IntFromString(testByte)
|
|
if err == nil {
|
|
t.Error("Common IntFromString. Converted non-string.")
|
|
}
|
|
|
|
testString = "1.41421356237"
|
|
_, err = IntFromString(testString)
|
|
if err == nil {
|
|
t.Error("Common IntFromString. Converted invalid syntax.")
|
|
}
|
|
}
|
|
|
|
func TestInt64FromString(t *testing.T) {
|
|
t.Parallel()
|
|
testString := "4398046511104"
|
|
expectedOutput := int64(1 << 42)
|
|
|
|
actualOutput, err := Int64FromString(testString)
|
|
if actualOutput != expectedOutput || err != nil {
|
|
t.Errorf("Common Int64FromString. Expected '%v'. Actual '%v'. Error: %s",
|
|
expectedOutput, actualOutput, err)
|
|
}
|
|
|
|
var testByte []byte
|
|
_, err = Int64FromString(testByte)
|
|
if err == nil {
|
|
t.Error("Common Int64FromString. Converted non-string.")
|
|
}
|
|
|
|
testString = "1.41421356237"
|
|
_, err = Int64FromString(testString)
|
|
if err == nil {
|
|
t.Error("Common Int64FromString. Converted invalid syntax.")
|
|
}
|
|
}
|
|
|
|
func TestTimeFromUnixTimestampFloat(t *testing.T) {
|
|
t.Parallel()
|
|
testTimestamp := float64(1414456320000)
|
|
expectedOutput := time.Date(2014, time.October, 28, 0, 32, 0, 0, time.UTC)
|
|
|
|
actualOutput, err := TimeFromUnixTimestampFloat(testTimestamp)
|
|
if actualOutput.UTC().String() != expectedOutput.UTC().String() || err != nil {
|
|
t.Errorf("Common TimeFromUnixTimestampFloat. Expected '%v'. Actual '%v'. Error: %s",
|
|
expectedOutput, actualOutput, err)
|
|
}
|
|
|
|
testString := "Time"
|
|
_, err = TimeFromUnixTimestampFloat(testString)
|
|
if err == nil {
|
|
t.Error("Common TimeFromUnixTimestampFloat. Converted invalid syntax.")
|
|
}
|
|
}
|
|
|
|
func TestTimeFromUnixTimestampDecimal(t *testing.T) {
|
|
r := TimeFromUnixTimestampDecimal(1590633982.5714)
|
|
if r.Year() != 2020 ||
|
|
r.Month().String() != "May" ||
|
|
r.Day() != 28 {
|
|
t.Error("unexpected result")
|
|
}
|
|
|
|
r = TimeFromUnixTimestampDecimal(1560516023.070651)
|
|
if r.Year() != 2019 ||
|
|
r.Month().String() != "June" ||
|
|
r.Day() != 14 {
|
|
t.Error("unexpected result")
|
|
}
|
|
}
|
|
|
|
func TestUnixTimestampToTime(t *testing.T) {
|
|
t.Parallel()
|
|
testTime := int64(1489439831)
|
|
tm := time.Unix(testTime, 0)
|
|
expectedOutput := "2017-03-13 21:17:11 +0000 UTC"
|
|
actualResult := UnixTimestampToTime(testTime)
|
|
if tm.String() != actualResult.String() {
|
|
t.Errorf(
|
|
"Expected '%s'. Actual '%s'.", expectedOutput, actualResult)
|
|
}
|
|
}
|
|
|
|
func TestUnixTimestampStrToTime(t *testing.T) {
|
|
t.Parallel()
|
|
testTime := "1489439831"
|
|
incorrectTime := "DINGDONG"
|
|
expectedOutput := "2017-03-13 21:17:11 +0000 UTC"
|
|
actualResult, err := UnixTimestampStrToTime(testTime)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
if actualResult.UTC().String() != expectedOutput {
|
|
t.Errorf(
|
|
"Expected '%s'. Actual '%s'.", expectedOutput, actualResult)
|
|
}
|
|
actualResult, err = UnixTimestampStrToTime(incorrectTime)
|
|
if err == nil {
|
|
t.Error("Common UnixTimestampStrToTime error")
|
|
}
|
|
}
|
|
|
|
func TestUnixMillis(t *testing.T) {
|
|
t.Parallel()
|
|
testTime := time.Date(2014, time.October, 28, 0, 32, 0, 0, time.UTC)
|
|
expectedOutput := int64(1414456320000)
|
|
|
|
actualOutput := UnixMillis(testTime)
|
|
if actualOutput != expectedOutput {
|
|
t.Errorf("Common UnixMillis. Expected '%d'. Actual '%d'.",
|
|
expectedOutput, actualOutput)
|
|
}
|
|
}
|
|
|
|
func TestRecvWindow(t *testing.T) {
|
|
t.Parallel()
|
|
testTime := time.Duration(24760000)
|
|
expectedOutput := int64(24)
|
|
|
|
actualOutput := RecvWindow(testTime)
|
|
if actualOutput != expectedOutput {
|
|
t.Errorf("Common RecvWindow. Expected '%d'. Actual '%d'",
|
|
expectedOutput, actualOutput)
|
|
}
|
|
}
|
|
|
|
func TestBoolPtr(t *testing.T) {
|
|
y := BoolPtr(true)
|
|
if !*y {
|
|
t.Fatal("true expected received false")
|
|
}
|
|
z := BoolPtr(false)
|
|
if *z {
|
|
t.Fatal("false expected received true")
|
|
}
|
|
}
|
|
|
|
func TestUnixMillisToNano(t *testing.T) {
|
|
v := UnixMillisToNano(1588653603424)
|
|
if v != 1588653603424000000 {
|
|
t.Fatalf("unexpected result received %v", v)
|
|
}
|
|
}
|