skyread / tests /test_interpret.py
ericakcc's picture
Upload folder using huggingface_hub
6e649fa verified
Raw
History Blame Contribute Delete
2.23 kB
"""Baseline tests for the rule-based interpretation layer."""
from skyread.interpret import assess, build_grandma_prompt, interpret_rule_based
def _indices(cape: float, cin: float) -> dict[str, float]:
return {
"cape_jkg": cape,
"cin_jkg": cin,
"lcl_hpa": 900.0,
"lfc_hpa": 850.0,
"el_hpa": 200.0,
"k_index": 36.0,
"lifted_index": -6.0,
"total_totals": 53.0,
"pwat_mm": 40.0,
}
def test_assess_extreme_cape_returns_extreme_label() -> None:
assert assess(_indices(4500.0, -10.0))["label"] == "extreme"
def test_assess_zero_cape_returns_stable_label() -> None:
assert assess(_indices(0.0, 0.0))["label"] == "stable"
def test_assess_nan_cape_treated_as_stable() -> None:
assert assess(_indices(float("nan"), 0.0))["label"] == "stable"
def test_assess_stable_cap_note_does_not_claim_easy_initiation() -> None:
# CAPE 0 + CIN 0 means "no convection at all", not "convection starts easily".
note = assess(_indices(0.0, 0.0))["cap_note"]
assert "容易啟動" not in note
def test_interpret_rule_based_marginal_advises_umbrella_not_carefree_sunning() -> None:
# "可能有雷雨" must not be followed by "棉被可以放心曬".
cards = interpret_rule_based(_indices(300.0, -200.0), "test")
assert "傘" in cards["grandma"]
assert "放心曬" not in cards["grandma"]
def test_interpret_rule_based_unstable_advises_umbrella() -> None:
cards = interpret_rule_based(_indices(2000.0, -50.0), "test")
assert "帶傘" in cards["grandma"]
def test_interpret_rule_based_stable_allows_sunbathing_quilt() -> None:
cards = interpret_rule_based(_indices(0.0, 0.0), "test")
assert "曬" in cards["grandma"]
def test_build_grandma_prompt_embeds_rule_based_draft() -> None:
prompt = build_grandma_prompt(_indices(2000.0, -50.0), "test")
draft = interpret_rule_based(_indices(2000.0, -50.0), "test")
assert draft["grandma"].removeprefix("【生活版】") in prompt
def test_build_grandma_prompt_requests_rewrite_only() -> None:
prompt = build_grandma_prompt(_indices(1500.0, -30.0), "test")
assert "繁體中文" in prompt
assert "只輸出改寫後的句子" in prompt