diff options
Diffstat (limited to 'gcc/testsuite/ada/acats/tests/c9/c974002.a')
-rw-r--r-- | gcc/testsuite/ada/acats/tests/c9/c974002.a | 209 |
1 files changed, 0 insertions, 209 deletions
diff --git a/gcc/testsuite/ada/acats/tests/c9/c974002.a b/gcc/testsuite/ada/acats/tests/c9/c974002.a deleted file mode 100644 index 1138e8da3bc..00000000000 --- a/gcc/testsuite/ada/acats/tests/c9/c974002.a +++ /dev/null @@ -1,209 +0,0 @@ --- C974002.A --- --- Grant of Unlimited Rights --- --- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687, --- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained --- unlimited rights in the software and documentation contained herein. --- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making --- this public release, the Government intends to confer upon all --- recipients unlimited rights equal to those held by the Government. --- These rights include rights to use, duplicate, release or disclose the --- released technical data and computer software in whole or in part, in --- any manner and for any purpose whatsoever, and to have or permit others --- to do so. --- --- DISCLAIMER --- --- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR --- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED --- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE --- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE --- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A --- PARTICULAR PURPOSE OF SAID MATERIAL. ---* --- --- OBJECTIVE: --- Check that the sequence of statements of the triggering alternative --- of an asynchronous select statement is executed if the triggering --- statement is a delay_until statement, and the specified time has --- already passed. Check that the abortable part is not executed after --- the sequence of statements of the triggering alternative is left. --- --- Check that the sequence of statements of the triggering alternative --- of an asynchronous select statement is not executed if the abortable --- part completes before the triggering statement, and the triggering --- statement is a delay_until statement. --- --- TEST DESCRIPTION: --- Declare a task with an accept statement containing an asynchronous --- select with a delay_until triggering statement. Parameterize --- the accept statement with the time to be used in the delay. Simulate --- a quick calculation by declaring a procedure which sets a Boolean --- flag. Call this procedure in the abortable part. --- --- Make two calls to the task entry: (1) with a time that has already --- expired, and (2) with a time that will not expire before the quick --- calculation completes. --- --- For (1), the sequence of statements following the triggering statement --- is executed, and the abortable part never starts. --- --- For (2), the abortable part completes before the triggering statement, --- the delay is canceled, and the sequence of statements following the --- triggering statement never starts. --- --- --- CHANGE HISTORY: --- 06 Dec 94 SAIC ACVC 2.0 --- 26 Nov 95 SAIC Bug fix for ACVC 2.0.1. --- ---! - -with Report; -with Ada.Calendar; -with ImpDef; -procedure C974002 is - - function "-" (Left: Ada.Calendar.Time; Right: Duration ) - return Ada.Calendar.Time renames Ada.Calendar."-"; - function "+" (Left: Ada.Calendar.Time; Right: Duration ) - return Ada.Calendar.Time renames Ada.Calendar."+"; - - Abortable_Part_Executed : Boolean; - Triggering_Alternative_Executed : Boolean; - - - --========================================================-- - - - procedure Quick_Calculation is - begin - if Report.Equal (1, 1) then - Abortable_Part_Executed := True; - end if; - end Quick_Calculation; - - - --========================================================-- - - - task type Timed_Calculation_Task is - entry Calculation (Time_Out : in Ada.Calendar.Time); - end Timed_Calculation_Task; - - - task body Timed_Calculation_Task is - begin - loop - select - accept Calculation (Time_Out : in Ada.Calendar.Time) do - - -- -- - -- Asynchronous select is tested here -- - -- -- - - select - delay until Time_Out; -- Triggering - -- statement. - - Triggering_Alternative_Executed := True; -- Triggering - -- alternative. - then abort - Quick_Calculation; -- Abortable part. - end select; - end Calculation; - or - terminate; - end select; - end loop; - exception - when others => - Report.Failed ("Unexpected exception in Timed_Calculation_Task"); - end Timed_Calculation_Task; - - - --========================================================-- - - - Start_Time : constant Ada.Calendar.Time := - Ada.Calendar.Time_of (1901,1,1); - Minute : constant Duration := 60.0; - - - --========================================================-- - - -begin -- Main program. - - Report.Test ("C974002", "Asynchronous Select with Delay_Until"); - - -- take care of implementations that start the clock at 1/1/01 - delay ImpDef.Delay_For_Time_Past; - - - Abortable_Part_Executed := False; - Triggering_Alternative_Executed := False; - - NO_DELAY_SUBTEST: - - declare - -- Set Expiry to a time which has already passed - Expiry : constant Ada.Calendar.Time := Start_Time; - Timed : Timed_Calculation_Task; - begin - - -- Expiry is the time to be specified in the delay_until statement - -- of the asynchronous select. Since it has already passed, the - -- abortable part should not execute, and the sequence of statements - -- of the triggering alternative should be executed. - - Timed.Calculation (Time_Out => Expiry); -- Asynchronous select - -- inside accept block. - if Abortable_Part_Executed then - Report.Failed ("No delay: Abortable part was executed"); - end if; - - if not Triggering_Alternative_Executed then - Report.Failed ("No delay: triggering alternative sequence " & - "of statements was not executed"); - end if; - end No_Delay_Subtest; - - - Abortable_Part_Executed := False; - Triggering_Alternative_Executed := False; - - LONG_DELAY_SUBTEST: - - declare - - -- Quick_Calculation should finish before expiry. - Expiry : constant Ada.Calendar.Time := - Ada.Calendar.Clock + Minute; - Timed : Timed_Calculation_Task; - - begin - - -- Expiry is the time to be specified in the delay_until statement - -- of the asynchronous select. It should not pass before the abortable - -- part completes, at which time control should return to the caller; - -- the sequence of statements of the triggering alternative should - -- not be executed. - - Timed.Calculation (Time_Out => Expiry); -- Asynchronous select. - - if not Abortable_Part_Executed then - Report.Failed ("Long delay: Abortable part was not executed"); - end if; - - if Triggering_Alternative_Executed then - Report.Failed ("Long delay: triggering alternative sequence " & - "of statements was executed"); - end if; - end Long_Delay_Subtest; - - - Report.Result; - -end C974002; |