edge-latency-aware-cross-ve.../tests/test_dsl.py

41 lines
1.4 KiB
Python

import json
from elac_plan.core import LocalProblem, SharedVariables, PlanDelta, DualVariables
from elac_plan.dsl import to_dsl_object, to_dsl_morphisms, to_dsl_plan, to_dsl_dual
def test_dsl_object_translation():
lp = LocalProblem(
id="lp1",
asset="AAPL",
venue="NYSE",
objective="minimize_spread",
constraints={"max_volume": 1000},
price_target=150.0,
tolerance=0.5,
)
dsl = to_dsl_object(lp)
assert dsl.id == lp.id
assert dsl.asset == lp.asset
assert dsl.price_target == lp.price_target
def test_dsl_morphisms_translation():
sv = SharedVariables(variables={"mid_price": 150.0}, version=1, contract_id="c1")
dsl = to_dsl_morphisms(sv)
assert dsl.contract_id == sv.contract_id
assert dsl.version == sv.version
assert dsl.variables["mid_price"] == 150.0
def test_dsl_plan_and_dual_translation():
delta = PlanDelta(delta={"action": "noop"}, timestamp="2024-01-01T00:00:00Z", author="tester", contract_id="c1", privacy_budget=0.0)
dsl_plan = to_dsl_plan(delta)
assert dsl_plan.contract_id == delta.contract_id
assert dsl_plan.delta["action"] == "noop"
dual = DualVariables(shadow_prices={"AAPL": 0.1}, version=1)
dsl_dual = to_dsl_dual(dual)
assert dsl_dual.contract_id == "" # default, not set in DualVariables dataclass; ok as placeholder
assert dsl_dual.shadow_prices["AAPL"] == 0.1