Skip to content

Commit 0c76cf2

Browse files
authored
fix: Correction des bugs de typage et des tests unitaires manquants. (#19)
1 parent 00040b3 commit 0c76cf2

4 files changed

Lines changed: 20 additions & 15 deletions

File tree

src/utils.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import math
22
import string
3-
import sys
43
from pathlib import Path
54
from typing import Any, Dict, List, TypedDict
65

@@ -44,7 +43,7 @@ def est_dechiffre(texte:str) -> bool:
4443
Returns:
4544
bool: déchiffrée ou non
4645
"""
47-
stats:dict=verifier_texte_dechiffre(texte)
46+
stats:dict[str, Any] = verifier_texte_dechiffre(texte)
4847
pourcent=0
4948

5049
# Les caractères imprimables constituent 50% de la validation du déchiffrement
@@ -81,7 +80,7 @@ def verifier_texte_dechiffre(texte: str) -> Dict[str, Any]:
8180

8281
#Statistiques sur le texte
8382

84-
stats: dict = {
83+
stats: dict[str, Any] = {
8584
'imprimable':0,
8685
'nombre_mots':0,
8786
'p_mots_valide':0,
@@ -137,8 +136,7 @@ def verifier_texte_dechiffre(texte: str) -> Dict[str, Any]:
137136
stats['p_mots_valide'] = 0.0
138137

139138
except Exception:
140-
tb=sys.exception().__traceback__
141-
raise Exception().with_traceback(tb)
139+
raise
142140

143141

144142
#Verifier la structure de ponctuation.

tests/fichiers_pour_tests/mission1_invalide.enc

Whitespace-only changes.

tests/test_analyzers.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,19 @@ class AnalyzersTester(TestCase):
1313

1414
def setUp(self):
1515
self.chemin_fichier_chiffre = "data/mission1.enc"
16+
self.chemin_fichier_chiffre_invalide = "tests/fichiers_pour_tests/mission1_invalide.enc"
1617
self.wordlist = "keys/wordlist.txt"
1718
self.analyser = Aes_Cbc_Analyzer()
1819

1920

2021
def test_aes_cbc_identifier_algo(self):
2122
self.assertAlmostEqual(self.analyser.identifier_algo(self.chemin_fichier_chiffre), 1)
23+
self.assertAlmostEqual(self.analyser.identifier_algo(self.chemin_fichier_chiffre_invalide), 0)
2224

2325
def test_aes_cbc_filtrage_dict(self):
2426
self.assertIsInstance(self.analyser.filtrer_dictionnaire_par_indices(self.wordlist), list)
27+
self.assertEqual(self.analyser.filtrer_dictionnaire_par_indices(self.wordlist), ["paris2024"])
28+
self.assertEqual(self.analyser.filtrer_dictionnaire_par_indices("chemin_dohi.txt"), [])
2529

2630
def test_generation_cles_candidate(self):
2731
self.assertIsInstance(self.analyser.generer_cles_candidates(self.wordlist), list)

tests/test_global.py

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,12 @@
99
1010
"""
1111

12-
# Définition d'une fonction d'addition (+) pour les tests
13-
def add(a,b):
14-
return a+b
15-
1612
class BetaTester(TestCase):
1713
#Définition de la méthode de test
1814
"""
19-
# La fonction doit être préfixé du mot test pour que le TestCase puisse le l'identifier en tant que méthode à tester (le snake_case ici devra être appliqué ici)
15+
# La fonction doit être préfixé du mot test pour que le TestCase puisse le l'identifier en tant que méthode à tester (le snake_case devra être appliqué ici)
2016
21-
# En fonction du type de vérification que vous souhaitez effectué par rapport aux test les méthodes assert devront variés.
17+
# En fonction du type de vérification que vous souhaitez effectuer par rapport aux test les méthodes assert devront varier.
2218
ex : * assertEqual() pour vérifier l'égalité. Dans le cas utilisé cette fonction vérifie si le retour de la fonction add correspond à la valeur 10
2319
* assertIn() pour vérifier si une variable est dans une iterable
2420
* assertIsInstance() pour vérifier le type de retour d'une variable ou fonction etc... (description des méthodes à l'appui)
@@ -30,9 +26,6 @@ class BetaTester(TestCase):
3026
3127
"""
3228

33-
def test_addition(self):
34-
self.assertEqual(add(5,5),10)
35-
3629

3730
def test_verification_texte_dechiffre(self):
3831
resultat = verifier_texte_dechiffre("je talk !a mamamia:?")
@@ -43,7 +36,17 @@ def test_verification_texte_dechiffre(self):
4336
self.assertEqual(resultat['ponctuation_valide'], 50.0)
4437

4538
def test_calcul_entropie(self) -> None:
46-
self.assertGreater(calculer_entropie("aaaaaaaa"), 0)
39+
chaine_repetitive = b"aaaaaaaa"
40+
chaine_aleatoire = b"aze15io!"
41+
chaine_vide = b""
42+
43+
entropie_chaine_repetitive = calculer_entropie(chaine_repetitive)
44+
entropie_chaine_aleatoire = calculer_entropie(chaine_aleatoire)
45+
entropie_chaine_vide = calculer_entropie(chaine_vide)
46+
47+
self.assertGreater(entropie_chaine_repetitive, 0)
48+
self.assertEqual(entropie_chaine_vide, 0)
49+
self.assertGreater(entropie_chaine_aleatoire, entropie_chaine_repetitive)
4750

4851

4952
if __name__ == '__main__':

0 commit comments

Comments
 (0)