54 lines
1.7 KiB
Python
54 lines
1.7 KiB
Python
import json
|
|
from opengrowth_privacy_preserving_federated_ import contracts as c
|
|
|
|
|
|
def test_local_experiment_to_dict():
|
|
le = c.LocalExperiment(
|
|
name="TestExperiment",
|
|
variables={"price": 9.99, "discount": 0.1},
|
|
privacy_budget={"epsilon": 1.0},
|
|
metadata={"owner": "alice"},
|
|
)
|
|
d = le.to_dict()
|
|
assert d["name"] == "TestExperiment"
|
|
assert d["variables"]["price"] == 9.99
|
|
assert d["privacy_budget"]["epsilon"] == 1.0
|
|
assert d["metadata"]["owner"] == "alice"
|
|
|
|
|
|
def test_shared_signals_to_dict():
|
|
ss = c.SharedSignals(
|
|
signals={"activation_rate": 0.42, "funnel_drop": 0.15},
|
|
provenance={"source": "mock"},
|
|
)
|
|
d = ss.to_dict()
|
|
assert d["signals"]["activation_rate"] == 0.42
|
|
assert d["provenance"]["source"] == "mock"
|
|
|
|
|
|
def test_plan_delta_to_dict():
|
|
pd = c.PlanDelta(delta={"activation": 1}, timestamp="2020-01-01T00:00:00Z", note="init")
|
|
d = pd.to_dict()
|
|
assert d["delta"]["activation"] == 1
|
|
assert d["timestamp"] == "2020-01-01T00:00:00Z"
|
|
assert d["note"] == "init"
|
|
|
|
|
|
def test_graph_of_contracts_registry_ops():
|
|
g = c.GraphOfContracts()
|
|
# register a contract
|
|
g.register_contract("example", {"hello": "world"}, version="1.0")
|
|
# get contract
|
|
reg = g.get_contract("example")
|
|
assert reg is not None
|
|
assert reg["version"] == "1.0"
|
|
assert reg["contract"]["hello"] == "world"
|
|
# list contracts
|
|
all_contracts = g.list_contracts()
|
|
assert "example" in all_contracts
|
|
# unregister and ensure removal
|
|
removed = g.unregister_contract("example")
|
|
assert removed is True
|
|
all_contracts = g.list_contracts()
|
|
assert "example" not in all_contracts
|