40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
import pytest
|
|
from datetime import datetime
|
|
|
|
from mercurymesh.contracts import MarketSignal, AggregatedSignal, PlanDelta, PrivacyBudget, AuditLog, ProvenanceProof
|
|
|
|
|
|
def test_market_signal_roundtrip():
|
|
ms = MarketSignal(
|
|
venue_id="venue-a",
|
|
symbol="ABC",
|
|
timestamp=datetime.utcnow(),
|
|
features={"liquidity_proxy": 1.0, "order_flow_intensity": 0.5},
|
|
)
|
|
assert ms.venue_id == "venue-a"
|
|
assert ms.symbol == "ABC"
|
|
assert isinstance(ms.features, dict)
|
|
|
|
|
|
def test_aggregated_signal_schema():
|
|
agg = AggregatedSignal(
|
|
venues=["venue-a", "venue-b"],
|
|
feature_vector={"liquidity_proxy": 0.8, "volatility_proxy": 0.2},
|
|
privacy_budget_used=0.1,
|
|
nonce="nonce-123",
|
|
merkle_proof=None,
|
|
)
|
|
assert "liquidity_proxy" in agg.feature_vector
|
|
|
|
|
|
def test_provenance_and_audit():
|
|
prov = ProvenanceProof(
|
|
venue_id="venue-a",
|
|
timestamp=datetime.utcnow(),
|
|
merkle_root="abc123",
|
|
proof="proofdata",
|
|
)
|
|
audit = AuditLog(entries=["signal produced"], last_updated=None)
|
|
assert prov.venue_id == "venue-a"
|
|
assert isinstance(audit.entries, list)
|