Commit b1120603 authored by MACHADO-VICENTE MICKAEL's avatar MACHADO-VICENTE MICKAEL
Browse files

Début test

parent c1b1649a
import unittest
from lecteur_bd import *
from verification_elements import *
from pathlib import Path
import os
import re
chemin_bd = Path(os.getcwd()).joinpath("data/base_donees.xlsx")
lecteur_bd = LecteurBd(chemin_bd)
tag_faux = ["0001q", "0002q", "0001p", "0003q", "0002p", "0004q", "0003p",
"0004p", "0005q", "", "", "0007q", "0006p", "0008q", "0007p"]
capteurs = []
for i in range(1, 16):
capteurs.append(Capteur(i, tag_faux[i - 1]))
test_verif_faux = VerificationElements(lecteur_bd.liste_personnages, lecteur_bd.liste_question, capteurs)
test_verif_faux.verification_globale()
test_verif_vide = VerificationElements(lecteur_bd.liste_personnages, lecteur_bd.liste_question, [])
class TestStringMethods(unittest.TestCase):
def test_VerificationElements(self):
test_verif = VerificationElements(lecteur_bd.liste_personnages, lecteur_bd.liste_question, capteurs)
self.assertIsInstance(test_verif, VerificationElements)
# Test liste personnage en base de données
self.assertTrue(any(isinstance(personnage,(Personnage)) for personnage in test_verif.liste_personnages))
self.assertEqual(len(test_verif.liste_personnages), 8)
# Test liste question en base de données
self.assertTrue(any(isinstance(question,(Question)) for question in test_verif.liste_questions))
self.assertEqual(len(test_verif.liste_questions), 10)
# Test liste capteur en base de données
self.assertTrue(any(isinstance(capteur,(Capteur)) for capteur in test_verif.liste_tags))
self.assertEqual(len(test_verif.liste_tags), 15)
# Test __calcul_nb_etages
self.assertEqual(test_verif.nb_etage, 4)
self.assertEqual(test_verif_vide.nb_etage, 0)
# Test résultats led à l'initialisation
self.assertTrue(len(test_verif.resultat_leds), 14)
self.assertEqual(test_verif.resultat_leds, [-1]*14)
# Test liste objets lus
self.assertEqual(len(test_verif.liste_objects_lus), 15)
self.assertTrue(any(isinstance(objet_lu, (Personnage, Question)) for objet_lu in test_verif.liste_objects_lus))
# Test liste index personnage
self.assertEqual(len(test_verif.liste_index_personnage), 6)
self.assertEqual(test_verif.liste_index_personnage, [2, 4, 6, 7, 12, 14])
# Test liste index question
self.assertEqual(len(test_verif.liste_index_question), 7)
self.assertEqual(test_verif.liste_index_question, [0, 1, 3, 5, 8, 11, 13])
# Test indexes pour un plateau vide
self.assertEqual(len(test_verif_vide.liste_objects_lus), 0)
self.assertEqual(len(test_verif_vide.liste_index_personnage), 0)
self.assertEqual(len(test_verif_vide.liste_index_question), 0)
def test_validite_branche_recursif(self):
validite = {}
test_verif_faux.validite_branche_recursif(4, validite)
self.assertEqual(validite, {0: 1, 1: 1, 9: -1, 10: -1})
# A améliorer
def test_verification_personnages(self):
validite = {}
test_verif_faux.validite_branche_recursif(4, validite)
verification_question_personnage, perso_correspond_questions = test_verif_faux.verification_personnages(4, validite)
self.assertEqual(verification_question_personnage, {1: 1, 0: 1})
self.assertEqual(perso_correspond_questions, True)
test_verif_faux.validite_branche_recursif(6, validite)
verification_question_personnage, perso_correspond_questions = test_verif_faux.verification_personnages(6, validite)
self.assertEqual(verification_question_personnage, {})
self.assertEqual(perso_correspond_questions, False)
def test_verification_globale(self):
self.assertSequenceEqual(test_verif_faux.resultat_leds, [1, 0, 1, 1, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0])
self.assertSequenceEqual(test_verif_vide.resultat_leds, [])
def test_lecteur_bd(self):
self.assertIsInstance(lecteur_bd, LecteurBd)
self.assertTrue(re.search(r'data\\base_donees\.xlsx$', str(lecteur_bd.fichier_bd)))
self.assertTrue(any(isinstance(personnage,(Personnage)) for personnage in lecteur_bd.liste_personnages))
self.assertEqual(len(lecteur_bd.liste_personnages), 8)
self.assertTrue(any(isinstance(question,(Question)) for question in lecteur_bd.liste_question))
self.assertEqual(len(lecteur_bd.liste_question), 10)
def test_capteur(self):
capteur = Capteur(i,tag_faux[i - 1])
self.assertIsInstance(capteur, (Capteur))
self.assertEqual(capteur.numero_capteur, 15)
self.assertEqual(capteur.tag_lu, '0007p')
if __name__ == '__main__':
unittest.main()
\ No newline at end of file
......@@ -32,7 +32,7 @@ class VerificationElements:
self.resultat_leds = [-1] * (len(self.liste_tags) - 1) # initialisation avec des LEDs éteintes ou blanches
self.liste_objects_lus, \
self.liste_index_personnage, \
self.liste_index_questions = self.__association_tags_lu_avec_bd()
self.liste_index_question = self.__association_tags_lu_avec_bd()
def __calcul_nb_etages(self):
"""
......@@ -57,7 +57,7 @@ class VerificationElements:
[list[int]] la liste des emplacements (index) où sont trouvés des Questions.
"""
liste_index_personnage = []
liste_index_questions = []
liste_index_question = []
liste_objects_lus = []
for index, capteur in enumerate(self.liste_tags):
trouve = False # initialisation tag non trouvée dans la liste des Personnages et des Questions.
......@@ -65,7 +65,7 @@ class VerificationElements:
for question in self.liste_questions: # recherche du tag lu dans la liste des Questions
if tag == question.tag:
liste_objects_lus.append(question)
liste_index_questions.append(index)
liste_index_question.append(index)
trouve = True
break
if not trouve: # si le tag n'est pas trouvé dans la liste des Questions
......@@ -78,9 +78,9 @@ class VerificationElements:
if not trouve: # si le tag n'est pas trouvé dans la liste des Questions ni des Personnages
liste_objects_lus.append(None)
return liste_objects_lus, liste_index_personnage, liste_index_questions
return liste_objects_lus, liste_index_personnage, liste_index_question
def __validite_branche_recursif(self, index, validite):
def validite_branche_recursif(self, index, validite):
"""
Verifie que chaque type d'object est placé correctement dans l'arbre
(aucune Question ou Personnage après un Personnage, que des Questions avant un Personnage, ...).
......@@ -113,15 +113,15 @@ class VerificationElements:
index_precedent = math.floor((index + 1) / 2) - 1
if index_precedent in self.liste_index_questions:
if index_precedent in self.liste_index_question:
validite[index_precedent] = 1
elif index_precedent in self.liste_index_personnage:
validite[index_precedent] = 0
else:
validite[index_precedent] = -1
# remonter la branche en direction du tronc tant qu'on voit des questions et que l'indice soit > 0.
if index_precedent != 0 and index_precedent in self.liste_index_questions:
validite = self.__validite_branche_recursif(index_precedent, validite)
if index_precedent != 0 and index_precedent in self.liste_index_question:
validite = self.validite_branche_recursif(index_precedent, validite)
return validite
......@@ -177,7 +177,7 @@ class VerificationElements:
for index_personnage in self.liste_index_personnage:
validite = {}
# dictionnaire de validité des éléments de la branche accrochée au personnage
validite_branche = self.__validite_branche_recursif(index_personnage, validite)
validite_branche = self.validite_branche_recursif(index_personnage, validite)
# le Personnage correspond-t-il aux questions de la branche ?
verification_question_personnage, \
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment