idea159-arbsphere-federated.../tests/test_primitives.py

41 lines
1.3 KiB
Python

import json
import time
from arbsphere.primitives import LocalArbProblem, SharedSignals, PlanDelta, DualVariables, PrivacyBudget, AuditLog, TimeRounds, GoCRegistry
from arbsphere.energi_bridge import to_ir, from_ir
def test_local_arb_problem_json_roundtrip():
orig = LocalArbProblem(
venue_id="VENUE-1",
asset_pair=["A", "B"],
target_mispricing=0.5,
liquidity_budget=100000.0,
latency_budget_ms=10,
)
payload = orig.to_json()
as_json = json.dumps(payload)
back = LocalArbProblem.from_json(json.loads(as_json))
assert back == orig
def test_plan_delta_roundtrip_via_ir():
pd = PlanDelta(delta=[{"action": "buy", "leg": "A-B", "size": 100}], timestamp=time.time(), author="org1")
ir = to_ir(pd)
assert ir["contract_type"] == "PlanDelta"
restored = from_ir(ir)
assert isinstance(restored, PlanDelta)
assert restored.author == pd.author
def test_dual_variables_and_privacy_audit_roundtrip():
dv = DualVariables(venue_shadows={"VENUE-1": 0.1, "VENUE-2": 0.2})
pb = PrivacyBudget(total_budget=1000.0, spent=150.0)
al = AuditLog(entries=[{"event": "init", "ts": time.time()}])
for obj in (dv, pb, al):
ir = to_ir(obj)
assert isinstance(ir, dict)
restored = from_ir(ir)
assert restored is not None