34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
import os
|
|
import sys
|
|
|
|
# Ensure tests can import the src package layout when running from repo root
|
|
ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
|
|
SRC = os.path.join(ROOT, "src")
|
|
sys.path.insert(0, SRC)
|
|
|
|
from idea168_crisispulse_federated_resource.core.ledger import LocalLedger
|
|
|
|
|
|
def test_ledger_add_and_snapshot_and_merkle():
|
|
ledger = LocalLedger()
|
|
ledger.add_entry("camp1", {"resources": {"energy": 100}})
|
|
ledger.add_entry("camp2", {"resources": {"water": 200}})
|
|
snap = ledger.snapshot()
|
|
assert "camp1" in snap and "camp2" in snap
|
|
root = ledger.merkle_root()
|
|
assert isinstance(root, str) and len(root) == 64
|
|
|
|
def test_ledger_apply_delta():
|
|
ledger = LocalLedger()
|
|
ledger.add_entry("camp1", {"resources": {"energy": 50}})
|
|
delta = {
|
|
"entry_id": "camp1",
|
|
"changes": {"resources": {"energy": 75}},
|
|
"tags": ["test"],
|
|
"signature": "signature-placeholder",
|
|
}
|
|
ledger.apply_delta(delta)
|
|
entry = ledger.get_entry("camp1")
|
|
assert entry is not None
|
|
assert entry["data"]["resources"]["energy"] == 75
|