| -- { dg-do run } |
| |
| with Ada.Real_Time.Timing_Events; |
| use Ada.Real_Time, Ada.Real_Time.Timing_Events; |
| |
| procedure Timer_Cancel is |
| |
| E : Timing_Event; |
| C : Boolean; |
| |
| protected Dummy is |
| procedure Trigger (Event : in out Timing_Event); |
| end Dummy; |
| |
| protected body Dummy is |
| procedure Trigger (Event : in out Timing_Event) is |
| begin |
| null; |
| end Trigger; |
| end Dummy; |
| |
| begin |
| Set_Handler (E, Time_Last, Dummy.Trigger'Unrestricted_Access); |
| |
| if Time_Of_Event (E) /= Time_Last then |
| raise Program_Error with "Event time not set correctly"; |
| end if; |
| |
| Cancel_Handler (E, C); |
| |
| if not C then |
| raise Program_Error with "Event triggered already"; |
| end if; |
| |
| if Time_Of_Event (E) /= Time_First then |
| raise Program_Error with "Event time not reset correctly"; |
| end if; |
| end Timer_Cancel; |