aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/ada/acats/tests/c9/c954026.a
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/ada/acats/tests/c9/c954026.a')
-rw-r--r--gcc/testsuite/ada/acats/tests/c9/c954026.a269
1 files changed, 0 insertions, 269 deletions
diff --git a/gcc/testsuite/ada/acats/tests/c9/c954026.a b/gcc/testsuite/ada/acats/tests/c9/c954026.a
deleted file mode 100644
index 881b74af81c..00000000000
--- a/gcc/testsuite/ada/acats/tests/c9/c954026.a
+++ /dev/null
@@ -1,269 +0,0 @@
--- C954026.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 if the original protected entry call was a conditional
--- entry call, the call is cancelled if a requeue-with-abort of the
--- call is not selected immediately.
--- Check that if the original protected entry call was a timed entry
--- call, the expiration time for a requeue-with-abort is the original
--- expiration time.
---
--- TEST DESCRIPTION:
--- In this test the main task makes a variety of calls to the protected
--- object Initial_PO. These calls include a simple call, a conditional
--- call, and a timed call. The timed calls include calls with enough
--- time and those with less than the needed amount of time to get through
--- the requeue performed by Initial_PO.
--- Initial_PO requeues its entry call to Final_PO.
--- Final_PO does not accept the requeued call until the protected
--- procedure Ok_To_Take_Requeue is called.
--- A separate task, Delayed_Opener, is used to call Ok_To_Take_Requeue
--- after a delay amount specified by the main task has expired.
---
---
--- CHANGE HISTORY:
--- 15 DEC 95 SAIC ACVC 2.1
--- 10 JUL 96 SAIC Incorporated reviewer comments.
--- 10 OCT 96 SAIC Incorporated fix provided by vendor.
---
---!
-
-with Calendar;
-use type Calendar.Time;
-with Report;
-with Impdef;
-procedure C954026 is
- Verbose : constant Boolean := False;
- Final_Po_Reached : Boolean := False;
- Allowed_Time : constant Duration := 2.0 * Impdef.One_Second;
- Plenty_Of_Time : constant Duration :=
- Allowed_Time + Impdef.Clear_Ready_Queue + 1.0 * Impdef.One_Second;
- Not_Enough_Time : constant Duration := Allowed_Time - 0.5 * Impdef.One_Second;
-begin
- Report.Test ("C954026",
- "Check that if the original entry" &
- " call was a conditional or timed entry call," &
- " the expiration time for a requeue with" &
- " abort to a protected" &
- " entry is the original expiration time");
- declare
-
- protected Initial_Po is
- entry Start_Here;
- end Initial_Po;
-
- protected Final_Po is
- entry Requeue_Target;
- procedure Ok_To_Take_Requeue;
- procedure Close_Requeue;
- private
- Open : Boolean := False;
- end Final_Po;
-
- -- the Delayed_Opener task is used to notify Final_PO that it can
- -- accept the Requeue_Target entry.
- task Delayed_Opener is
- entry Start_Timer (Amt : Duration);
- entry Cancel_Timer;
- end Delayed_Opener;
-
- task body Delayed_Opener is
- Wait_Amt : Duration;
- begin
- loop
- accept Start_Timer (Amt : Duration) do
- Wait_Amt := Amt;
- end Start_Timer;
- exit when Wait_Amt < 0.0;
- if Verbose then
- Report.Comment ("Timer started");
- end if;
- select
- accept Cancel_Timer do
- Final_Po.Close_Requeue;
- end Cancel_Timer;
- or
- delay Wait_Amt;
- Final_Po.Ok_To_Take_Requeue;
- accept Cancel_Timer do
- Final_Po.Close_Requeue;
- end Cancel_Timer;
- end select;
- end loop;
- exception
- when others =>
- Report.Failed ("exception in Delayed_Opener");
- end Delayed_Opener;
-
- protected body Initial_Po is
- entry Start_Here when True is
- begin
- Final_Po_Reached := False;
- requeue Final_Po.Requeue_Target with abort;
- end Start_Here;
- end Initial_Po;
-
- protected body Final_Po is
- entry Requeue_Target when Open is
- begin
- Open := False;
- Final_Po_Reached := True;
- end Requeue_Target;
-
- procedure Ok_To_Take_Requeue is
- begin
- Open := True;
- end Ok_To_Take_Requeue;
-
- procedure Close_Requeue is
- begin
- Open := False;
- end Close_Requeue;
- end Final_Po;
-
- begin -- test encapsulation
- -- unconditional entry call to check the simple case
- Delayed_Opener.Start_Timer (0.0);
- Initial_Po.Start_Here;
- if Final_Po_Reached then
- if Verbose then
- Report.Comment ("simple case passed");
- end if;
- else
- Report.Failed ("simple case");
- end if;
- Delayed_Opener.Cancel_Timer;
-
-
- -- timed but with plenty of time - delay relative
- Delayed_Opener.Start_Timer (Allowed_Time);
- select
- Initial_Po.Start_Here;
- or
- delay Plenty_Of_Time;
- Report.Failed ("plenty of time timed out (1)");
- if Final_Po_Reached then
- Report.Failed (
- "plenty of time timed out after accept (1)");
- end if;
- end select;
- if Final_Po_Reached then
- if Verbose then
- Report.Comment ("plenty of time case passed (1)");
- end if;
- else
- Report.Failed ("plenty of time (1)");
- end if;
- Delayed_Opener.Cancel_Timer;
-
-
- -- timed but with plenty of time -- delay until
- Delayed_Opener.Start_Timer (Allowed_Time);
- select
- Initial_Po.Start_Here;
- or
- delay until Calendar.Clock + Plenty_Of_Time;
- Report.Failed ("plenty of time timed out (2)");
- if Final_Po_Reached then
- Report.Failed (
- "plenty of time timed out after accept(2)");
- end if;
- end select;
- if Final_Po_Reached then
- if Verbose then
- Report.Comment ("plenty of time case passed (2)");
- end if;
- else
- Report.Failed ("plenty of time (2)");
- end if;
- Delayed_Opener.Cancel_Timer;
-
-
- -- timed without enough time - delay relative
- Delayed_Opener.Start_Timer (Allowed_Time);
- select
- Initial_Po.Start_Here;
- Report.Failed ("not enough time completed accept (1)");
- or
- delay Not_Enough_Time;
- end select;
- if Final_Po_Reached then
- Report.Failed ("not enough time (1)");
- else
- if Verbose then
- Report.Comment ("not enough time case passed (1)");
- end if;
- end if;
- Delayed_Opener.Cancel_Timer;
-
-
- -- timed without enough time - delay until
- Delayed_Opener.Start_Timer (Allowed_Time);
- select
- Initial_Po.Start_Here;
- Report.Failed ("not enough time completed accept (2)");
- or
- delay until Calendar.Clock + Not_Enough_Time;
- end select;
- if Final_Po_Reached then
- Report.Failed ("not enough time (2)");
- else
- if Verbose then
- Report.Comment ("not enough time case passed (2)");
- end if;
- end if;
- Delayed_Opener.Cancel_Timer;
-
-
- -- conditional case
- Delayed_Opener.Start_Timer (Allowed_Time);
- select
- Initial_Po.Start_Here;
- Report.Failed ("no time completed accept");
- else
- if Verbose then
- Report.Comment ("conditional case - else taken");
- end if;
- end select;
- if Final_Po_Reached then
- Report.Failed ("no time");
- else
- if Verbose then
- Report.Comment ("no time case passed");
- end if;
- end if;
- Delayed_Opener.Cancel_Timer;
-
- -- kill off the Delayed_Opener task
- Delayed_Opener.Start_Timer (-10.0);
-
- exception
- when others =>
- Report.Failed ("exception in main");
- end;
-
- Report.Result;
-end C954026;