Files
OBLITERATUS/tests/test_config_properties.py
T

39 lines
1.2 KiB
Python

"""Deterministic property contracts for configuration serialization."""
from __future__ import annotations
from hypothesis import given, seed, settings, strategies as st
from obliteratus.config import StudyConfig
PROPERTY_SETTINGS = settings(max_examples=60, deadline=None, database=None)
@seed(7007)
@PROPERTY_SETTINGS
@given(
batch_size=st.integers(1, 32),
max_length=st.integers(2, 4096),
strategy_names=st.lists(
st.text(alphabet="abcdefghijklmnopqrstuvwxyz_", min_size=1, max_size=16),
min_size=1,
max_size=8,
),
)
def test_study_config_public_roundtrip_preserves_explicit_values(
batch_size, max_length, strategy_names,
):
raw = {
"model": {"name": "fixture", "device": "cpu"},
"dataset": {"name": "fixture", "max_samples": 12},
"strategies": [{"name": name, "params": {"strength": 0.5}} for name in strategy_names],
"metrics": ["perplexity", "accuracy"],
"batch_size": batch_size,
"max_length": max_length,
"output_dir": "results/property",
}
config = StudyConfig.from_dict(raw)
restored = StudyConfig.from_dict(config.to_dict())
assert restored == config