summaryrefslogtreecommitdiff
path: root/src/unit_tests.adb
diff options
context:
space:
mode:
Diffstat (limited to 'src/unit_tests.adb')
-rw-r--r--src/unit_tests.adb99
1 files changed, 99 insertions, 0 deletions
diff --git a/src/unit_tests.adb b/src/unit_tests.adb
new file mode 100644
index 0000000..dc57e09
--- /dev/null
+++ b/src/unit_tests.adb
@@ -0,0 +1,99 @@
+
+
+with
+
+ Ada.Text_IO;
+
+use
+
+ Ada.Text_IO;
+
+
+package body Unit_Tests is
+
+
+ function Run_Test
+ (To_Run : in Test;
+ Verbose : in Verbosity := Weak)
+ return Test_Result
+ is
+ Result : Test_Result;
+ begin
+ if Verbose = Strong then
+ Put ("Running test " & (-To_Run.Name) & "...");
+ end if;
+ Result := To_Run.Func.all;
+ if Verbose = Strong then
+ if Result = Pass then
+ Put_Line (" Pass");
+ else
+ Put_Line (" Fail");
+ end if;
+ elsif Verbose = Weak and Result = Fail then
+ Put_Line ("Failed test " & (-To_Run.Name));
+ end if;
+ return Result;
+ end Run_Test;
+
+
+
+
+ procedure Run_Test
+ (To_Run : in Test;
+ Verbose : in Verbosity := Weak)
+ is
+ Result : Test_Result;
+ begin
+ Result := Run_Test (To_Run, Verbose);
+ end Run_Test;
+
+
+
+
+ function Run_Tests
+ (To_Run : in Test_Array;
+ Verbose : in Verbosity := Weak)
+ return Test_Result_Array
+ is
+ Total_Count : Natural := To_Run'Length;
+ Pass_Count : Natural := 0;
+ Results : Test_Result_Array (To_Run'Range);
+ begin
+ for R in To_Run'Range loop
+ Results (R) := Run_Test (To_Run (R), Verbose);
+ if Results (R) = Pass then
+ Pass_Count := Pass_Count + 1;
+ end if;
+ end loop;
+ if Verbose /= None then
+ Put_Line ("Test results" & Integer'Image (Pass_Count) &
+ " out of" & Integer'Image (Total_Count));
+ end if;
+ return Results;
+ end Run_Tests;
+
+
+
+
+ procedure Run_Tests
+ (To_Run : in Test_Array;
+ Verbose : in Verbosity := Weak)
+ is
+ Total_Count : Natural := To_Run'Length;
+ Pass_Count : Natural := 0;
+ begin
+ for T of To_Run loop
+ if Run_Test (T, Verbose) = Pass then
+ Pass_Count := Pass_Count + 1;
+ end if;
+ end loop;
+ if Verbose /= None then
+ Put_Line ("Test results" & Integer'Image (Pass_Count) &
+ " out of" & Integer'Image (Total_Count));
+ end if;
+ end Run_Tests;
+
+
+end Unit_Tests;
+
+