Spaces:
Running
Running
Download tests/test_breaks.py from lucashudsn/wavereader: direct link, hf CLI and curl.
- Browser
- Download file 2.49 kB
-
https://huggingface.co/spaces/lucashudsn/wavereader/resolve/main/tests/test_breaks.py
- Command line
-
hf download hf://spaces/lucashudsn/wavereader/tests/test_breaks.py
-
curl -L -o test_breaks.py https://huggingface.co/spaces/lucashudsn/wavereader/resolve/main/tests/test_breaks.py
2.49 kB
| """Offline tests for wavereader.breaks (load, validate, resolve, filter).""" | |
| import json | |
| import pytest | |
| from wavereader import breaks as br | |
| def test_load_breaks_count_and_sort(): | |
| breaks = br.load_breaks() | |
| assert len(breaks) == 238 | |
| assert br.load_breaks.last_skipped == 0 | |
| keys = [(b["state"], b["region"], b["name"]) for b in breaks] | |
| assert keys == sorted(keys) | |
| def test_all_records_validate_strict(): | |
| breaks = br.load_breaks(strict=True) # raises on any invalid record | |
| assert len(breaks) == 238 | |
| def test_is_valid_break_rejects_garbage(): | |
| assert not br.is_valid_break({"name": "Nope"}) | |
| bells = br.resolve_break("Bells Beach") | |
| assert bells is not None and br.is_valid_break(bells) | |
| def test_resolve_break_exact_and_case_insensitive(): | |
| assert br.resolve_break("Bells Beach")["region"] == "Surf Coast" | |
| assert br.resolve_break("bells beach")["name"] == "Bells Beach" | |
| assert br.resolve_break("BELLS BEACH", region="surf coast")["name"] == "Bells Beach" | |
| def test_resolve_break_fuzzy_and_scoped(): | |
| assert br.resolve_break("bells")["name"] == "Bells Beach" | |
| # Unknown region falls back to the global pool. | |
| assert br.resolve_break("Bells Beach", region="No Such Region")["name"] == "Bells Beach" | |
| assert br.resolve_break("Bells Beach", region="Surf Coast")["name"] == "Bells Beach" | |
| assert br.resolve_break("definitely not a break xyz") is None | |
| assert br.resolve_break("") is None | |
| def test_resolve_break_region_disambiguates(): | |
| pool = [ | |
| {"name": "The Pass", "region": "North", "state": "NSW"}, | |
| {"name": "The Pass", "region": "South", "state": "NSW"}, | |
| ] | |
| assert br.resolve_break("The Pass", region="south", breaks=pool)["region"] == "South" | |
| def test_filter_breaks(): | |
| breaks = br.load_breaks() | |
| vic = br.filter_breaks(breaks, state="victoria") | |
| assert vic and all(b["state"] == "Victoria" for b in vic) | |
| surf_coast = br.filter_breaks(breaks, region="Surf Coast") | |
| assert surf_coast and all(b["region"] == "Surf Coast" for b in surf_coast) | |
| assert br.filter_breaks(breaks, state="All") == breaks | |
| assert br.filter_breaks(breaks, skill="advanced") | |
| def test_get_coords(): | |
| lat, lng = br.get_coords(br.resolve_break("Bells Beach")) | |
| # OSM ground truth (beach feature), verified via scripts/check_coords.py | |
| assert lat == pytest.approx(-38.368985, abs=0.01) | |
| assert lng == pytest.approx(144.282452, abs=0.01) | |
| assert br.get_coords({}) == (None, None) | |