import unittest import os import sys import json from datetime import datetime from pathlib import Path # Ajouter le répertoire parent au sys.path pour importer les modules sys.path.append(str(Path(__file__).parent.parent)) from agents.base_agent import Agent class TestAgent(unittest.TestCase): """Tests pour la classe Agent de base""" def setUp(self): """Initialisation pour chaque test""" self.agent = Agent(nom="TestAgent") def test_initialisation(self): """Test de l'initialisation correcte de l'agent""" self.assertEqual(self.agent.nom, "TestAgent") self.assertEqual(len(self.agent.historique), 0) def test_ajouter_historique(self): """Test de l'ajout d'entrées dans l'historique""" self.agent.ajouter_historique("test_action", "données d'entrée", "données de sortie") self.assertEqual(len(self.agent.historique), 1) entry = self.agent.historique[0] self.assertEqual(entry["action"], "test_action") self.assertEqual(entry["input"], "données d'entrée") self.assertEqual(entry["output"], "données de sortie") self.assertTrue("timestamp" in entry) def test_obtenir_historique(self): """Test de la récupération de l'historique""" # Ajouter plusieurs entrées self.agent.ajouter_historique("action1", "entrée1", "sortie1") self.agent.ajouter_historique("action2", "entrée2", "sortie2") historique = self.agent.obtenir_historique() self.assertEqual(len(historique), 2) self.assertEqual(historique[0]["action"], "action1") self.assertEqual(historique[1]["action"], "action2") def test_executer_not_implemented(self): """Test que la méthode executer lève une NotImplementedError""" with self.assertRaises(NotImplementedError): self.agent.executer() def test_limite_taille_historique(self): """Test de la limite de taille dans l'historique""" # Créer une entrée avec une chaîne très longue longue_chaine = "x" * 1000 self.agent.ajouter_historique("test_limite", longue_chaine, longue_chaine) entry = self.agent.historique[0] self.assertEqual(len(entry["input"]), 500) # Limite à 500 caractères self.assertEqual(len(entry["output"]), 500) # Limite à 500 caractères if __name__ == "__main__": unittest.main()