File : test_generic_list_ops.adb
with Ada.Text_IO; use Ada.Text_IO;
with Generic_List_Ops;
procedure Test_Generic_List_Ops is
type RGB is (R, G, B);
type RGB_Colour is array (RGB) of Boolean;
Darkness : constant RGB_Colour := (others => False);
Red : constant RGB_Colour := (R => True, others => False);
Green : constant RGB_Colour := (G => True, others => False);
Blue : constant RGB_Colour := (B => True, others => False);
function "+" (Left, Right : RGB_Colour) return RGB_Colour is
begin
return Left or Right;
end "+";
package Colour_List_Ops is new Generic_List_Ops (RGB_Colour);
use Colour_List_Ops;
function Colour_Sum is new Colour_List_Ops.Sum;
List_Of_All_Colours : constant List_Of_Elements := (Red, Green, Blue);
White : constant RGB_Colour := Colour_Sum (List_Of_All_Colours);
begin
if White = not Darkness then
Put ("Works!");
else
Put ("Does't work");
end if;
end Test_Generic_List_Ops;