import time import os import sys BASE = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) if BASE not in sys.path: sys.path.insert(0, BASE) from crossvenue_arbx.core import LocalArbProblem, SharedSignals, PlanDelta def test_local_arb_problem_serialization(): p = LocalArbProblem( id="v1-p1", venue="VenueA", assets=["AAPL", "MSFT"], target_misprice=0.001, max_exposure=1000.0, latency_budget=0.1, ) d = p.to_dict() assert d["id"] == "v1-p1" assert d["venue"] == "VenueA" assert d["assets"] == ["AAPL", "MSFT"] def test_shared_signals_merge_basic(): s1 = SharedSignals(version=1, price_delta_by_asset={"AAPL": 0.001, "MSFT": -0.0003}) s2 = SharedSignals(version=2, price_delta_by_asset={"AAPL": 0.0008, "MSFT": -0.0005}) merged = s1.merge(s2) assert merged.version >= 2 assert "AAPL" in merged.price_delta_by_asset assert "MSFT" in merged.price_delta_by_asset