diff --git a/baseline_recalc_ordering/tests/test_core.py b/baseline_recalc_ordering/tests/test_core.py new file mode 100644 index 0000000..88f4a40 --- /dev/null +++ b/baseline_recalc_ordering/tests/test_core.py @@ -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 \ No newline at end of file