Spaces:
Sleeping
Sleeping
| """Unit tests for pure stats math fixtures.""" | |
| from app.stats_math import by_remedy, data_thin, server_picks | |
| def _entries() -> list[dict]: | |
| # remedy "walk": 4 worked, 1 failed => n=5, p_helped=0.8 | |
| # remedy "nap": 2 partial, 1 failed, 2 pending => scored n=3 (below min_n=5) | |
| rows = [] | |
| for _ in range(4): | |
| rows.append( | |
| { | |
| "remedy": " Walk ", | |
| "result": "worked", | |
| "emotions": ["calm"], | |
| "tags": ["rerun"], | |
| "intensity": 5, | |
| } | |
| ) | |
| rows.append( | |
| { | |
| "remedy": "walk", | |
| "result": "failed", | |
| "emotions": ["shame"], | |
| "tags": ["urge"], | |
| "intensity": 8, | |
| } | |
| ) | |
| for _ in range(2): | |
| rows.append( | |
| { | |
| "remedy": "nap", | |
| "result": "partial", | |
| "emotions": ["tired"], | |
| "tags": ["home"], | |
| "intensity": 2, | |
| } | |
| ) | |
| rows.append( | |
| { | |
| "remedy": "nap", | |
| "result": "failed", | |
| "emotions": ["tired"], | |
| "tags": ["home"], | |
| "intensity": 2, | |
| } | |
| ) | |
| rows.append( | |
| { | |
| "remedy": "nap", | |
| "result": "pending", | |
| "emotions": ["tired"], | |
| "tags": ["home"], | |
| "intensity": 2, | |
| } | |
| ) | |
| rows.append( | |
| { | |
| "remedy": "nap", | |
| "result": "pending", | |
| "emotions": ["tired"], | |
| "tags": ["home"], | |
| "intensity": 2, | |
| } | |
| ) | |
| return rows | |
| def test_p_helped_and_rank() -> None: | |
| rows = by_remedy(_entries(), min_n=5, shrink_k=3) | |
| assert len(rows) == 1 | |
| walk = rows[0] | |
| assert walk["key"] == "walk" | |
| assert walk["n"] == 5 | |
| assert walk["p_worked"] == 0.8 | |
| assert walk["p_helped"] == 0.8 | |
| assert abs(walk["rank"] - (0.8 * 5 / 8)) < 1e-9 | |
| def test_data_thin() -> None: | |
| assert data_thin(9) is True | |
| assert data_thin(10) is False | |
| def test_server_picks_tag_boost() -> None: | |
| picks = server_picks( | |
| _entries(), | |
| ["rerun"], | |
| min_n=5, | |
| shrink_k=3, | |
| match_alpha=0.5, | |
| ) | |
| assert len(picks) == 1 | |
| assert picks[0]["remedy_key"] == "walk" | |
| assert picks[0]["match"] == 1.0 | |
| expected = (0.8 * 5 / 8) * (1 + 0.5 * 1.0) | |
| assert abs(picks[0]["pick"] - expected) < 1e-9 | |