2003-12-26 Guilhem Lavaux <guilhem@kaffe.org>
[official-gcc.git] / gcc / testsuite / ada / acats / tests / c9 / c97301c.ada
bloba2b3abbc0533bce67aa8e5ec79b418c5f7aff8c2
1 -- C97301C.ADA
3 -- Grant of Unlimited Rights
4 --
5 -- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
6 -- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
7 -- unlimited rights in the software and documentation contained herein.
8 -- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
9 -- this public release, the Government intends to confer upon all
10 -- recipients unlimited rights equal to those held by the Government.
11 -- These rights include rights to use, duplicate, release or disclose the
12 -- released technical data and computer software in whole or in part, in
13 -- any manner and for any purpose whatsoever, and to have or permit others
14 -- to do so.
16 -- DISCLAIMER
18 -- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
19 -- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
20 -- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
21 -- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
22 -- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
23 -- PARTICULAR PURPOSE OF SAID MATERIAL.
24 --*
25 -- CHECK THAT A TIMED_ENTRY_CALL DELAYS FOR AT LEAST THE SPECIFIED
26 -- AMOUNT OF TIME IF A RENDEVOUS IS NOT POSSIBLE.
28 -- CASE C: AN ACCEPT STATEMENT FOR THE CALLED ENTRY HAS NOT BEEN
29 -- REACHED.
31 -- RJW 3/31/86
33 with Impdef;
34 WITH REPORT; USE REPORT;
35 WITH CALENDAR; USE CALENDAR;
36 PROCEDURE C97301C IS
38 OR_BRANCH_TAKEN : BOOLEAN := FALSE;
40 BEGIN
42 TEST ("C97301C", "CHECK THAT A TIMED_ENTRY_CALL DELAYS FOR AT " &
43 "LEAST THE SPECIFIED AMOUNT OF TIME WHEN AN " &
44 "ACCEPT STATEMENT FOR THE CALLED ENTRY HAS " &
45 "NOT BEEN REACHED" );
48 DECLARE
49 START_TIME : TIME;
50 STOP_TIME : TIME;
51 WAIT_TIME : DURATION := 3.0 * Impdef.One_Second;
53 TASK T IS
54 ENTRY NO_SPIN;
55 ENTRY DO_IT_NOW_OR_WAIT;
56 END T;
58 TASK BODY T IS
59 BEGIN
60 ACCEPT NO_SPIN;
61 ACCEPT DO_IT_NOW_OR_WAIT;
62 END T;
64 BEGIN
65 START_TIME := CLOCK;
66 SELECT
67 T.DO_IT_NOW_OR_WAIT;
68 FAILED("RENDEZVOUS OCCURRED");
69 ABORT T;
71 -- THIS BRANCH MUST BE CHOSEN.
72 DELAY WAIT_TIME;
73 STOP_TIME := CLOCK;
74 IF STOP_TIME >= (WAIT_TIME + START_TIME) THEN
75 NULL;
76 ELSE
77 FAILED ( "INSUFFICIENT DELAY" );
78 END IF;
79 T.NO_SPIN;
80 OR_BRANCH_TAKEN := TRUE;
81 COMMENT( "OR_BRANCH TAKEN" );
82 T.DO_IT_NOW_OR_WAIT;
83 END SELECT;
84 EXCEPTION
85 WHEN TASKING_ERROR =>
86 FAILED ( "TASKING ERROR" );
87 END;
88 -- END OF BLOCK CONTAINING TIMED
89 -- ENTRY CALL.
91 -- BY NOW, TASK T IS TERMINATED (AND THE NONLOCALS UPDATED).
93 IF OR_BRANCH_TAKEN THEN
94 NULL;
95 ELSE
96 FAILED( "RENDEZVOUS ATTEMPTED" );
97 END IF;
99 RESULT;
101 END C97301C;