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;