""" Tests for ScenarioLibrary — sweep coverage. """ import pytest from malkhut.training.scenario_library import ScenarioLibrary, SweepPoint, get_scenario_library class TestScenarioLibrary: def test_default_grid_size(self): lib = ScenarioLibrary() size = lib.grid_size() assert size == 13 * 6 * 6 * 4 * 4 # 13 assets × 576 grid points print(f' Default grid: {size} points') def test_sweep_produces_points(self): lib = ScenarioLibrary(symbols=("BTCUSDT",)) points = lib.sweep() assert len(points) == 6 * 6 * 4 * 4 # 576 for one asset def test_sweep_point_fields(self): lib = ScenarioLibrary(symbols=("BTCUSDT",)) points = lib.sweep() p = points[0] assert isinstance(p, SweepPoint) assert p.symbol == "BTCUSDT" assert isinstance(p.spread_mult, float) assert isinstance(p.depth_fraction, float) assert isinstance(p.toxicity, float) assert isinstance(p.regime, str) assert isinstance(p.label, str) def test_sweep_covers_all_regimes(self): lib = ScenarioLibrary(symbols=("BTCUSDT",)) points = lib.sweep() regimes = set(p.regime for p in points) assert regimes == {"normal", "crisis", "recovery", "transition"} def test_custom_dimensions(self): lib = ScenarioLibrary( symbols=("BTCUSDT", "ETHUSDT"), spread_mults=[1.0, 5.0], depth_fracs=[0.1, 0.5], tox_levels=[0.0, 0.5], regimes=["normal", "crisis"], ) assert lib.grid_size() == 2 * 2 * 2 * 2 * 2 # 32 points def test_summary(self): lib = ScenarioLibrary() s = lib.summary() assert "13" in s assert "7488" in s # 13 × 576 def test_get_scenario_library(self): lib = get_scenario_library() assert lib.grid_size() > 0