Files
Geniusia_v2/test_logs_panel_simple.py
2026-03-05 00:20:25 +01:00

114 lines
4.5 KiB
Python
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
Test simple du LogsPanel sans interface graphique
"""
import sys
sys.path.insert(0, 'geniusia2')
from PyQt5.QtWidgets import QApplication
from gui.logs_panel import LogsPanel, LogMessage
from datetime import datetime
# Créer une application Qt (nécessaire pour les widgets Qt)
app = QApplication(sys.argv)
def test_logs_panel():
"""Test des fonctionnalités du LogsPanel"""
# Test 1: Création du panneau
print('Test 1: Création du panneau')
panel = LogsPanel()
print(f'✓ Panneau créé, max_logs={panel.max_logs}')
assert panel.max_logs == 30, f'Expected max_logs=30, got {panel.max_logs}'
# Test 2: Ajout de logs
print('\nTest 2: Ajout de logs')
panel.add_log('Test message 1', '👀', 'info')
panel.add_log('Test message 2', '🎯', 'success')
panel.add_log('Test message 3', '⚠️', 'warning')
print(f'✓ 3 logs ajoutés, count={panel.get_log_count()}')
assert panel.get_log_count() == 3, f'Expected 3, got {panel.get_log_count()}'
# Test 3: Vérifier la limite de 30
print('\nTest 3: Test de la limite de 30 messages')
for i in range(30):
panel.add_log(f'Message {i+4}', '📝', 'info')
print(f'✓ Ajouté 30 logs supplémentaires, count={panel.get_log_count()}')
assert panel.get_log_count() == 30, f'Expected 30, got {panel.get_log_count()}'
# Test 4: Vérifier que les anciens sont supprimés
print('\nTest 4: Vérifier suppression des anciens')
panel.add_log('Nouveau message', '', 'success')
print(f'✓ Ajouté 1 log de plus, count={panel.get_log_count()}')
assert panel.get_log_count() == 30, f'Expected 30, got {panel.get_log_count()}'
# Test 5: get_last_log
print('\nTest 5: get_last_log')
last = panel.get_last_log()
print(f'✓ Dernier log: {last.message}')
assert last.message == 'Nouveau message', f'Expected "Nouveau message", got "{last.message}"'
# Test 6: get_logs
print('\nTest 6: get_logs')
logs = panel.get_logs()
print(f'✓ get_logs retourne {len(logs)} logs')
assert len(logs) == 30, f'Expected 30, got {len(logs)}'
# Test 7: Vérifier que le premier log a été supprimé
print('\nTest 7: Vérifier que les premiers logs ont été supprimés')
first_log = logs[0]
print(f'✓ Premier log restant: {first_log.message}')
# Les 3 premiers logs + 1 ont été supprimés, donc le premier devrait être "Message 4"
assert 'Message' in first_log.message, f'Expected message with "Message", got "{first_log.message}"'
# Test 8: clear
print('\nTest 8: clear')
panel.clear()
print(f'✓ Logs effacés, count={panel.get_log_count()}')
assert panel.get_log_count() == 0, f'Expected 0, got {panel.get_log_count()}'
# Test 9: get_last_log après clear
print('\nTest 9: get_last_log après clear')
last = panel.get_last_log()
print(f'✓ get_last_log après clear: {last}')
assert last is None, f'Expected None, got {last}'
# Test 10: Ajouter des logs après clear
print('\nTest 10: Ajouter des logs après clear')
panel.add_log('Premier log après clear', '🔄', 'info')
print(f'✓ Log ajouté après clear, count={panel.get_log_count()}')
assert panel.get_log_count() == 1, f'Expected 1, got {panel.get_log_count()}'
# Test 11: Vérifier les différents niveaux
print('\nTest 11: Vérifier les différents niveaux')
panel.clear()
panel.add_log('Info message', '', 'info')
panel.add_log('Success message', '', 'success')
panel.add_log('Warning message', '⚠️', 'warning')
panel.add_log('Error message', '', 'error')
logs = panel.get_logs()
assert len(logs) == 4, f'Expected 4, got {len(logs)}'
assert logs[0].level == 'info', f'Expected info, got {logs[0].level}'
assert logs[1].level == 'success', f'Expected success, got {logs[1].level}'
assert logs[2].level == 'warning', f'Expected warning, got {logs[2].level}'
assert logs[3].level == 'error', f'Expected error, got {logs[3].level}'
print(f'✓ Tous les niveaux fonctionnent correctement')
print('\n✅ Tous les tests passent!')
return True
if __name__ == "__main__":
try:
test_logs_panel()
print("\n" + "="*50)
print("SUCCESS: LogsPanel fonctionne correctement!")
print("="*50)
except AssertionError as e:
print(f"\n❌ ERREUR: {e}")
sys.exit(1)
except Exception as e:
print(f"\n❌ ERREUR INATTENDUE: {e}")
import traceback
traceback.print_exc()
sys.exit(1)