-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathunit-tests.py
73 lines (58 loc) · 2.11 KB
/
unit-tests.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
"""
Projet 2 : Ricosheep
Amal ABDALLAH
Nicolas SEBAN
Adam SOUIOU
"""
import unittest
import solveur
from typing import List
from os import path
from sys import setrecursionlimit
from glob import glob
from plateau import Plateau
setrecursionlimit(10**6)
join = lambda l : path.join(*l)
maps_impossibles = set(
map(join,
[ ['maps', 'custom', '1.txt'] ]
)
)
class TestSolveur(unittest.TestCase):
def testSolveurCorrect(self):
nb_tests = 0
for map_file in glob('maps/*/*.txt'):
if '__' in map_file: continue
with self.subTest():
print(f"Test avec {map_file}...")
plateau = Plateau(map_file, test_mode=True, duree_anime=0)
back = solveur.tri_copy(plateau.troupeau)
chemin, _ = solveur.profondeur(plateau)
if map_file in maps_impossibles:
self.assertTrue(
chemin is None,
f"Le solveur à renvoyé autre chose\
que None, alors que la map est insolvable, \
la map était {map_file}")
continue
else:
self.assertTrue(
chemin is not None,
f"Le chemin est None! la map était {map_file}")
solveur.restore(plateau.troupeau, back)
self.assertTrue(test(chemin, plateau) is True,
f"Le chemin n'est pas correct, la map était {map_file}")
nb_tests += 1
print(f"{nb_tests} tests ont été réalisés")
def test(chemin: List[str], plateau: Plateau) -> bool:
"""
Test le chemin donné par un solveur pour vérifier qu'il s'agit bien d'une solution.
:param List[str] chemin: Liste des directions amenant vers la solution
:param Plateau plateau: Plateau de jeu
:param bool unittest:
"""
for mouv in chemin:
plateau.deplace_moutons(mouv, solveur=True)
return plateau.isGagne()
if __name__ == '__main__':
unittest.main()