73 lines
2.6 KiB
Python
73 lines
2.6 KiB
Python
from __future__ import annotations
|
|
|
|
from idea153_aidmesh_mobile_first import ContractScriptCompiler, PlanDelta, PlanLedger, merge_deltas, replay_ledger, solve_program
|
|
from idea153_aidmesh_mobile_first.adapters import InventoryItem, RouteWaypoint, inventory_to_contract, route_to_contract
|
|
|
|
|
|
def test_compiler_and_solver_select_high_priority_tasks():
|
|
source = """
|
|
site "field-clinic-7"
|
|
capacity meds 10
|
|
capacity water 6
|
|
task triage priority 10 demand meds=4, water=2
|
|
task shelter priority 4 demand water=4
|
|
"""
|
|
module = ContractScriptCompiler().compile(source)
|
|
assert module.digest
|
|
result = solve_program(module.program)
|
|
assert [action.task for action in result.selected_tasks] == ["triage", "shelter"]
|
|
assert result.remaining_capacity == {"meds": 6, "water": 0}
|
|
|
|
|
|
def test_plan_deltas_sign_merge_and_replay():
|
|
secret = "shared-key"
|
|
delta_a = PlanDelta(
|
|
device_id="truck-1",
|
|
sequence=1,
|
|
parents=[],
|
|
changes={"inventory": {"meds": 12}},
|
|
summary="restocked meds",
|
|
timestamp="2026-04-26T20:00:00Z",
|
|
).sign(secret)
|
|
delta_b = PlanDelta(
|
|
device_id="drone-2",
|
|
sequence=2,
|
|
parents=[delta_a.signature],
|
|
changes={"routes": {"drone-2": ["clinic", "depot"]}},
|
|
summary="published route",
|
|
timestamp="2026-04-26T20:01:00Z",
|
|
).sign(secret)
|
|
|
|
merged = merge_deltas({}, [delta_b, delta_a], secret)
|
|
assert merged["inventory"]["meds"] == 12
|
|
assert merged["routes"]["drone-2"] == ["clinic", "depot"]
|
|
|
|
replay = replay_ledger({}, [delta_a, delta_b], secret)
|
|
assert replay.state["inventory"]["meds"] == 12
|
|
assert replay.applied == ["truck-1:1", "drone-2:2"]
|
|
|
|
|
|
def test_adapters_generate_valid_contracts():
|
|
inventory_program = inventory_to_contract(
|
|
"warehouse-1",
|
|
[InventoryItem(name="bandages", quantity=20, criticality=8), InventoryItem(name="saline", quantity=12, criticality=6)],
|
|
)
|
|
route_program = route_to_contract(
|
|
"airstrip-a",
|
|
(0.0, 0.0),
|
|
[RouteWaypoint(name="north-hill", x=2.0, y=3.0, priority=9), RouteWaypoint(name="river-base", x=1.0, y=1.0, priority=4)],
|
|
)
|
|
assert solve_program(inventory_program).selected_tasks
|
|
assert solve_program(route_program).selected_tasks
|
|
ledger = PlanLedger(secret="shared-key")
|
|
delta = PlanDelta(
|
|
device_id="inventory-1",
|
|
sequence=1,
|
|
parents=[],
|
|
changes={"inventory": {"bandages": 20}},
|
|
summary="inventory snapshot",
|
|
timestamp="2026-04-26T20:02:00Z",
|
|
).sign("shared-key")
|
|
ledger.append(delta)
|
|
assert ledger.state["inventory"]["bandages"] == 20
|