TP-programmation-imperative/td07/test_piles.adb
2023-06-10 21:03:54 +02:00

110 lines
2.9 KiB
Ada
Executable file

with Piles;
-- Programme de test du module Pile.
procedure Test_Piles is
package Pile_Caractere is
new Piles (Capacite => 3, T_Element => Character);
use Pile_Caractere;
-- Initialiser une pile avec 'O' puis 'K' empilés dans la pile vide.
procedure Initialiser_Avec_OK (Pile : out T_Pile) is
begin
Initialiser (Pile);
Empiler (Pile, 'O');
Empiler (Pile, 'K');
end Initialiser_Avec_OK;
procedure Tester_Est_Vide is
Pile1, Pile2 : T_Pile;
begin
Initialiser (Pile1);
pragma Assert (Est_Vide (Pile1));
Empiler (Pile1, 'A');
pragma Assert (not Est_Vide (Pile1));
Initialiser_Avec_OK (Pile2);
pragma Assert (not Est_Vide (Pile2));
end Tester_Est_Vide;
procedure Tester_Empiler is
Pile1 : T_Pile;
begin
Initialiser_Avec_OK (Pile1);
pragma Assert (not Est_Pleine (Pile1));
Empiler (Pile1, 'N');
pragma Assert ('N' = Sommet (Pile1));
pragma Assert (Est_Pleine (Pile1));
end Tester_Empiler;
procedure Tester_Depiler is
Pile1 : T_Pile;
begin
Initialiser_Avec_OK (Pile1);
Depiler (Pile1);
pragma Assert ('O' = Sommet (Pile1));
Depiler (Pile1);
pragma Assert (Est_Vide (Pile1));
end Tester_Depiler;
procedure Tester_Depiler_Pile_Vide_Exception is
Pile : T_Pile;
begin
Initialiser (Pile);
Depiler (Pile);
pragma Assert (False); --! On ne devrait pas arriver ici !
exception
when Pile_Vide_Error =>
null; --! C'est bien l'exception attendue !
when others =>
pragma Assert (False); --! Ce n'est pas l'exception attendue !
end Tester_Depiler_Pile_Vide_Exception;
procedure Tester_Sommet_Pile_Vide_Exception is
Pile : T_Pile;
Element: Character;
begin
Initialiser (Pile);
Element := Sommet (Pile);
pragma Assert (False); --! On ne devrait pas arriver ici !
pragma Assert ('0' = Element); --! Pour éviter le message d'avertissement !
exception
when Pile_Vide_Error =>
null; --! C'est bien l'exception attendue !
when others =>
pragma Assert (False); --! Ce n'est pas l'exception attendue !
end Tester_Sommet_Pile_Vide_Exception;
procedure Tester_Empiler_Pile_Pleine_Exception is
Pile : T_Pile;
begin
Initialiser (Pile);
loop
Empiler (Pile, 'x');
end loop;
exception
when Pile_Pleine_Error =>
null; --! C'est bien l'exception attendue !
when others =>
pragma Assert (False); --! Ce n'est pas l'exception attendue !
end Tester_Empiler_Pile_Pleine_Exception;
begin
Tester_Est_Vide;
Tester_Empiler;
Tester_Depiler;
Tester_Depiler_Pile_Vide_Exception;
Tester_Sommet_Pile_Vide_Exception;
Tester_Empiler_Pile_Pleine_Exception;
end Test_Piles;