From 67560fd0c3302451b6f3e501b5a42b14f8e1d54a Mon Sep 17 00:00:00 2001 From: Mika Date: Sun, 22 Mar 2026 13:46:46 +0000 Subject: [PATCH] Add affinity_effect_calculator/tests/test_core.py --- affinity_effect_calculator/tests/test_core.py | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 affinity_effect_calculator/tests/test_core.py diff --git a/affinity_effect_calculator/tests/test_core.py b/affinity_effect_calculator/tests/test_core.py new file mode 100644 index 0000000..9bfb90f --- /dev/null +++ b/affinity_effect_calculator/tests/test_core.py @@ -0,0 +1,46 @@ +import pytest + +from src.affinity_effect_calculator import core + + +def test_calculate_affinity_effect_nominal(): + # Nominal case, typical positive values + effect_4x = 1.2 + effect_2x = 0.8 + expected = 0.4 + result = core.calculate_affinity_effect(effect_4x, effect_2x) + assert pytest.approx(result, rel=1e-9) == expected + + +def test_calculate_affinity_effect_negative_values(): + # Handles negative values correctly + effect_4x = -0.5 + effect_2x = -1.0 + expected = 0.5 # (-0.5) - (-1.0) = 0.5 + result = core.calculate_affinity_effect(effect_4x, effect_2x) + assert pytest.approx(result, rel=1e-9) == expected + + +def test_calculate_affinity_effect_zero_difference(): + effect_4x = 1.0 + effect_2x = 1.0 + expected = 0.0 + result = core.calculate_affinity_effect(effect_4x, effect_2x) + assert pytest.approx(result, rel=1e-9) == expected + + +def test_calculate_affinity_effect_type_validation(): + # Input validation should raise TypeError for non-floats + with pytest.raises(TypeError): + core.calculate_affinity_effect("4.0", 2.0) + with pytest.raises(TypeError): + core.calculate_affinity_effect(4.0, None) + + +def test_calculate_affinity_effect_large_numbers(): + # Use large floats to check precision handling + effect_4x = 1e12 + effect_2x = 5e11 + expected = 5e11 + result = core.calculate_affinity_effect(effect_4x, effect_2x) + assert pytest.approx(result, rel=1e-12) == expected \ No newline at end of file