110 lines
2.9 KiB
Ada
Executable file
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;
|