aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/ada/acats/tests/c9/c960004.a
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/ada/acats/tests/c9/c960004.a')
-rw-r--r--gcc/testsuite/ada/acats/tests/c9/c960004.a206
1 files changed, 0 insertions, 206 deletions
diff --git a/gcc/testsuite/ada/acats/tests/c9/c960004.a b/gcc/testsuite/ada/acats/tests/c9/c960004.a
deleted file mode 100644
index f394aab66fc..00000000000
--- a/gcc/testsuite/ada/acats/tests/c9/c960004.a
+++ /dev/null
@@ -1,206 +0,0 @@
--- C960004.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:
--- With the triggering statement being a delay and with the Asynchronous
--- Select statement being in a tasking situation complete the abortable
--- part before the delay expires. Check that the delay is cancelled
--- and that the optional statements in the triggering part are not
--- executed.
---
--- TEST DESCRIPTION:
--- Simulate the creation of a carrier task to control the output of
--- a message via a line driver. If the message sending process is
--- not complete (the completion of the rendezvous) within a
--- specified time the carrier task is designed to take corrective action.
--- Use an asynchronous select to control the timing; arrange that
--- the abortable part (the rendezvous) completes almost immediately.
--- Check that the optional statements are not executed and that the
--- test completes well before the time of the trigger delay request thus
--- showing that it has been cancelled.
---
---
--- CHANGE HISTORY:
--- 06 Dec 94 SAIC ACVC 2.0
---
---!
-
-
-with Report;
-with Ada.Calendar;
-
-procedure C960004 is
-
- function "-" (Left, Right : Ada.Calendar.Time)
- return Duration renames Ada.Calendar."-";
- TC_Start_Time : Ada.Calendar.Time := Ada.Calendar.Clock;
- TC_Elapsed_Time : duration;
-
- -- Note: a properly executing test will complete immediately.
- Allowable_ACK_Time : duration := 600.0;
-
-begin
-
- Report.Test ("C960004", "ATC: When abortable part completes before " &
- "a triggering delay, check that the delay " &
- "is cancelled & optional statements " &
- "are not performed. Tasking situation");
-
- declare -- To get the Report.Result after all has completed
-
- type Sequence_Number is range 1..1_999_999; -- Message Number
- subtype S_length_subtype is integer range 1..80;
-
- type Message_Type (Max_String : S_length_subtype := 1) is
- record
- Message_Number : Sequence_Number;
- Alpha : string(1..Max_String);
- end record;
-
- -- TC: Dummy message for the test
- Dummy_Alpha : constant string := "This could be printed";
- Message_to_Send : Message_Type (Max_string => Dummy_Alpha'length);
-
-
- -- This is the carrier task. One of these is created for each
- -- message that requires ACK
- --
- task type Require_ACK_task is
- entry Message_In (Message_to_Send: Message_Type);
- end Require_ACK_task;
- type acc_Require_ACK_task is access Require_ACK_task;
-
-
- --:::::::::::::::::::::::::::::::::
- -- There would also be another task type "No_ACK_Task" which would
- -- be the carrier task for those messages not requiring an ACK.
- -- This task would call Send_Message.ACK_Not_Required. It is not
- -- shown in this test as it is not used.
- --:::::::::::::::::::::::::::::::::
-
-
-
- task Send_Message is
- entry ACK_Required (Message_to_Send: Message_Type);
- entry ACK_Not_Required (Message_to_Send: Message_Type);
- end Send_Message;
-
-
- -- This is the carrier task. One of these is created for each
- -- message that requires ACK
- --
- task body Require_ACK_task is
- Hold_Message : Message_Type;
-
- procedure Time_Out (Failed_Message_Number : Sequence_Number) is
- begin
- -- Take remedial action on the timed-out message
- null; -- stub
-
- Report.Failed ("Optional statements in triggering part" &
- " were performed");
- end Time_out;
-
- begin
- accept Message_In (Message_to_Send: Message_Type) do
- Hold_Message := Message_to_Send; -- to release caller
- end Message_In;
-
- -- Now put the message out to the Send_Message task and
- -- wait (no more than Allowable_Ack_Time) for its completion
- --
- select
- delay Allowable_ACK_Time;
- -- ACK not received in specified time
- Time_out (Hold_Message.Message_Number);
- then abort
- -- If the rendezvous is not completed in the above time, this
- -- call is cancelled
- -- Note: for this test this call will complete immediately
- -- and thus the trigger should be cancelled
- Send_Message.ACK_Required (Hold_Message);
- end select;
-
- exception
- when others =>
- Report.Failed ("Unexpected exception in Require_ACK_task");
- end Require_ACK_task;
-
-
- -- This is the Line Driver task
- --
- task body Send_Message is
- Hold_Non_ACK_Message : Message_Type;
- begin
- loop
- select
- accept ACK_Required (Message_to_Send: Message_Type) do
- -- Here send the message from within the rendezvous
- -- waiting for full transmission to complete
- null; -- stub
- -- Note: In this test this accept will complete immediately
- end ACK_Required;
- or
- accept ACK_Not_Required (Message_to_Send: Message_Type) do
- Hold_Non_ACK_Message := Message_to_Send;
- end ACK_Not_Required;
- -- Here send the message from outside the rendezvous
- null; -- stub
- or
- terminate;
- end select;
- end loop;
- exception
- when others => Report.Failed ("Unexpected exception in Send_Message");
- end Send_Message;
-
- begin -- declare
- -- Build a dummy message
- Message_to_Send.Alpha := Dummy_Alpha;
- Message_to_Send.Message_Number := 110_693;
-
- declare
- New_Require_ACK_task : acc_Require_ACK_task :=
- new Require_ACK_task;
- begin
- -- Create a carrier task for this message and pass the latter in
- New_Require_ACK_task.Message_In (Message_to_Send);
- end; -- declare
-
- end; -- declare
-
- --Once we are out of the above declarative region, all tasks have completed
-
- TC_Elapsed_Time := Ada.Calendar.Clock - TC_Start_Time;
-
- -- Check that the test has completed well before the time of the requested
- -- delay to ensure the delay was cancelled
- --
- if (TC_Elapsed_Time > Allowable_ACK_Time/2) then
- Report.Failed ("Triggering delay statement was not cancelled");
- end if;
-
- Report.Result;
-end C960004;