Add baseline_recalc_ordering/tests/test_core.py

This commit is contained in:
Mika 2025-12-19 16:32:38 +00:00
parent ff4cde4344
commit 3df6233fde

View file

@ -0,0 +1,49 @@
import json
import pytest
from pathlib import Path
from baseline_recalc_ordering import core
def load_test_data():
data_path = Path(__file__).parent / "data" / "test_order_sequence.json"
if not data_path.exists():
# Fallback Testdaten, falls Datei nicht existiert
return ["opA", "opB", "opC"]
with data_path.open("r", encoding="utf-8") as f:
return json.load(f)
def test_analyze_latency_structure_and_content(tmp_path):
order_sequence = load_test_data()
result = core.analyze_latency(order_sequence)
# Struktur prüfen
assert isinstance(result, dict), "Rückgabe muss dict sein"
assert "order_sequence" in result, "order_sequence-Feld fehlt"
assert "latency_metrics" in result, "latency_metrics-Feld fehlt"
# Feldtypen prüfen
assert isinstance(result["order_sequence"], list), "order_sequence muss Liste sein"
assert all(isinstance(x, str) for x in result["order_sequence"]), "order_sequence-Elemente müssen Strings sein"
assert isinstance(result["latency_metrics"], dict), "latency_metrics muss dict sein"
# Beispielhafte Keys prüfen
for key in ["mean", "median", "stdev"]:
assert key in result["latency_metrics"], f"Metrik '{key}' fehlt"
assert isinstance(result["latency_metrics"][key], (int, float)), f"Metrik '{key}' hat falschen Typ"
def test_reproducible_results():
order_sequence = ["x", "y", "z"]
result1 = core.analyze_latency(order_sequence)
result2 = core.analyze_latency(order_sequence)
assert result1 == result2, "Gleiche Eingaben müssen gleiche Resultate ergeben"
def test_empty_sequence_handling():
result = core.analyze_latency([])
assert isinstance(result, dict)
assert result["order_sequence"] == []
assert isinstance(result["latency_metrics"], dict)
assert "mean" in result["latency_metrics"]
assert result["latency_metrics"]["mean"] == 0