diff --git a/artifact_3_retry_tail_analysis/tests/test_core.py b/artifact_3_retry_tail_analysis/tests/test_core.py new file mode 100644 index 0000000..6fe07bd --- /dev/null +++ b/artifact_3_retry_tail_analysis/tests/test_core.py @@ -0,0 +1,49 @@ +import pytest +from artifact_3_retry_tail_analysis import core + + +def test_analyze_retry_tails_basic_case(): + data_enforced = {"retry_tail_p99": 120.0} + data_randomized = {"retry_tail_p99": 150.0} + + result = core.analyze_retry_tails(data_enforced, data_randomized) + + assert isinstance(result, dict) + assert "retry_tail_p99" in result + assert "difference" in result + assert result["retry_tail_p99"] == 120.0 + assert pytest.approx(result["difference"]) == -30.0 + + +def test_analyze_retry_tails_swapped_values(): + data_enforced = {"retry_tail_p99": 200.0} + data_randomized = {"retry_tail_p99": 100.0} + + result = core.analyze_retry_tails(data_enforced, data_randomized) + + assert pytest.approx(result["difference"]) == 100.0 + assert result["retry_tail_p99"] == 200.0 + + +def test_analyze_retry_tails_input_validation(): + # Missing required field + with pytest.raises((KeyError, ValueError, AssertionError)): + core.analyze_retry_tails({}, {"retry_tail_p99": 10.0}) + + # Invalid data type + with pytest.raises((TypeError, AssertionError)): + core.analyze_retry_tails({"retry_tail_p99": "not_a_number"}, {"retry_tail_p99": 10.0}) + + +def test_analyze_retry_tails_edges(): + # Equal values => difference = 0.0 + data_enforced = {"retry_tail_p99": 100.0} + data_randomized = {"retry_tail_p99": 100.0} + result = core.analyze_retry_tails(data_enforced, data_randomized) + assert pytest.approx(result["difference"]) == 0.0 + + # Negative values (simulated edge) + data_enforced = {"retry_tail_p99": -50.0} + data_randomized = {"retry_tail_p99": -30.0} + result = core.analyze_retry_tails(data_enforced, data_randomized) + assert pytest.approx(result["difference"]) == -20.0 \ No newline at end of file