Files
ccxt_with_mt5/ccxt/test/base/test_safe_methods.py
lz_db 0fab423a18 add
2025-11-16 12:31:03 +08:00

276 lines
14 KiB
Python

import os
import sys
root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
sys.path.append(root)
# ----------------------------------------------------------------------------
# PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
# https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
# ----------------------------------------------------------------------------
# -*- coding: utf-8 -*-
import ccxt # noqa: F402
def equals(a, b):
return a == b
def test_safe_methods():
exchange = ccxt.Exchange({
'id': 'regirock',
})
input_dict = {
'i': 1,
'f': 0.123,
'bool': True,
'list': [1, 2, 3],
'dict': {
'a': 1,
},
'str': 'heLlo',
'strNumber': '3',
'zeroNumeric': 0,
'zeroString': '0',
'undefined': None,
'emptyString': '',
'floatNumeric': 0.123,
'floatString': '0.123',
}
input_list = ['Hi', 2]
compare_dict = {
'a': 1,
}
compare_list = [1, 2, 3]
factor = 10
# safeValue
assert exchange.safe_value(input_dict, 'i') == 1
assert exchange.safe_value(input_dict, 'f') == 0.123
assert exchange.safe_value(input_dict, 'bool')
assert equals(exchange.safe_value(input_dict, 'list'), compare_list)
dict_object = exchange.safe_value(input_dict, 'dict')
assert equals(dict_object, compare_dict)
assert exchange.safe_value(input_dict, 'str') == 'heLlo'
assert exchange.safe_value(input_dict, 'strNumber') == '3'
assert exchange.safe_value(input_list, 0) == 'Hi'
# safeValue2
assert exchange.safe_value_2(input_dict, 'a', 'i') == 1
assert exchange.safe_value_2(input_dict, 'a', 'f') == 0.123
assert exchange.safe_value_2(input_dict, 'a', 'bool')
assert equals(exchange.safe_value_2(input_dict, 'a', 'list'), compare_list)
dict_object = exchange.safe_value_2(input_dict, 'a', 'dict')
assert equals(dict_object, compare_dict)
assert exchange.safe_value_2(input_dict, 'a', 'str') == 'heLlo'
assert exchange.safe_value_2(input_dict, 'a', 'strNumber') == '3'
assert exchange.safe_value_2(input_list, 2, 0) == 'Hi'
# safeValueN
assert exchange.safe_value_n(input_dict, ['a', 'b', 'i']) == 1
assert exchange.safe_value_n(input_dict, ['a', 'b', 'f']) == 0.123
assert exchange.safe_value_n(input_dict, ['a', 'b', 'bool'])
assert equals(exchange.safe_value_n(input_dict, ['a', 'b', 'list']), compare_list)
dict_object = exchange.safe_value_n(input_dict, ['a', 'b', 'dict'])
assert equals(dict_object, compare_dict)
assert exchange.safe_value_n(input_dict, ['a', 'b', 'str']) == 'heLlo'
assert exchange.safe_value_n(input_dict, ['a', 'b', 'strNumber']) == '3'
assert exchange.safe_value_n(input_list, [3, 2, 0]) == 'Hi'
# safeDict
dict_object = exchange.safe_dict(input_dict, 'dict')
assert equals(dict_object, compare_dict)
list_object = exchange.safe_dict(input_dict, 'list')
assert list_object is None
assert exchange.safe_dict(input_list, 1) is None
# safeDict2
dict_object = exchange.safe_dict_2(input_dict, 'a', 'dict')
assert equals(dict_object, compare_dict)
list_object = exchange.safe_dict_2(input_dict, 'a', 'list')
assert list_object is None
# @ts-expect-error
assert exchange.safe_dict_2(input_list, 2, 1) is None
# safeDictN
dict_object = exchange.safe_dict_n(input_dict, ['a', 'b', 'dict'])
assert equals(dict_object, compare_dict)
list_object = exchange.safe_dict_n(input_dict, ['a', 'b', 'list'])
assert list_object is None
assert exchange.safe_dict_n(input_list, [3, 2, 1]) is None
# safeList
list_object = exchange.safe_list(input_dict, 'list')
assert equals(dict_object, compare_dict)
assert exchange.safe_list(input_dict, 'dict') is None
assert exchange.safe_list(input_list, 1) is None
# safeList2
list_object = exchange.safe_list_2(input_dict, 'a', 'list')
assert equals(dict_object, compare_dict)
assert exchange.safe_list_2(input_dict, 'a', 'dict') is None
# @ts-expect-error
assert exchange.safe_list_2(input_list, 2, 1) is None
# safeListN
list_object = exchange.safe_list_n(input_dict, ['a', 'b', 'list'])
assert equals(dict_object, compare_dict)
assert exchange.safe_list_n(input_dict, ['a', 'b', 'dict']) is None
assert exchange.safe_list_n(input_list, [3, 2, 1]) is None
# safeString
assert exchange.safe_string(input_dict, 'i') == '1'
assert exchange.safe_string(input_dict, 'f') == '0.123'
# assert (exchange.safeString (inputDict, 'bool') === 'true'); returns True in python and 'true' in js
assert exchange.safe_string(input_dict, 'str') == 'heLlo'
assert exchange.safe_string(input_dict, 'strNumber') == '3'
assert exchange.safe_string(input_list, 0) == 'Hi'
# safeString2
assert exchange.safe_string_2(input_dict, 'a', 'i') == '1'
assert exchange.safe_string_2(input_dict, 'a', 'f') == '0.123'
assert exchange.safe_string_2(input_dict, 'a', 'str') == 'heLlo'
assert exchange.safe_string_2(input_dict, 'a', 'strNumber') == '3'
assert exchange.safe_string_2(input_list, 2, 0) == 'Hi'
# safeStringN
assert exchange.safe_string_n(input_dict, ['a', 'b', 'i']) == '1'
assert exchange.safe_string_n(input_dict, ['a', 'b', 'f']) == '0.123'
assert exchange.safe_string_n(input_dict, ['a', 'b', 'str']) == 'heLlo'
assert exchange.safe_string_n(input_dict, ['a', 'b', 'strNumber']) == '3'
assert exchange.safe_string_n(input_list, [3, 2, 0]) == 'Hi'
# safeStringLower
assert exchange.safe_string_lower(input_dict, 'i') == '1'
assert exchange.safe_string_lower(input_dict, 'f') == '0.123'
assert exchange.safe_string_lower(input_dict, 'str') == 'hello'
assert exchange.safe_string_lower(input_dict, 'strNumber') == '3'
assert exchange.safe_string_lower(input_list, 0) == 'hi'
# safeStringLower2
assert exchange.safe_string_lower_2(input_dict, 'a', 'i') == '1'
assert exchange.safe_string_lower_2(input_dict, 'a', 'f') == '0.123'
assert exchange.safe_string_lower_2(input_dict, 'a', 'str') == 'hello'
assert exchange.safe_string_lower_2(input_dict, 'a', 'strNumber') == '3'
assert exchange.safe_string_lower_2(input_list, 2, 0) == 'hi'
# safeStringLowerN
assert exchange.safe_string_lower_n(input_dict, ['a', 'b', 'i']) == '1'
assert exchange.safe_string_lower_n(input_dict, ['a', 'b', 'f']) == '0.123'
assert exchange.safe_string_lower_n(input_dict, ['a', 'b', 'str']) == 'hello'
assert exchange.safe_string_lower_n(input_dict, ['a', 'b', 'strNumber']) == '3'
assert exchange.safe_string_lower_n(input_list, [3, 2, 0]) == 'hi'
# safeStringUpper
assert exchange.safe_string_upper(input_dict, 'i') == '1'
assert exchange.safe_string_upper(input_dict, 'f') == '0.123'
assert exchange.safe_string_upper(input_dict, 'str') == 'HELLO'
assert exchange.safe_string_upper(input_dict, 'strNumber') == '3'
assert exchange.safe_string_upper(input_list, 0) == 'HI'
# safeStringUpper2
assert exchange.safe_string_upper_2(input_dict, 'a', 'i') == '1'
assert exchange.safe_string_upper_2(input_dict, 'a', 'f') == '0.123'
assert exchange.safe_string_upper_2(input_dict, 'a', 'str') == 'HELLO'
assert exchange.safe_string_upper_2(input_dict, 'a', 'strNumber') == '3'
assert exchange.safe_string_upper_2(input_list, 2, 0) == 'HI'
# safeStringUpperN
assert exchange.safe_string_upper_n(input_dict, ['a', 'b', 'i']) == '1'
assert exchange.safe_string_upper_n(input_dict, ['a', 'b', 'f']) == '0.123'
assert exchange.safe_string_upper_n(input_dict, ['a', 'b', 'str']) == 'HELLO'
assert exchange.safe_string_upper_n(input_dict, ['a', 'b', 'strNumber']) == '3'
assert exchange.safe_string_upper_n(input_list, [3, 2, 0]) == 'HI'
# safeInteger
assert exchange.safe_integer(input_dict, 'i') == 1
assert exchange.safe_integer(input_dict, 'f') == 0
assert exchange.safe_integer(input_dict, 'strNumber') == 3
assert exchange.safe_integer(input_list, 1) == 2
# safeInteger2
assert exchange.safe_integer_2(input_dict, 'a', 'i') == 1
assert exchange.safe_integer_2(input_dict, 'a', 'f') == 0
assert exchange.safe_integer_2(input_dict, 'a', 'strNumber') == 3
assert exchange.safe_integer_2(input_list, 2, 1) == 2
# safeIntegerN
assert exchange.safe_integer_n(input_dict, ['a', 'b', 'i']) == 1
assert exchange.safe_integer_n(input_dict, ['a', 'b', 'f']) == 0
assert exchange.safe_integer_n(input_dict, ['a', 'b', 'strNumber']) == 3
assert exchange.safe_integer_n(input_list, [3, 2, 1]) == 2
# safeIntegerOmitZero
assert exchange.safe_integer_omit_zero(input_dict, 'i') == 1
assert exchange.safe_integer_omit_zero(input_dict, 'f') is None
assert exchange.safe_integer_omit_zero(input_dict, 'strNumber') == 3
assert exchange.safe_integer_omit_zero(input_list, 1) == 2
# safeIntegerProduct
assert exchange.safe_integer_product(input_dict, 'i', factor) == 10
assert exchange.safe_integer_product(input_dict, 'f', factor) == 1 # NB the result is 1
assert exchange.safe_integer_product(input_dict, 'strNumber', factor) == 30
assert exchange.safe_integer_product(input_list, 1, factor) == 20
# safeIntegerProduct2
assert exchange.safe_integer_product_2(input_dict, 'a', 'i', factor) == 10
assert exchange.safe_integer_product_2(input_dict, 'a', 'f', factor) == 1 # NB the result is 1
assert exchange.safe_integer_product_2(input_dict, 'a', 'strNumber', factor) == 30
assert exchange.safe_integer_product_2(input_list, 2, 1, factor) == 20
# safeIntegerProductN
assert exchange.safe_integer_product_n(input_dict, ['a', 'b', 'i'], factor) == 10
assert exchange.safe_integer_product_n(input_dict, ['a', 'b', 'f'], factor) == 1 # NB the result is 1
assert exchange.safe_integer_product_n(input_dict, ['a', 'b', 'strNumber'], factor) == 30
assert exchange.safe_integer_product_n(input_list, [3, 2, 1], factor) == 20
# safeTimestamp
assert exchange.safe_timestamp(input_dict, 'i') == 1000
assert exchange.safe_timestamp(input_dict, 'f') == 123
assert exchange.safe_timestamp(input_dict, 'strNumber') == 3000
assert exchange.safe_timestamp(input_list, 1) == 2000
# safeTimestamp2
assert exchange.safe_timestamp_2(input_dict, 'a', 'i') == 1000
assert exchange.safe_timestamp_2(input_dict, 'a', 'f') == 123
assert exchange.safe_timestamp_2(input_dict, 'a', 'strNumber') == 3000
assert exchange.safe_timestamp_2(input_list, 2, 1) == 2000
# safeTimestampN
assert exchange.safe_timestamp_n(input_dict, ['a', 'b', 'i']) == 1000
assert exchange.safe_timestamp_n(input_dict, ['a', 'b', 'f']) == 123
assert exchange.safe_timestamp_n(input_dict, ['a', 'b', 'strNumber']) == 3000
assert exchange.safe_timestamp_n(input_list, [3, 2, 1]) == 2000
# safeFloat
# @ts-expect-error
assert exchange.safe_float(input_dict, 'i') == float(1)
assert exchange.safe_float(input_dict, 'f') == 0.123
# @ts-expect-error
assert exchange.safe_float(input_dict, 'strNumber') == float(3)
# @ts-expect-error
assert exchange.safe_float(input_list, 1) == float(2)
# safeFloat2
# @ts-expect-error
assert exchange.safe_float_2(input_dict, 'a', 'i') == float(1)
assert exchange.safe_float_2(input_dict, 'a', 'f') == 0.123
# @ts-expect-error
assert exchange.safe_float_2(input_dict, 'a', 'strNumber') == float(3)
# @ts-expect-error
assert exchange.safe_float_2(input_list, 2, 1) == float(2)
# safeFloatN
# @ts-expect-error
assert exchange.safe_float_n(input_dict, ['a', 'b', 'i']) == float(1)
assert exchange.safe_float_n(input_dict, ['a', 'b', 'f']) == 0.123
# @ts-expect-error
assert exchange.safe_float_n(input_dict, ['a', 'b', 'strNumber']) == float(3)
# @ts-expect-error
assert exchange.safe_float_n(input_list, [3, 2, 1]) == float(2)
# safeNumber
assert exchange.safe_number(input_dict, 'i') == exchange.parse_number(1)
assert exchange.safe_number(input_dict, 'f') == exchange.parse_number(0.123)
assert exchange.safe_number(input_dict, 'strNumber') == exchange.parse_number(3)
assert exchange.safe_number(input_list, 1) == exchange.parse_number(2)
assert exchange.safe_number(input_list, 'bool') is None
assert exchange.safe_number(input_list, 'list') is None
assert exchange.safe_number(input_list, 'dict') is None
assert exchange.safe_number(input_list, 'str') is None
# safeNumber2
assert exchange.safe_number_2(input_dict, 'a', 'i') == exchange.parse_number(1)
assert exchange.safe_number_2(input_dict, 'a', 'f') == exchange.parse_number(0.123)
assert exchange.safe_number_2(input_dict, 'a', 'strNumber') == exchange.parse_number(3)
assert exchange.safe_number_2(input_list, 2, 1) == exchange.parse_number(2)
# safeNumberN
assert exchange.safe_number_n(input_dict, ['a', 'b', 'i']) == exchange.parse_number(1)
assert exchange.safe_number_n(input_dict, ['a', 'b', 'f']) == exchange.parse_number(0.123)
assert exchange.safe_number_n(input_dict, ['a', 'b', 'strNumber']) == exchange.parse_number(3)
assert exchange.safe_number_n(input_list, [3, 2, 1]) == exchange.parse_number(2)
# safeBool
assert exchange.safe_bool(input_dict, 'bool')
assert exchange.safe_bool(input_list, 1) is None
# safeBool2
assert exchange.safe_bool_2(input_dict, 'a', 'bool')
assert exchange.safe_bool_2(input_list, 2, 1) is None
# safeBoolN
assert exchange.safe_bool_n(input_dict, ['a', 'b', 'bool'])
assert exchange.safe_bool_n(input_list, [3, 2, 1]) is None
# safeNumberOmitZero
assert exchange.safe_number_omit_zero(input_dict, 'zeroNumeric') is None
assert exchange.safe_number_omit_zero(input_dict, 'zeroString') is None
assert exchange.safe_number_omit_zero(input_dict, 'undefined') is None
assert exchange.safe_number_omit_zero(input_dict, 'emptyString') is None
assert exchange.safe_number_omit_zero(input_dict, 'floatNumeric') is not None
assert exchange.safe_number_omit_zero(input_dict, 'floatString') is not None