#!/usr/bin/env python3
"""Tests pour CORRECTION 6 : suppression de l'estimation d'age sans source."""
import sys
import os
import unittest

sys.path.insert(0, os.path.join(os.path.dirname(__file__), "agents_python"))


class TestAgeSuppressionNotoriete(unittest.TestCase):
    """Verifie que person_notoriete n'a pas d'instruction d'age."""

    def test_notoriete_no_age_rule(self):
        from synthesizer import get_system_prompt
        prompt = get_system_prompt("person_notoriete")
        # Pas de "REGLE AGE CRITIQUE" ni de formule de calcul d'age
        self.assertNotIn("REGLE AGE CRITIQUE", prompt)
        self.assertNotIn("approximativement N +", prompt)
        self.assertNotIn("example_age", prompt)

    def test_notoriete_has_no_age_mention(self):
        from synthesizer import get_system_prompt
        prompt = get_system_prompt("person_notoriete")
        # Doit contenir l'interdiction d'age sans date exacte
        self.assertIn("NE MENTIONNE JAMAIS l'age", prompt)
        self.assertIn("date de naissance EXACTE", prompt)

    def test_notoriete_has_temporal_constraints(self):
        from synthesizer import get_system_prompt
        prompt = get_system_prompt("person_notoriete")
        # Les contraintes temporelles non-age sont conservees
        self.assertIn("La date du jour est", prompt)
        self.assertIn("utiliser le PASSE", prompt)
        self.assertIn("occupait", prompt)


class TestAgePreservedPerson(unittest.TestCase):
    """Verifie que le prompt person (Wikipedia) conserve l'age."""

    def test_person_has_age_rule(self):
        from synthesizer import get_system_prompt
        prompt = get_system_prompt("person")
        self.assertIn("REGLE AGE CRITIQUE", prompt)
        self.assertIn("approximativement N +", prompt)

    def test_person_has_temporal(self):
        from synthesizer import get_system_prompt
        prompt = get_system_prompt("person")
        self.assertIn("La date du jour est", prompt)


class TestDefaultPromptUnchanged(unittest.TestCase):
    """Verifie que les autres prompts ne sont pas affectes."""

    def test_default_has_age_rule(self):
        from synthesizer import get_system_prompt
        prompt = get_system_prompt("default")
        self.assertIn("REGLE AGE CRITIQUE", prompt)

    def test_country_has_age_rule(self):
        from synthesizer import get_system_prompt
        prompt = get_system_prompt("country")
        self.assertIn("REGLE AGE CRITIQUE", prompt)


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