You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

27 lines
1.4 KiB

from src.config_loader import PersonStateSettings
from src.person_state_rules import choose_status, final_exclusion_reason, normalize_exclusion_reason
CFG = PersonStateSettings(True, .5, False, True, False, True, True)
def test_status_priority_chain() -> None:
assert choose_status(tracked=True) == "tracked"
assert choose_status(tracked=True, inside_region=True) == "inside_region"
assert choose_status(eligible=True) == "eligible"
assert choose_status(prompt_played=True) == "prompted"
assert choose_status(pseudo_prompt=True) == "pseudo_prompted"
assert choose_status(observing=True) == "observing_response"
assert choose_status(responded=True, lost=True) == "lost"
assert choose_status(responded=True) == "responded"
assert choose_status(no_response=True) == "no_response"
assert choose_status(finalized=True) == "completed"
assert choose_status(excluded=True, finalized=True) == "excluded"
def test_exclusion_rules() -> None:
assert final_exclusion_reason(CFG, .1, True, True, None, None, False, True, False) == "track_too_short"
assert final_exclusion_reason(CFG, 1., True, False, None, None, False, False, False) == "not_prompt_eligible"
assert final_exclusion_reason(CFG, 1., True, True, None, "prompt_failed", False, True, False) == "prompt_failed"
assert normalize_exclusion_reason("no_turn_state") == "response_not_evaluable"