idea85-blockenergy-mesh-ver.../tests/test_primitives.py

47 lines
1.5 KiB
Python

import pytest
from idea85_blockenergy_mesh_verifiable.primitives import LocalProblem
from idea85_blockenergy_mesh_verifiable.adapters import SubstationMeterAdapter, DerAggregatorAdapter
from idea85_blockenergy_mesh_verifiable.proofs import verify_proof
from datetime import datetime
def sample_meter_payload():
return {
"node_id": "substation-1",
"timestamp": datetime.utcnow().isoformat(),
"horizon_minutes": 60,
"net_load_kw": [10.0, 12.0, 11.0, 9.0],
"capacity_kw": 12.0,
}
def test_substation_adapter_plan_and_proof():
adapter = SubstationMeterAdapter("submeter")
payload = sample_meter_payload()
out = adapter.produce_plan_and_proof(payload)
assert "plan_delta" in out and "proof" in out
plan_delta = out["plan_delta"]
proof = out["proof"]
# Plan delta is a PlanDelta model
assert plan_delta.node_id == payload["node_id"]
# Proof verifies against original LocalProblem
lp = adapter.to_local_problem(payload)
assert verify_proof(lp.dict(), proof)
def test_der_adapter_plan_and_proof():
adapter = DerAggregatorAdapter("deragg")
payload = {
"id": "der-1",
"ts": datetime.utcnow().isoformat(),
"horizon": 60,
"profile": [2.0, 3.0, 5.0, 1.0],
"cap": 6.0,
}
out = adapter.produce_plan_and_proof(payload)
assert "plan_delta" in out and "proof" in out
lp = adapter.to_local_problem(payload)
assert verify_proof(lp.dict(), out["proof"]) is True