diff --git a/artifact_2_worker_binding_analysis/tests/test_core.py b/artifact_2_worker_binding_analysis/tests/test_core.py new file mode 100644 index 0000000..92087b8 --- /dev/null +++ b/artifact_2_worker_binding_analysis/tests/test_core.py @@ -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}], []) \ No newline at end of file