39 lines
1.3 KiB
Python
39 lines
1.3 KiB
Python
import json
|
|
import os
|
|
import sys
|
|
import pathlib
|
|
# Ensure the repository root is on sys.path for pytest imports
|
|
ROOT = pathlib.Path(__file__).resolve().parents[1]
|
|
if str(ROOT) not in sys.path:
|
|
sys.path.insert(0, str(ROOT))
|
|
|
|
from marketcompiler_verifiable_dsl_edge_compi.core import LocalProblem, PlanDelta, AuditLog
|
|
from marketcompiler_verifiable_dsl_edge_compi.signer import Signer
|
|
from marketcompiler_verifiable_dsl_edge_compi.backtest import Backtester
|
|
|
|
|
|
def test_local_problem_serialization():
|
|
lp = LocalProblem(id="lp-001", assets=["AAPL", "MSFT"], objectives={"return": 0.1}, constraints={"max_drawdown": 0.2})
|
|
s = lp.to_json()
|
|
lp2 = LocalProblem.from_json(s)
|
|
assert lp2.id == lp.id
|
|
assert lp2.assets == lp.assets
|
|
|
|
|
|
def test_plan_delta_signing_and_json_roundtrip():
|
|
delta = PlanDelta(delta={"step": "init"}, author="tester", contract_id="c1", version=1)
|
|
payload = delta.to_json()
|
|
sig = Signer.sign(payload)
|
|
assert Signer.verify(payload, sig)
|
|
|
|
# Roundtrip through JSON keeps signature validity conceptually
|
|
delta2 = PlanDelta.from_json(payload)
|
|
assert delta2.version == delta.version
|
|
|
|
|
|
def test_backtester_runs():
|
|
lp = LocalProblem(id="lp-002", assets=["AAPL", "MSFT"], objectives={"return": 0.08}, constraints={"liquidity": 0.5})
|
|
res = Backtester.run(lp)
|
|
assert isinstance(res, dict)
|
|
assert "score" in res
|