Add artifact_2_worker_binding_analysis/tests/test_core.py

This commit is contained in:
Mika 2026-03-19 13:57:24 +00:00
parent 7f8c8b7f57
commit 8e6c061416

View file

@ -0,0 +1,51 @@
import pytest
from artifact_2_worker_binding_analysis import core
def make_worker_data(worker_values):
"""Hilfsfunktion zur Erzeugung einer Liste von WorkerBindingResult-ähnlichen Dicts."""
return [{"worker_id": wid, "population_percentage": val} for wid, val in worker_values]
def test_analyze_worker_binding_typical_case():
data_enforced = make_worker_data([
("w1", 40.0),
("w2", 60.0),
])
data_randomized = make_worker_data([
("w1", 50.0),
("w2", 50.0),
])
result = core.analyze_worker_binding(data_enforced, data_randomized)
assert isinstance(result, dict)
# Erwartung: Ergebnis enthält Kennzahlen wie Durchschnittsunterschied oder Ähnliches
assert "difference_mean" in result
assert "workers_compared" in result
assert result["workers_compared"] == 2
# Überprüfen, ob Zahlen sinnvoll (Vergleichswert) sind
assert isinstance(result["difference_mean"], (float, int))
def test_analyze_worker_binding_empty_inputs():
# Leere Eingaben sollten zu sinnvollem Default führen, nicht Absturz
result = core.analyze_worker_binding([], [])
assert isinstance(result, dict)
assert result.get("workers_compared", 0) == 0
def test_analyze_worker_binding_mismatched_workers():
data_enforced = make_worker_data([("w1", 70.0)])
data_randomized = make_worker_data([("w2", 30.0)])
result = core.analyze_worker_binding(data_enforced, data_randomized)
# Sollte neutralen Vergleich liefern, kein Exception
assert isinstance(result, dict)
# Möglicherweise keine Overlap -> Differenzen leer oder 0
assert "workers_compared" in result
def test_analyze_worker_binding_input_validation():
# Ungültige Typen -> Fehler
with pytest.raises((AssertionError, TypeError, ValueError)):
core.analyze_worker_binding(None, None)
with pytest.raises((AssertionError, TypeError, ValueError)):
core.analyze_worker_binding([{"wrong_field": 1}], [])