marketcompiler-verifiable-d.../tests/test_core.py

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