"""Tests for DiscussionSettings in src/type_aliases.py Per-aggregate dataclass regression-guard for the metadata_promotion_20260624 track. CONVENTION: 1-space indentation. NO COMMENTS. """ from __future__ import annotations from dataclasses import FrozenInstanceError import pytest from src.type_aliases import DiscussionSettings def test_constructor_with_kwargs() -> None: ds = DiscussionSettings(temperature=0.5, top_p=0.9, max_output_tokens=2048) assert ds.temperature == 0.5 assert ds.top_p == 0.9 assert ds.max_output_tokens == 2048 def test_field_access() -> None: ds = DiscussionSettings(temperature=0.0) assert ds.temperature == 0.0 def test_frozen_raises_on_mutation() -> None: ds = DiscussionSettings() with pytest.raises(FrozenInstanceError): ds.temperature = 0.5 def test_to_dict_roundtrip() -> None: ds = DiscussionSettings(temperature=0.3, top_p=0.7, max_output_tokens=1024) d = ds.to_dict() assert d["temperature"] == 0.3 assert d["top_p"] == 0.7 assert d["max_output_tokens"] == 1024 def test_default_values() -> None: ds = DiscussionSettings() assert ds.temperature == 0.7 assert ds.top_p == 1.0 assert ds.max_output_tokens == 0 def test_hashability() -> None: ds = DiscussionSettings(temperature=0.5) assert hash(ds) is not None