"""Unit tests for MuJoCoRunner domain randomization.""" import dataclasses import numpy as np import pytest from src.runners.mujoco import DomainRandConfig, MuJoCoRunnerConfig class TestDomainRandConfig: def test_default_all_zero(self) -> None: cfg = DomainRandConfig() assert cfg.mass_frac == 0.0 assert cfg.friction_frac == 0.0 assert cfg.gear_frac == 0.0 def test_from_dict(self) -> None: d = {"mass_frac": 0.15, "gear_frac": 0.1} cfg = DomainRandConfig(**d) assert cfg.mass_frac == 0.15 assert cfg.gear_frac == 0.1 assert cfg.damping_frac == 0.0 # not set class TestMuJoCoRunnerConfig: def test_default_dr_disabled(self) -> None: cfg = MuJoCoRunnerConfig() assert isinstance(cfg.domain_rand, DomainRandConfig) assert cfg.domain_rand.mass_frac == 0.0 def test_domain_rand_from_dict(self) -> None: """Hydra passes nested configs as dicts — test __post_init__ converts.""" cfg = MuJoCoRunnerConfig( domain_rand={"mass_frac": 0.2, "friction_frac": 0.3}, # type: ignore[arg-type] ) assert isinstance(cfg.domain_rand, DomainRandConfig) assert cfg.domain_rand.mass_frac == 0.2 assert cfg.domain_rand.friction_frac == 0.3