32 lines
1.2 KiB
Python
32 lines
1.2 KiB
Python
from edgemind.cli import append_audit, list_audit, verify_audit, merge_deltas, evaluate_contracts
|
|
|
|
|
|
def test_audit_cli_in_memory():
|
|
# Using in-memory DB path ensures isolation
|
|
db_path = ":memory:"
|
|
id1 = append_audit(db_path, "cliAgent", "init", {"v": 1})
|
|
id2 = append_audit(db_path, "cliAgent", "step", {"v": 2})
|
|
entries = list_audit(db_path)
|
|
assert len(entries) == 2
|
|
assert entries[0]["id"] == id1
|
|
assert entries[1]["id"] == id2
|
|
assert verify_audit(db_path) is True
|
|
|
|
|
|
def test_merge_deltas_cli():
|
|
d1 = {"id": "d1", "patches": [{"op_id": "x", "op": "set"}], "timestamp": "2020-01-01T00:00:00"}
|
|
d2 = {"id": "d2", "patches": [{"op_id": "y", "op": "set"}], "timestamp": "2020-01-01T00:00:01"}
|
|
merged = merge_deltas([d2, d1])
|
|
assert len(merged["patches"]) == 2
|
|
|
|
|
|
def test_evaluate_contracts_cli():
|
|
contracts = {
|
|
"c1": {"predicate": "battery > 10", "fail_safe": "halt"},
|
|
"c2": {"predicate": "temp < 100", "fail_safe": "safe-mode"},
|
|
}
|
|
state = {"battery": 50, "temp": 20}
|
|
results = evaluate_contracts(contracts, state)
|
|
# ensure both contracts passed
|
|
assert all(passed for (_cid, passed, _fs) in results)
|