with Ada.Exceptions;
with Ada.Text_IO;
package body WL.Unit is
procedure Append
(To : in out Test_Suite;
Test : Unit_Test'Class)
is
begin
To.List.Append
(Unit_Test_Record'
(Test => Unit_Test_Holders.To_Holder (Test),
Result => Test_Result_Holders.Empty_Holder));
end Append;
---------------
-- Run_Tests --
---------------
procedure Run_Tests
(Suite : in out Test_Suite;
Success : out Natural;
Failure : out Natural;
Error : out Natural;
Not_Run : out Natural)
is
begin
Success := 0;
Failure := 0;
Error := 0;
Not_Run := 0;
for Item of Suite.List loop
begin
declare
Result : constant Test_Result :=
Item.Test.Element.Try;
begin
Item.Result := Test_Result_Holders.To_Holder (Result);
if Is_Success (Result) then
Success := Success + 1;
if Suite.Is_Verbose then
Ada.Text_IO.Put_Line (Item.Test.Element.Name
& ": OK");
end if;
else
Ada.Text_IO.Put_Line (Item.Test.Element.Name
& ": expected "
& Expected (Result));
Ada.Text_IO.Put_Line (Item.Test.Element.Name
& ": found "
& Found (Result));
Failure := Failure + 1;
end if;
end;
exception
when E : others =>
Item.Result :=
Test_Result_Holders.To_Holder
(Test_Error (Ada.Exceptions.Exception_Message (E)));
Error := Error + 1;
Ada.Text_IO.Put_Line (Item.Test.Element.Name
& ": error: "
& Error_Message (Item.Result.Element));
end;
end loop;
end Run_Tests;
-------------
-- Verbose --
-------------
procedure Verbose
(Suite : in out Test_Suite;
Enabled : Boolean := True)
is
begin
Suite.Is_Verbose := Enabled;
end Verbose;
end WL.Unit;