from mercuriusmesh.simulator import DeterministicSimulator from mercuriusmesh.adapters import ToyVenueAdapter from mercuriusmesh.contracts import OrderEvent def test_deterministic_replay(): sim = DeterministicSimulator() a = ToyVenueAdapter("V1", initial_bid=100.0, initial_ask=100.5) b = ToyVenueAdapter("V2", initial_bid=99.8, initial_ask=100.3) sim.add_adapter(a) sim.add_adapter(b) o1 = OrderEvent(order_id="o1", venue_id="V1", asset="TEST/USD", side="buy", price=None, size=1) o2 = OrderEvent(order_id="o2", venue_id="V2", asset="TEST/USD", side="sell", price=None, size=2) sim.submit_order(o1) sim.submit_order(o2) # snapshot state s1 = sim.compute_shared_signals() # replay and compare sim.replay() s2 = sim.compute_shared_signals() assert s1.mid_price == s2.mid_price assert s1.liquidity == s2.liquidity