107 lines
3.1 KiB
Ada
107 lines
3.1 KiB
Ada
-- Auteurs : P. E.
|
|
-- Version du 30/01/2019
|
|
|
|
with Ada.Text_Io, Piles_Entiers, Afficher_Test;
|
|
use Ada.Text_Io, Piles_Entiers;
|
|
|
|
procedure Tests_Piles_Entiers is
|
|
begin
|
|
---------------------------------------------------------
|
|
-- 1. Tests apres la declaration et acces a une pile vide
|
|
---------------------------------------------------------
|
|
Put_Line("Test 1 : apres Declaration d'une pile P");
|
|
declare
|
|
P : Pile;
|
|
begin
|
|
Afficher_Test("Est_Vide(P) ?", "TRUE", Boolean'Image(Est_Vide(P)));
|
|
Afficher_Test("Hauteur(P) ?", "0 ", Integer'Image(Hauteur(P)));
|
|
Afficher_Test("To_String(P) ?", " ", To_String(P));
|
|
end;
|
|
New_Line;
|
|
Put_Line("Test 2: Tentative d'acces au sommet d'une pile vide");
|
|
declare
|
|
P : Pile;
|
|
Nb : Integer;
|
|
begin
|
|
Nb := Sommet(P);
|
|
Afficher_Test("Sommet(P) ?", "levee exception", Integer'Image(Nb));
|
|
Put_Line("bizarre ... l'exception n'a pas ete levee ... ");
|
|
exception
|
|
when Pile_Vide =>
|
|
Put_Line("ok, l'exception Pile_Vide a ete levee !!");
|
|
end;
|
|
|
|
---------------------
|
|
-- 2. Tests d'empiler
|
|
---------------------
|
|
declare
|
|
P : Pile;
|
|
begin
|
|
New_Line;
|
|
Put_Line("Test 3 : Empiler 10 entiers ");
|
|
for I in 2..12 loop
|
|
Empiler(I, P);
|
|
end loop;
|
|
Put_Line(To_String(P));
|
|
end;
|
|
|
|
--------------------------------
|
|
-- 3. Tests de Depiler et Sommet
|
|
--------------------------------
|
|
declare
|
|
P : Pile;
|
|
Nb : Integer;
|
|
begin
|
|
-- Empiler 10 elements
|
|
Init(P);
|
|
for I in 1..10 loop
|
|
Empiler(I, P);
|
|
end loop;
|
|
New_Line;
|
|
Put_Line("Test 4: Affichage du sommet et depilement pendant 10 fois ...");
|
|
|
|
-- Verifier que la pile est bien vide apres 10 appels a Depiler
|
|
for J in 1..10 loop
|
|
Depiler(P);
|
|
end loop;
|
|
if Est_Vide(P) then
|
|
Put_Line("La pile est vide");
|
|
else
|
|
Put_Line("TEST 4 FAUTIF");
|
|
--raise PROGRAM_ERROR;
|
|
end if;
|
|
New_Line;
|
|
Put_Line("Test 5: Tentative de depilement d'une pile vide ...");
|
|
Init(P);
|
|
Depiler(P);
|
|
end;
|
|
|
|
-----------------------------------
|
|
-- 4. Test sur l'egalite de 2 piles
|
|
-----------------------------------
|
|
Put_Line("Test 6 : Initialisation de 2 piles P1 et P2, et comparaison, ajout de 10 elements et comparaison");
|
|
declare
|
|
P1, P2 : Pile;
|
|
begin
|
|
null;
|
|
-- P1 et P2 viennent d'etre declarees, elles sont donc vides
|
|
-- Verifier qu'elles sont identiques (P1=P2)
|
|
New_Line;
|
|
Put_Line("Test 6 : Deux piles vides sont-elles identiques ?");
|
|
if P1 = P2 then
|
|
Put_Line("Elles sont identiques");
|
|
end if;
|
|
New_Line;
|
|
Put_line("On empile desormais 10 entiers 1..10 sur les 2 piles");
|
|
for I in 2..11 loop
|
|
Empiler(I, P1);
|
|
Empiler(I, P2);
|
|
Put_Line("On empile sur P1 et P2 : " & Integer'Image(I));
|
|
end loop;
|
|
New_Line;
|
|
Put_Line("Test 7 : Deux piles contenant 1..10 sont-elles identiques ?");
|
|
if P1 = P2 then
|
|
Put_Line("Identiques");
|
|
end if;
|
|
end;
|
|
end Tests_Piles_Entiers;
|