-- 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;