from deltatrace.adapters import FIXFeedAdapter, SandboxExchangeAdapter from deltatrace.event_graph import EventType def test_fix_adapter_parses_tick_and_order_and_fill(): fix = FIXFeedAdapter() msg = {"35": "W", "55": "SYM", "bid": "10", "ask": "11", "44": "10.5", "38": "100"} events = fix.ingest(msg) assert any(e.event_type == EventType.MD_TICK for e in events) o = {"35": "D", "55": "SYM", "54": "1", "44": "10.5", "38": "50"} events = fix.ingest(o) assert any(e.event_type == EventType.ORDER for e in events) er = {"35": "8", "55": "SYM", "54": "1", "44": "10.5", "38": "50", "150": "F"} events = fix.ingest(er) assert any(e.event_type == EventType.FILL for e in events) def test_sandbox_exchange_order_and_ticks(): s = SandboxExchangeAdapter(fill_rate=1.0, latency_ms=0) ticks = s.generate_ticks("TST", 3) assert len(ticks) == 3 order_msgs = s.ingest({"type": "order", "symbol": "TST", "qty": 10, "price": 1.0}) assert any(e.event_type.name == "ORDER" for e in order_msgs) # with fill_rate=1.0 we should also get a fill event assert any(e.event_type.name == "FILL" for e in order_msgs)