From b3971375c2e852e18427942e62458c00ded4a4db Mon Sep 17 00:00:00 2001 From: Andrew Pimenov Date: Sun, 9 Aug 2026 16:14:00 +0300 Subject: [PATCH] add tests for speed_changes --- .gitignore | 1 + tests/test_compare.py | 49 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/.gitignore b/.gitignore index 6438fbd..a9d4864 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,4 @@ build/ # netsleuth runtime caches .cache/ +.coverage diff --git a/tests/test_compare.py b/tests/test_compare.py index 0f1fc5d..89abe03 100644 --- a/tests/test_compare.py +++ b/tests/test_compare.py @@ -81,6 +81,55 @@ def test_speed_deltas_cover_throughput_and_the_bufferbloat_grade(before, after): assert "Speedtest method" not in changes +def test_speed_of_a_report_against_itself_is_empty(before): + assert speed_changes(before, before) == [] + + +def test_speed_changes_with_missing_sections(): + assert speed_changes({}, {}) == [] + + +def test_speed_changes_all_fields(): + before_report = { + "speed": { + "data": { + "method": "fast", + "download_mbps": 100.0, + "upload_mbps": 50.0, + "bufferbloat_down_ms": 10.0, + "bufferbloat_up_ms": 5.0, + "bufferbloat_grade": "A", + } + } + } + after_report = { + "speed": { + "data": { + "method": "cloudflare", + "download_mbps": 200.0, + "upload_mbps": 100.0, + "bufferbloat_down_ms": 20.0, + "bufferbloat_up_ms": 15.0, + "bufferbloat_grade": "C", + } + } + } + changes = by_label(speed_changes(before_report, after_report)) + + assert changes["Speedtest method"].before == "fast" + assert changes["Speedtest method"].after == "cloudflare" + assert changes["Speedtest method"].delta is None + + assert changes["Download Mbps"].delta == pytest.approx(100.0) + assert changes["Upload Mbps"].delta == pytest.approx(50.0) + assert changes["Bufferbloat down ms"].delta == pytest.approx(10.0) + assert changes["Bufferbloat up ms"].delta == pytest.approx(10.0) + + assert changes["Bufferbloat grade"].before == "A" + assert changes["Bufferbloat grade"].after == "C" + assert changes["Bufferbloat grade"].delta is None + + def test_findings_are_split_into_new_and_resolved(before, after): new, resolved = finding_changes(before, after) assert [f["id"] for f in new] == ["speed.bufferbloat_down"]