mirror of
https://github.com/Ichinga-Samuel/aiomql.git
synced 2026-08-24 09:18:07 +00:00
reorganize the library into three folders lib, contrib and core
Write unittests with pytest Make all functions and method signatures as keyword only arguments
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
import pytest
|
||||
|
||||
from aiomql.lib.symbol import Symbol
|
||||
from aiomql.lib.candle import Candles
|
||||
from aiomql.lib.ticks import Ticks
|
||||
|
||||
|
||||
class TestSymbol:
|
||||
@pytest.fixture(scope='class', autouse=True)
|
||||
async def btc(self):
|
||||
symbol = Symbol(name='BTCUSD')
|
||||
select = getattr(symbol, 'select', False)
|
||||
if select is False:
|
||||
await symbol.init()
|
||||
return symbol
|
||||
|
||||
async def test_symbol_attributes(self, btc):
|
||||
assert btc.name == 'BTCUSD'
|
||||
assert btc.select is True
|
||||
assert btc.tick is not None
|
||||
|
||||
async def test_volume(self, btc):
|
||||
volume = btc.volume_min - btc.volume_step
|
||||
success, volume = btc.check_volume(volume=volume)
|
||||
assert success is False
|
||||
volume = btc.volume_min + btc.volume_step * 2
|
||||
success, volume = btc.check_volume(volume=volume)
|
||||
assert success is True
|
||||
volume = btc.volume_min + btc.volume_step * 2.5
|
||||
volume = btc.round_off_volume(volume=volume, round_down=True)
|
||||
assert volume == btc.volume_min + btc.volume_step * 2
|
||||
|
||||
async def test_rates(self, btc):
|
||||
start = datetime(year=2023, month=10, day=5)
|
||||
end = start + timedelta(hours=9)
|
||||
rates_from = await btc.copy_rates_from(timeframe=btc.mt5.TIMEFRAME_H1, date_from=start, count=10)
|
||||
assert isinstance(rates_from, Candles)
|
||||
assert len(rates_from) == 10
|
||||
rates_from_pos = await btc.copy_rates_from_pos(timeframe=btc.mt5.TIMEFRAME_H1, count=10, start_position=0)
|
||||
assert isinstance(rates_from_pos, Candles)
|
||||
assert len(rates_from_pos) == 10
|
||||
rates_range = await btc.copy_rates_range(timeframe=btc.mt5.TIMEFRAME_H1, date_from=start, date_to=end)
|
||||
assert isinstance(rates_range, Candles)
|
||||
assert len(rates_range) == 10
|
||||
ticks_from = await btc.copy_ticks_from(date_from=start, count=10)
|
||||
assert isinstance(ticks_from, Ticks)
|
||||
assert len(ticks_from) == 10
|
||||
end = start + timedelta(seconds=20)
|
||||
ticks_from_pos = await btc.copy_ticks_range(date_from=start, date_to=end)
|
||||
assert isinstance(ticks_from_pos, Ticks)
|
||||
assert len(ticks_from_pos) >= 10
|
||||
Reference in New Issue
Block a user