crisis/detect.py: - Add 'better off without me' CRITICAL pattern - Add 'desperate' HIGH pattern - Add extract_context() for match snippets crisis/response.py: - Add 5-4-3-2-1 grounding exercise - Add breathing exercise - Add generate_grounding_steps() and generate_breathing_exercise() crisis/test_rescue.py: 5 tests for new features
30 lines
953 B
Python
30 lines
953 B
Python
"""Tests for rescued crisis detection improvements."""
|
|
from crisis.detect import scan, extract_context
|
|
from crisis.response import generate_grounding_steps, generate_breathing_exercise
|
|
|
|
def test_better_off_without_me():
|
|
result = scan("Everyone would be better off without me")
|
|
assert result.level == "CRITICAL"
|
|
|
|
def test_desperate():
|
|
result = scan("I feel desperate and alone")
|
|
assert result.level in ("HIGH", "CRITICAL")
|
|
|
|
def test_context_extraction():
|
|
text = "I feel hopeless about everything"
|
|
result = scan(text)
|
|
assert len(result.matches) > 0
|
|
for m in result.matches:
|
|
ctx = extract_context(text, m["start"], m["end"])
|
|
assert len(ctx) > 0
|
|
|
|
def test_grounding_steps():
|
|
steps = generate_grounding_steps()
|
|
assert len(steps) == 5
|
|
assert "see" in steps[0].lower()
|
|
|
|
def test_breathing_exercise():
|
|
exercise = generate_breathing_exercise()
|
|
assert "4" in exercise
|
|
assert "6" in exercise
|