49 lines
1.1 KiB
Python
49 lines
1.1 KiB
Python
|
|
import sys
|
||
|
|
from pathlib import Path
|
||
|
|
import pytest
|
||
|
|
|
||
|
|
# Ensure project root is on sys.path for direct module imports
|
||
|
|
sys.path.append(str(Path(__file__).resolve().parents[1]))
|
||
|
|
|
||
|
|
from storage import Storage, OrderbookLevel
|
||
|
|
|
||
|
|
|
||
|
|
def test_parse_orderbook_side_happy_path():
|
||
|
|
storage = Storage("BTC-USDT")
|
||
|
|
text = str([
|
||
|
|
(100.0, 1.5, 0, 2),
|
||
|
|
(101.0, 2.25, 1, 3),
|
||
|
|
])
|
||
|
|
|
||
|
|
side = {}
|
||
|
|
storage._parse_orderbook_side(text, side)
|
||
|
|
|
||
|
|
assert 100.0 in side and 101.0 in side
|
||
|
|
level_100 = side[100.0]
|
||
|
|
level_101 = side[101.0]
|
||
|
|
|
||
|
|
assert isinstance(level_100, OrderbookLevel)
|
||
|
|
assert level_100.price == 100.0
|
||
|
|
assert level_100.size == 1.5
|
||
|
|
assert level_100.liquidation_count == 0
|
||
|
|
assert level_100.order_count == 2
|
||
|
|
|
||
|
|
assert level_101.size == 2.25
|
||
|
|
assert level_101.liquidation_count == 1
|
||
|
|
assert level_101.order_count == 3
|
||
|
|
|
||
|
|
|
||
|
|
def test_parse_orderbook_side_ignores_zero_size():
|
||
|
|
storage = Storage("BTC-USDT")
|
||
|
|
text = str([
|
||
|
|
(100.0, 0.0, 0, 0),
|
||
|
|
(101.0, 1.0, 0, 1),
|
||
|
|
])
|
||
|
|
|
||
|
|
side = {}
|
||
|
|
storage._parse_orderbook_side(text, side)
|
||
|
|
|
||
|
|
assert 100.0 not in side
|
||
|
|
assert 101.0 in side
|
||
|
|
|