diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/unit_tests.adb | 99 | ||||
-rw-r--r-- | src/unit_tests.ads | 66 |
2 files changed, 165 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; + + diff --git a/src/unit_tests.ads b/src/unit_tests.ads new file mode 100644 index 0000000..473b828 --- /dev/null +++ b/src/unit_tests.ads @@ -0,0 +1,66 @@ + + +with + + Ada.Strings.Unbounded; + + +package Unit_Tests is + + + type Verbosity is (None, Weak, Strong); + + + + + type Test_Result is (Fail, Pass); + + type Test_Function is access function return Test_Result; + + type Test is record + Name : Ada.Strings.Unbounded.Unbounded_String; + Func : Test_Function; + end record; + + type Test_Array is array (Positive range <>) of Test; + + type Test_Result_Array is array (Positive range <>) of Test_Result; + + + + + function Run_Test + (To_Run : in Test; + Verbose : in Verbosity := Weak) + return Test_Result; + + procedure Run_Test + (To_Run : in Test; + Verbose : in Verbosity := Weak); + + function Run_Tests + (To_Run : in Test_Array; + Verbose : in Verbosity := Weak) + return Test_Result_Array; + + procedure Run_Tests + (To_Run : in Test_Array; + Verbose : in Verbosity := Weak); + + + + + function "+" + (S : in String) + return Ada.Strings.Unbounded.Unbounded_String + renames Ada.Strings.Unbounded.To_Unbounded_String; + + function "-" + (US : in Ada.Strings.Unbounded.Unbounded_String) + return String + renames Ada.Strings.Unbounded.To_String; + + +end Unit_Tests; + + |