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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
|
PUSH_SWAP correction
Partie obligatoire
Rappel : si a un moment ou un autre, le programme ne réagit pas correctement (bus error, segfault, etc..), ou bien si vous détectez une fuite mémoire, la soutenance est terminée et la note est 0. Pensez à utiliser les flags correspondants quand nécessaire. Cette consigne est active d'un bout à l'autre de la soutenance.
Fuites mémoire
Pendant toute la durée de la soutenance, gardez un oeil sur la
quantité de mémoire utilisée par le push_swap (à l'aide de
top par exemple) pour detecter des anomalies, et vérifiez dans
le code que les allocations sont systématiquement libérées.
Dans le cas contraire il y a au moins une fuite mémoire, la
note du projet est 0.
Yes
No
Gestion des erreurs
Dans cette section nous allons évaluer la bonne gestion des
erreurs de votre push_swap.
Si au moins l'un des tests échoue, aucun point n'est gagné
pour cette question. Passez à la question suivante.
- Lancer push_swap avec des paramètres non numériques. Le programme
doit afficher "Error".
- Lancer push_swap avec un doublon dans les paramètres. Le programme
doit afficher "Error".
- Lancer push_swap avec seulement des nombres en paramètre, l'un d'entre
eux étant supérieur à MAXINT. Le programme doit afficher "Error".
- Lancer push_swap avec aucun paramètre. Le programme ne doit rien afficher,
se terminer, et le shell affiche son prompt.
Yes
No
Push_swap - Identité
Nous allons évaluer dans cette section le comportement du
programme push_swap sur une liste de paramètres déja triés.
Effectuez les 3 tests suivants. Si l'un au moins de ces tests
échoue, cette section du barème est échouée et aucun point
n'est gagné, passez à la suivante.
- Lancez "$>./push_swap 42". Le programme affiché doit être
vide (0 instruction).
- Lancez "$>./push_swap 0 1 2 3". Le programme affiché doit
être vide (0 instruction).
- Lancez "$>./push_swap 0 1 2 3 4 5 6 7 8 9". Le programme
affiché doit être vide (0 instruction).
Yes
No
Push_swap - tests simples
Si le test suivant échoue, cette section du barème est
échouée et aucun point n'est gagné, passez à la suivante.
- Lancez "$>ARG="2 1 0"; ./push_swap $ARG | ./checker_OS $ARG".
Vérifiez que le programme checker affiche OK que la taille
du programme calculé par le programme push_swap est de 2 OU
3 instructions. Sinon le test est échoué.
Yes
No
D'autres tests tout aussi simples
Si l'un des 2 tests suivants échoue, cette section du barème
est échouée et aucun point n'est gagné, passez à la
suivante.
- Lancez "$>ARG="1 5 2 4 3"; ./push_swap $ARG | ./checker_OS $ARG". Vérifiez que le programme checker affiche OK et que
la taille du programme calculé par le programme push_swap
est de 12 instructions au maximum. Sinon le test est
échoué. Kudos pour la personne évaluée si la taille
programme est de 8 instructions.
- Lancez "$>ARG="<5 params au choix>"; ./push_swap $ARG | ./checker_OS $ARG" en remplacant le placeholder par 5 valeurs
valides de votre choix. Vérifiez que le programme checker
affiche OK et que la taille du programme calculé par le
programme push_swap est de 12 instructions au maximum. Sinon
le test est échoué. Vous devez en particulier vérifier
avec ce test que le programme push_swap n'a pas été
programmé pour répondre correctement uniquement aux tests
de ce barème. Vous êtes encouragés à répéter ce test
avec plusieurs variantes avant de le valider.
Yes
No
Push_swap - tests intermédiaires
Si le test suivant échoue, cette section du barème est
échouée et aucun point n'est gagné, passez à la suivante.
- Lancez "$>ARG="<100 params au choix>"; ./push_swap $ARG | ./checker_OS $ARG" en remplacant le placeholder par 100 valeurs
valides de votre choix. Vérifiez que le programme checker
affiche OK et mettez des points en fonction du nombre
d'instructions effectuées:
- Moins de 700: 5
- Moins de 900: 4
- Moins de 1100: 3
- Moins de 1300: 2
- Moins de 1500: 1
Vous devez en particulier vérifier
avec ce test que le programme push_swap n'a pas été
programmé pour répondre correctement uniquement aux
tests de ce barème. Vous êtes encouragés à répéter
ce test avec plusieurs variantes avant de le valider.
Rate it from 0 (failed) through 5 (excellent)
Push_swap - tests avancés
Si le test suivant échoue, cette section du barème est
échouée et aucun point n'est gagné, passez à la suivante.
- Lancez "$>ARG="<500 params au choix>"; ./push_swap $ARG | ./checker_OS $ARG" en remplacant le placeholder par 500 valeurs
valides de votre choix (on vous appelle pas
Jean(ne)-Michel(le) Script pour rien). Vérifiez que le
programme checker affiche OK et mettez des points en
fonction du nombre d'instructions effectuées:
- Moins de 5500: 5
- Moins de 7000: 4
- Moins de 8500: 3
- Moins de 10000: 2
- Moins de 11500: 1 Vous devez en particulier vérifier
avec ce test que le programme push_swap n'a pas été
programmé pour répondre correctement uniquement aux
tests de ce barème. Vous êtes encouragés à répéter
ce test avec plusieurs variantes avant de le valider.
Rate it from 0 (failed) through 5 (excellent)
Bonus
Rappel : si a un moment ou un autre, le programme ne réagit pas correctement (bus error, segfault, etc..), la soutenance est terminée et la note est 0. Pensez à utiliser les flags correspondants. Cette consigne est active d'un bout à l'autre de la soutenance. Les bonus ne doivent être évalués que si et seulement si la partie obligatoire est PARFAITE. Par PARFAITE, on entend bien évidemment qu'elle est entièrement réalisée, qu'il n'est pas possible de mettre son comportement en défaut, même en cas d'erreur, aussi vicieuse soit-elle, de mauvaise utilisation, etc. Concrètement, cela signifie que si la partie obligatoire n'a pas obtenu TOUS les points pendant cette soutenance, les bonus doivent être intégralement IGNORÉS.
Checker - gestion des erreurs
Nous allons évaluer dans cette section la gestion d'erreur du
programme checker. Effectuez les tests suivants. Si l'un au
moins de ces tests échoue, cette section du barème est
échouée et aucun point n'est gagné, passez à la suivante.
- Lancez checker avec des paramètres non numériques. Le
programme doit afficher "Error".
- Lancez checker avec 2 fois le même paramètre numérique. Le
programme doit afficher "Error".
- Lancez checker avec uniquement des paramètres numériques
dont l'un plus grand que MAXINT. Le programme doit afficher
"Error".
- Lancez checker sans aucun paramètre. Le programme doit rendre
la main et ne rien afficher.
- Lancez checker avec des paramètres valides, puis au moment
d'entrer les insctructions à exécuter, entrez des
instructions qui n'existent pas. Le programme doit afficher
"Error".
- Lancez checker avec des paramètres valides, puis au moment
d'entrer les insctructions à exécuter, entrez des
instructions valides, mais précédez les et terminez les avec
un ou plusieurs espaces. Le programme doit afficher "Error".
Yes
No
Checker - tests des faux résultats
Nous allons évaluer dans cette section le comportement du
programme checker lorsque le programme lu ne trie pas la liste.
Effectuez les 2 tests suivants. Si l'un au moins de ces tests
échoue, cette section du barème est échouée et aucun point
n'est gagné, passez à la suivante.
N'oubliez pas d'appuyer sur ctrl+d pour arrêter la lecture une
fois que vous avez fini d'entrer les instructions.
- Lancez checker avec la commande "$>./checker 0 9 1 8 2 7 3 6 4 5" puis entrez les instructions suivantes avec un formatage
valide : [sa, pb, rrr]. Le programme checker doit afficher
"KO".
- Lancez checker avec une liste de paramètres valides de votre
choix, puis entrez les instructions de votre choix avec un
formatage valide, mais qui ne permettent pas de trier les
entiers. Le programme checker doit afficher "KO". Vous devez
en particulier vérifier avec ce test que le programme checker
n'a pas été programmé pour répondre correctement
uniquement aux tests de ce barème. Vous êtes encouragés à
répéter ce test avec plusieurs variantes avant de le
valider.
Yes
No
Checker - test des résultats corrects
Nous allons évaluer dans cette section le comportement du
programme checker lorsque le programme lu trie la liste.
Effectuez les tests suivants. Si l'un au moins de ces tests
échoue, cette section du barème est échouée et aucun point
n'est gagné, passez à la suivante.
N'oubliez pas d'appuyer sur ctrl+d pour arrêter la lecture une
fois que vous avez fini d'entrer les instructions.
- Lancez checker avec la commande "$>./checker 0 1 2" puis
appuyez sur ctrl+d sans entrer d'instructions. Le programme
checker doit afficher "OK".
- Lancez checker avec la commande "$>./checker 0 9 1 8 2" puis
entrez les instructions suivantes avec un formatage valide :
[pb, ra, pb, ra, sa, ra, pa, pa]. Le programme checker doit
afficher "OK".
- Lancez checker avec une liste de paramètres valides de votre
choix, puis entrez les instructions de votre choix avec un
formatage valide qui permettent de trier les entiers. Le
programme checker doit afficher "OK". Vous devez en
particulier vérifier avec ce test que le programme checker
n'a pas été programmé pour répondre correctement
uniquement aux tests de ce barème. Vous êtes encouragés à
répéter ce test avec plusieurs variantes avant de le
valider.
|