초기 커밋
This commit is contained in:
30
tests/unit/test_statistics.py
Normal file
30
tests/unit/test_statistics.py
Normal file
@@ -0,0 +1,30 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from app.processing.utils.statistics import detect_anomalies, moving_average, percentile_stats
|
||||
|
||||
|
||||
def test_moving_average() -> None:
|
||||
values = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0]
|
||||
result = moving_average(values, window=3)
|
||||
assert len(result) == 5
|
||||
assert abs(result[0] - 2.0) < 0.001
|
||||
|
||||
|
||||
def test_moving_average_short_input() -> None:
|
||||
values = [1.0, 2.0]
|
||||
result = moving_average(values, window=5)
|
||||
assert result == values
|
||||
|
||||
|
||||
def test_detect_anomalies() -> None:
|
||||
values = [10.0, 10.1, 9.9, 10.0, 50.0, 10.0, 9.8]
|
||||
anomalies = detect_anomalies(values, threshold=2.0)
|
||||
assert len(anomalies) >= 1
|
||||
assert any(a["value"] == 50.0 for a in anomalies)
|
||||
|
||||
|
||||
def test_percentile_stats() -> None:
|
||||
values = list(range(1, 101))
|
||||
stats = percentile_stats([float(v) for v in values])
|
||||
assert abs(stats["p50"] - 50.5) < 1.0
|
||||
assert stats["p99"] > stats["p95"]
|
||||
Reference in New Issue
Block a user