Files
sentiment-engine/MALKHUT/malkhut/tests/test_scenario_library.py

57 lines
1.9 KiB
Python
Raw Normal View History

"""
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