summaryrefslogtreecommitdiff
path: root/src/unit_tests.adb
diff options
context:
space:
mode:
authorJed Barber <jjbarber@y7mail.com>2020-05-19 15:22:55 +1000
committerJed Barber <jjbarber@y7mail.com>2020-05-19 15:22:55 +1000
commit196a1a2443b8a66784d293120ee64840ee87f02e (patch)
tree98f36e8d72aecd40be8fb5c767f915966d57fd8a /src/unit_tests.adb
Factored out and improved slightly from Packrat project
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;
+
+