c954025.a

来自「linux下编程用 编译软件」· A 代码 · 共 238 行

A
238
字号
-- C954025.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 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 entry call was a timed entry call, the --      expiration time for a requeue-with-abort is the original expiration --      time.---- TEST DESCRIPTION:--      This test declares two tasks: Launch_Control and Mission_Control.--      Mission_Control instructs Launch_Control to start its countdown--      and then requeues (with abort) to the Launch_Control.Launch --      entry.  This call to Launch will be accepted at the end of the--      countdown (if the task is still waiting).--      The main task does an unconditional, conditional, and timed --      entry call to Mission_Control and checks to see if the launch--      was accepted.------ CHANGE HISTORY:--      18 OCT 95   SAIC    ACVC 2.1--      10 JUL 96   SAIC    Incorporated reviewer's comments.----!with Calendar;   use type Calendar.Time;with Report;with ImpDef;procedure C954025 is  Verbose : constant Boolean := False;  Countdown_Amount : constant Duration := 2.0 * Impdef.One_Long_Second;  Plenty_Of_Time : constant Duration :=          Countdown_Amount + ImpDef.Clear_Ready_Queue + 1.0 * Impdef.One_Long_Second;  Not_Enough_Time : constant Duration :=         Countdown_Amount - 0.5 * Impdef.One_Long_Second;begin  Report.Test ("C954025",               "Check that if the original entry" &               " call was a conditional or timed entry call, the" &               " expiration time for a requeue with abort is the" &               " original expiration time");  declare     -- note that the following object is a shared object and its use     -- governed by the rules of 9.10(3,4,8);6.0     Launch_Accepted : Boolean := False;     task Launch_Control is        entry Enable_Launch_Control;        entry Start_Countdown (How_Long : Duration);        -- Launch will be accepted if a call is waiting when the countdown        -- reaches 0        entry Launch;     end Launch_Control;     task body Launch_Control is        Wait_Amount : Duration := 0.0;     begin        loop           select              accept Enable_Launch_Control do                 Launch_Accepted := False;              end Enable_Launch_Control;           or              terminate;           end select;           accept Start_Countdown (How_Long : Duration) do                 Wait_Amount := How_Long;           end Start_Countdown;           delay Wait_Amount;           select              accept Launch do                 Launch_Accepted := True;              end Launch;           else              null;              -- note that Launch_Accepted is False here           end select;        end loop;     end Launch_Control;     task Mission_Control is        --  launch will occur if we are given enough time to complete        --  a standard countdown.  We will not be rushed!        entry Do_Launch;     end Mission_Control;     task body Mission_Control is     begin        loop           select              accept Do_Launch do                 Launch_Control.Start_Countdown (Countdown_Amount);                 requeue Launch_Control.Launch with abort;              end Do_Launch;           or              terminate;           end select;        end loop;     end Mission_Control;       begin   -- test encapsulation     -- unconditional entry call to check the simple case     Launch_Control.Enable_Launch_Control;     Mission_Control.Do_Launch;     if Launch_Accepted then        if Verbose then           Report.Comment ("simple case passed");        end if;      else         Report.Failed ("simple case");      end if;       -- timed but with plenty of time - delay relative     Launch_Control.Enable_Launch_Control;     select        Mission_Control.Do_Launch;     or         delay Plenty_Of_Time;        if Launch_Accepted then           Report.Failed ("plenty of time timed out after accept (1)");        end if;     end select;     if Launch_Accepted then        if Verbose then           Report.Comment ("plenty of time case passed (1)");        end if;      else         Report.Failed ("plenty of time (1)");      end if;       -- timed but with plenty of time  -- delay until     Launch_Control.Enable_Launch_Control;     select        Mission_Control.Do_Launch;     or         delay until Calendar.Clock + Plenty_Of_Time;        if Launch_Accepted then           Report.Failed ("plenty of time timed out after accept(2)");        end if;     end select;     if Launch_Accepted then        if Verbose then           Report.Comment ("plenty of time case passed (2)");        end if;      else         Report.Failed ("plenty of time (2)");      end if;       -- timed without enough time - delay relative     Launch_Control.Enable_Launch_Control;     select        Mission_Control.Do_Launch;        Report.Failed ("not enough time completed accept (1)");     or         delay Not_Enough_Time;     end select;     if Launch_Accepted then        Report.Failed ("not enough time (1)");      else        if Verbose then           Report.Comment ("not enough time case passed (1)");        end if;      end if;       -- timed without enough time - delay until     Launch_Control.Enable_Launch_Control;     select        Mission_Control.Do_Launch;        Report.Failed ("not enough time completed accept (2)");     or         delay until Calendar.Clock + Not_Enough_Time;     end select;     if Launch_Accepted then        Report.Failed ("not enough time (2)");      else        if Verbose then           Report.Comment ("not enough time case passed (2)");        end if;      end if;       -- conditional case     Launch_Control.Enable_Launch_Control;     -- make sure Mission_Control is ready to accept immediately     delay ImpDef.Clear_Ready_Queue;      select        Mission_Control.Do_Launch;        Report.Failed ("no time completed accept");     else        if Verbose then           Report.Comment ("conditional case - else taken");         end if;     end select;     if Launch_Accepted then        Report.Failed ("no time");      else        if Verbose then           Report.Comment ("no time case passed");        end if;      end if;  end;  Report.Result;end C954025;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?