Spaces:
Sleeping
Sleeping
File size: 2,422 Bytes
990895d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | """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
|