import unittest
from mindscreen.nlp_analysis import TextAnalyzer
from mindscreen.safety import CrisisDetector


class TestCrisisDetector(unittest.TestCase):
    def setUp(self):
        self.analyzer = TextAnalyzer()
        self.detector = CrisisDetector()

    def test_crisis_text_triggers(self):
        features = self.analyzer.analyze("I just want to end my life.")
        result = self.detector.check_text(features)
        self.assertTrue(result.triggered)
        self.assertIn("end my life", result.matched_terms)
        self.assertIsNotNone(result.message)

    def test_benign_text_does_not_trigger(self):
        features = self.analyzer.analyze("I had a pretty good day at work today.")
        result = self.detector.check_text(features)
        self.assertFalse(result.triggered)
        self.assertIsNone(result.message)

    def test_phq9_item9_triggers(self):
        result = self.detector.check_phq9_item9(2)
        self.assertTrue(result.triggered)

    def test_phq9_item9_zero_does_not_trigger(self):
        result = self.detector.check_phq9_item9(0)
        self.assertFalse(result.triggered)

    def test_combine_any_triggered(self):
        r1 = self.detector.check_phq9_item9(0)
        r2 = self.detector.check_phq9_item9(1)
        combined = self.detector.combine(r1, r2)
        self.assertTrue(combined.triggered)


if __name__ == "__main__":
    unittest.main()
