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
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"
|
|
|
|
|