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

115 lines
3.7 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
from ccxt.test.exchange.base import test_shared_methods # noqa E402
def helper_test_init_throttler():
exchange = ccxt.Exchange({
'id': 'sampleexchange',
'rateLimit': 10.8,
})
# todo: assert (exchange.MAX_VALUE !== undefined);
token_bucket = exchange.get_property(exchange, 'tokenBucket') # trick for uncamelcase transpilation
if token_bucket is None:
token_bucket = exchange.get_property(exchange, 'TokenBucket')
assert token_bucket is not None
assert 'GO_SKIP_START'
rate_limit = exchange.get_property(exchange, 'rateLimit')
assert rate_limit == 10.8
assert token_bucket['delay'] == 0.001
assert token_bucket['refillRate'] == 1 / rate_limit
assert 'GO_SKIP_END'
# fix decimal/integer issues across langs
assert exchange.in_array(token_bucket['capacity'], [1, 1])
cost = exchange.parse_to_numeric(exchange.safe_string_2(token_bucket, 'cost', 'defaultCost')) # python sync, todo fix
assert exchange.in_array(cost, [1, 1])
assert not ('maxCapacity' in token_bucket) or exchange.in_array(token_bucket['maxCapacity'], [1000, 1000])
def helper_test_sandbox_state(exchange, should_be_enabled=True):
assert exchange.urls is not None
assert 'test' in exchange.urls
assert 'GO_SKIP_START'
is_sandbox_mode_enabled = exchange.get_property(exchange, 'isSandboxModeEnabled')
if should_be_enabled:
assert is_sandbox_mode_enabled
assert exchange.urls['api']['public'] == 'https://example.org'
assert exchange.urls['apiBackup']['public'] == 'https://example.com'
else:
assert not is_sandbox_mode_enabled
assert exchange.urls['api']['public'] == 'https://example.com'
assert exchange.urls['test']['public'] == 'https://example.org'
assert 'GO_SKIP_END'
def helper_test_init_sandbox():
# todo: sandbox for real exchanges
opts = {
'id': 'sampleexchange',
'options': {
'sandbox': False,
},
'urls': {
'api': {
'public': 'https://example.com',
},
'test': {
'public': 'https://example.org',
},
},
}
#
# CASE A: when sandbox is not enabled
#
exchange3 = ccxt.Exchange(opts)
helper_test_sandbox_state(exchange3, False)
exchange3.set_sandbox_mode(True)
helper_test_sandbox_state(exchange3, True)
#
# CASE B: when sandbox is enabled
#
opts['options']['sandbox'] = True
exchange4 = ccxt.Exchange(opts)
helper_test_sandbox_state(exchange4, True)
exchange4.set_sandbox_mode(False)
helper_test_sandbox_state(exchange4, False)
def helper_test_init_market():
# ############# markets ############# #
sample_market = {
'id': 'BtcUsd',
'symbol': 'BTC/USD',
'base': 'BTC',
'quote': 'USD',
'baseId': 'Btc',
'quoteId': 'Usd',
'type': 'spot',
'spot': True,
}
exchange2 = ccxt.Exchange({
'id': 'sampleexchange',
'markets': {
'BTC/USD': sample_market,
},
})
assert exchange2.markets['BTC/USD'] is not None
def test_after_constructor():
helper_test_init_throttler()
helper_test_init_sandbox()
helper_test_init_market()