"""render_algo 单元测试。""" import json import tempfile from pathlib import Path from ts_anomaly_td.visualize import render_algo def _make_ts_vals_labels(n=200): """生成测试用时间序列。""" ts = [i * 3600_000 for i in range(n)] # 每小时 vals = [float(i % 20) for i in range(n)] labels = [1 if 50 <= i <= 60 else 0 for i in range(n)] return ts, vals, labels def test_render_algo_basic(): """render_algo 应生成有效 PNG。""" ts, vals, labels = _make_ts_vals_labels() windows = [[ts[50], ts[60]]] with tempfile.TemporaryDirectory() as tmpdir: out = Path(tmpdir) / "test_algo.png" result = render_algo(ts, vals, labels, windows, "ksigma", str(out), title="test") assert Path(result).exists() assert Path(result).stat().st_size > 5000 def test_render_algo_empty_windows(): """空检测窗口应正常渲染。""" ts, vals, labels = _make_ts_vals_labels(50) with tempfile.TemporaryDirectory() as tmpdir: out = Path(tmpdir) / "empty.png" result = render_algo(ts, vals, labels, [], "iqr", str(out)) assert Path(result).exists()