ca11016.a

来自「用于进行gcc测试」· A 代码 · 共 322 行

A
322
字号
-- CA11016.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 a child of a non-generic package can be a private generic --      package. Check that the private child instance can use its parent's--      declarations and operations.  Check that the body of a public child --      package can instantiate its sibling private generic package.---- TEST DESCRIPTION:--      Declare a map abstraction in a package which manages basic physical--      map[s].  Declare a private generic child of this package which can be--      instantiated for any display device which has display locations of --      the physical map that can be characterized by any integer type, i.e., --      the intensity of the display point.----      Declare a public child of the physical map which specifies the --      display device.  In the body of this child, declare an instance of --      its generic sibling to display the geographic locations.----      In the main program, check that the operations in the parent, public --      child and instance of the private child package perform as expected.  ------ CHANGE HISTORY:--      06 Dec 94   SAIC    ACVC 2.0--      17 Apr 96   SAIC    ACVC 2.1: Added pragma Elaborate.----!-- Simulates map of physical features, i.e., desert, forest, or water.package CA11016_0 is                 type Map_Type is private;   subtype Latitude is integer range 1 .. 9;   subtype Longitude is integer range 1 .. 7;   type Physical_Features is (Desert, Forest, Water);      -- Use geographic database to initialize the basic map.   procedure Initialize_Basic_Map (Map  : in out Map_Type);   function Get_Physical_Feature (Lat  : Latitude;                                  Long : Longitude;                                  Map  : Map_Type) return Physical_Features;private   type Map_Type is array (Latitude, Longitude) of Physical_Features;   Basic_Map : Map_Type;end CA11016_0;     --==================================================================--package body CA11016_0 is                 procedure Initialize_Basic_Map (Map : in out Map_Type) is   -- Not a real initialization.  Real application can use geographic   -- database to create the basic map.   begin      for I in Latitude'first .. Latitude'last loop         for J in 1 .. 2 loop            Map (I, J) := Desert;         end loop;         for J in 3 .. 4 loop            Map (I, J) := Forest;         end loop;         for J in 5 .. 7 loop            Map (I, J) := Water;         end loop;      end loop;   end Initialize_Basic_Map;   --------------------------------------------------------   function Get_Physical_Feature (Lat  : Latitude;                                  Long : Longitude;                                  Map  : Map_Type)      return Physical_Features is   begin     return (Map (Lat, Long));   end Get_Physical_Feature;   --------------------------------------------------------   begin      -- Initialize a basic map.      Initialize_Basic_Map (Basic_Map);end CA11016_0;     --==================================================================---- Private generic child package of physical map.  This generic package may-- be instantiated for any display device which has display locations -- (latitude, longitude) that can be characterized by an integer value.-- For example, the intensity of the display point might be so characterized.-- It can be instantiated for any desired range of values (which would -- correspond to the range accepted by the display device).private generic                  type Display_Value is range <>;  -- Any display feature that is                                     -- represented by an integer.package CA11016_0.CA11016_1 is                 function Get_Display_Value (Lat  : Latitude;                               Long : Longitude;                               Map  : Map_Type) return Display_Value;end CA11016_0.CA11016_1;     --==================================================================--package body CA11016_0.CA11016_1 is                 function Get_Display_Value (Lat  : Latitude;                               Long : Longitude;                               Map  : Map_Type)      return Display_Value is   begin      case Get_Physical_Feature (Lat, Long, Map) is                                          -- Parent's operation,           when Forest => return (Display_Value'first);                                          -- Parent's type.           when Desert => return (Display_Value'last);                                          -- Parent's type.           when others => return                             ( (Display_Value'last - Display_Value'first) / 2 );                                          -- NOTE: Results are truncated.      end case;   end Get_Display_Value;end CA11016_0.CA11016_1;     --==================================================================---- Map display operation, public child of physical map.package CA11016_0.CA11016_2 is                 -- Super-duper Ultra Geographic Display Device (SDUGD) can display    -- geographic locations with light intensity values ranging from 1 to 7.   type Display_Val is range 1 .. 7;   type Device_Color is (Brown, Blue, Green);   type IO_Packet is      record         Lat       : Latitude;       -- Parent's type.         Long      : Longitude;      -- Parent's type.         Color     : Device_Color;         Intensity : Display_Val;      end record;   procedure Data_For_SDUGD (Lat           : in     Latitude;                             Long          : in     Longitude;                             Output_Packet : in out IO_Packet);end CA11016_0.CA11016_2;     --==================================================================--with CA11016_0.CA11016_1;          -- Private generic sibling.pragma Elaborate (CA11016_0.CA11016_1);package body CA11016_0.CA11016_2 is                 -- Declare instance of the private generic sibling for    -- an integer type that represents color intensity.   package SDUGD is new CA11016_0.CA11016_1 (Display_Val);   procedure Data_For_SDUGD (Lat           : in     Latitude;                             Long          : in     Longitude;                             Output_Packet : in out IO_Packet) is   -- Simulates sending control information to a display device.   -- Control information consists of latitude, longitude, a   -- color, and an intensity.   begin      case Get_Physical_Feature (Lat, Long, Basic_Map) is                                           -- Parent's operation.         when Water  => Output_Packet.Color     := Blue;                        Output_Packet.Intensity := SDUGD.Get_Display_Value                                                    (Lat, Long, Basic_Map);                                           -- Sibling's operation.         when Forest => Output_Packet.Color     := Green;                        Output_Packet.Intensity := SDUGD.Get_Display_Value                                                    (Lat, Long, Basic_Map);                                           -- Sibling's operation.         when others => Output_Packet.Color     := Brown;                        Output_Packet.Intensity := SDUGD.Get_Display_Value                                                    (Lat, Long, Basic_Map);                                           -- Sibling's operation.       end case;   end Data_For_SDUGD;end CA11016_0.CA11016_2;     --==================================================================--with CA11016_0.CA11016_2;            -- Map display device operation,                                     -- implicitly withs parent, physical map                                     -- application.use CA11016_0.CA11016_2;             -- Allows direct visibility to the simple                                     -- name of CA11016_0.CA11016_2.with Report;procedure CA11016 is   TC_Packet : IO_Packet;begin    Report.Test ("CA11016", "Check that body of a public child package can " &                           "use its sibling private generic package "       &                           "declarations and operations");-- Simulate control information at coordinates 3 and 7 of the-- basic map for the SDUGD.                  Water_Display_Subtest:         begin            TC_Packet.Lat  := 3;            TC_Packet.Long := 7;            -- Build color and light intensity of the basic map at             -- latitude 3 and longitude 7.            Data_For_SDUGD (TC_Packet.Lat, TC_Packet.Long, TC_Packet);            if ( (TC_Packet.Color     /= Blue) or                 (TC_Packet.Intensity /= 3) ) then                Report.Failed ("Map display device contains " &                               "incorrect values for water subtest");            end if;         end Water_Display_Subtest;-- Simulate control information at coordinates 2 and 1 of the-- basic map for the SDUGD.                  Desert_Display_Subtest:         begin            TC_Packet.Lat  := 9;            TC_Packet.Long := 2;            -- Build color and light intensity of the basic map at             -- latitude 9 and longitude 2.            Data_For_SDUGD (TC_Packet.Lat, TC_Packet.Long, TC_Packet);            if ( (TC_Packet.Color     /= Brown) or                 (TC_Packet.Intensity /= 7) ) then                Report.Failed ("Map display device contains " &                               "incorrect values for desert subtest");            end if;         end Desert_Display_Subtest;-- Simulate control information at coordinates 8 and 4 of the-- basic map for the SDUGD.                  Forest_Display_Subtest:         begin            TC_Packet.Lat  := 8;            TC_Packet.Long := 4;            -- Build color and light intensity of the basic map at             -- latitude 8 and longitude 4.            Data_For_SDUGD (TC_Packet.Lat, TC_Packet.Long, TC_Packet);            if ( (TC_Packet.Color     /= Green) or                 (TC_Packet.Intensity /= 1) ) then                Report.Failed ("Map display device contains " &                               "incorrect values for forest subtest");            end if;         end Forest_Display_Subtest;   Report.Result;end CA11016;

⌨️ 快捷键说明

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