import os import sys root = os.path.dirname(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 -*- from ccxt.test.exchange.base import test_ticker # noqa E402 from ccxt.test.exchange.base import test_shared_methods # noqa E402 def test_fetch_tickers(exchange, skipped_properties, symbol): without_symbol = test_fetch_tickers_helper(exchange, skipped_properties, None) with_symbol = test_fetch_tickers_helper(exchange, skipped_properties, [symbol]) results = asyncio.gather(*[without_symbol, with_symbol]) test_fetch_tickers_amounts(exchange, skipped_properties, results[0]) return results def test_fetch_tickers_helper(exchange, skipped_properties, arg_symbols, arg_params={}): method = 'fetchTickers' response = exchange.fetch_tickers(arg_symbols, arg_params) assert isinstance(response, dict), exchange.id + ' ' + method + ' ' + exchange.json(arg_symbols) + ' must return an object. ' + exchange.json(response) values = list(response.values()) checked_symbol = None if arg_symbols is not None and len(arg_symbols) == 1: checked_symbol = arg_symbols[0] test_shared_methods.assert_non_emtpy_array(exchange, skipped_properties, method, values, checked_symbol) for i in range(0, len(values)): # todo: symbol check here ticker = values[i] test_ticker(exchange, skipped_properties, method, ticker, checked_symbol) return response def test_fetch_tickers_amounts(exchange, skipped_properties, tickers): tickers_values = list(tickers.values()) if not ('checkActiveSymbols' in skipped_properties): # # ensure all "active" symbols have tickers # non_inactive_markets = test_shared_methods.get_active_markets(exchange) not_inactive_symbols_length = len(non_inactive_markets) obtained_tickers_length = len(tickers_values) min_ratio = 0.99 # 1.0 - 0.01 = 0.99, hardcoded to avoid C# transpiler type casting issues assert obtained_tickers_length >= not_inactive_symbols_length * min_ratio, exchange.id + ' ' + 'fetchTickers' + ' must return tickers for all active markets. but returned: ' + str(obtained_tickers_length) + ' tickers, ' + str(not_inactive_symbols_length) + ' active markets' # # ensure tickers length is less than markets length # all_markets = exchange.markets all_markets_length = len(list(all_markets.keys())) assert obtained_tickers_length <= all_markets_length, exchange.id + ' ' + 'fetchTickers' + ' must return <= than all markets, but returned: ' + str(obtained_tickers_length) + ' tickers, ' + str(all_markets_length) + ' markets'