c3a1002.a

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

A
252
字号
-- C3A1002.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 the full type completing a type with no discriminant part--      or an unknown discriminant part may have explicitly declared or--      inherited discriminants.--      Check for cases where the types are tagged records and task types.---- TEST DESCRIPTION:--      Declare two groups of incomplete types: one group with no discriminant --      part and one group with unknown discriminant part.  Both groups of --      incomplete types are completed with both explicit and inherited --      discriminants.  Discriminants for task types are declared with both --      default and non default values.  Discriminants for tagged types are --      only declared without default values.  --      In the main program, verify that objects of both groups of incomplete --      types can be created by default values or by assignments.------ CHANGE HISTORY:--      23 Oct 95   SAIC    Initial prerelease version.--      19 Oct 96   SAIC    ACVC 2.1: modified test description.  Initialized--                          Int_Val.----!package C3A1002_0 is   subtype Small_Int is Integer range 1 .. 15;   type Enu_Type is (M, F);   type Tag_Type is tagged              record                                                  I : Small_Int := 1;     end record;   type NTag_Type (D : Small_Int) is new Tag_Type with     record                                                  S : String (1 .. D) := "Aloha";       end record;   type Incomplete1;                               -- no discriminant   type Incomplete2 (<>);                          -- unknown discriminant   type Incomplete3;                               -- no discriminant   type Incomplete4 (<>);                          -- unknown discriminant   type Incomplete5;                               -- no discriminant   type Incomplete6 (<>);                          -- unknown discriminant   type Incomplete1 (D1 : Enu_Type) is tagged      -- no discriminant/       record                                        -- explicit discriminant        case D1 is           when M => MInteger : Small_Int := 9;           when F => FInteger : Small_Int := 8;        end case;     end record;   type Incomplete2 (D2 : Small_Int) is new       -- unknown discriminant/     Incomplete1 (D1 => F) with record            -- explicit discriminant        ID : String (1 .. D2) := "ACVC95";     end record;   type Incomplete3 is new                         -- no discriminant/     NTag_Type with record                         -- inherited discriminant        E : Enu_Type := M;     end record;   type Incomplete4 is new                         -- unknown discriminant/     NTag_Type (D => 3) with record                -- inherited discriminant        E : Enu_Type := F;     end record;   task type Incomplete5 (D5 : Enu_Type) is      -- no discriminant/      entry Read_Disc (P : out Enu_Type);        -- explicit discriminant   end Incomplete5;   task type Incomplete6      (D6 : Small_Int := 4) is                    -- unknown discriminant/      entry Read_Int (P : out Small_Int);        -- explicit discriminant   end Incomplete6;end C3A1002_0;     --==================================================================--package body C3A1002_0 is   task body Incomplete5 is     begin      select          accept Read_Disc (P : out Enu_Type) do              P := D5;         end Read_Disc;      or         terminate;      end select;   end Incomplete5;   ----------------------------------------------------------------------   task body Incomplete6 is    begin      select          accept Read_Int (P : out Small_Int) do              P := D6;         end Read_Int;      or         terminate;      end select;   end Incomplete6;end C3A1002_0;     --==================================================================--with Report;with C3A1002_0;use  C3A1002_0;procedure C3A1002 is   Enum_Val : Enu_Type := M;   Int_Val  : Small_Int := 15;   -- Discriminant value comes from default.   Incomplete6_Obj_1  :  Incomplete6;   -- Discriminant value comes from explicit constraint.   Incomplete1_Obj_1  :  Incomplete1 (M);   Incomplete2_Obj_1  :  Incomplete2 (6);   Incomplete5_Obj_1  :  Incomplete5 (F);   Incomplete6_Obj_2  :  Incomplete6 (7);   -- Discriminant value comes from assignment.           Incomplete1_Obj_2  :  Incomplete1                      := (F, 12);   Incomplete3_Obj_1  :  Incomplete3                      := (D => 2, S => "Hi", I => 10, E => F);   Incomplete4_Obj_1  :  Incomplete4                      := (E => M, D => 3, S => "Bye", I => 14);begin   Report.Test ("C3A1002", "Check that the full type completing a type " &                "with no discriminant part or an unknown discriminant "  &                "part may have explicitly declared or inherited "        &                "discriminants.  Check for cases where the types are "   &                "tagged records and task types");   -- Check the initial values.   if (Incomplete6_Obj_1.D6 /= 4) then       Report.Failed ("Wrong initial value for Incomplete6_Obj_1");   end if;   -- Check the explicit values.   if (Incomplete1_Obj_1.D1       /= M) or       (Incomplete1_Obj_1.MInteger /= 9) then        Report.Failed ("Wrong values for Incomplete1_Obj_1");   end if;   if (Incomplete2_Obj_1.D2       /= 6) or       (Incomplete2_Obj_1.FInteger /= 8) or      (Incomplete2_Obj_1.ID       /= "ACVC95") then         Report.Failed ("Wrong values for Incomplete2_Obj_1");   end if;   if (Incomplete5_Obj_1.D5 /= F) then       Report.Failed ("Wrong value for Incomplete5_Obj_1");   end if;   Incomplete5_Obj_1.Read_Disc (Enum_Val);   if (Enum_Val /= F) then       Report.Failed ("Wrong value for Enum_Val");   end if;   if (Incomplete6_Obj_2.D6 /= 7) then       Report.Failed ("Wrong value for Incomplete6_Obj_2");   end if;   Incomplete6_Obj_1.Read_Int (Int_Val);   if (Int_Val /= 4) then       Report.Failed ("Wrong value for Int_Val");   end if;   -- Check the assigned values.   if (Incomplete1_Obj_2.D1       /= F)  or       (Incomplete1_Obj_2.FInteger /= 12) then         Report.Failed ("Wrong values for Incomplete1_Obj_2");   end if;   if (Incomplete3_Obj_1.D /= 2 ) or       (Incomplete3_Obj_1.I /= 10) or      (Incomplete3_Obj_1.E /= F ) or      (Incomplete3_Obj_1.S /= "Hi") then         Report.Failed ("Wrong values for Incomplete3_Obj_1");   end if;   if (Incomplete4_Obj_1.E /= M )      or       (Incomplete4_Obj_1.D /= 3)       or      (Incomplete4_Obj_1.S /= "Bye")   or      (Incomplete4_Obj_1.I /= 14)      then         Report.Failed ("Wrong values for Incomplete4_Obj_1");   end if;   Report.Result;end C3A1002;

⌨️ 快捷键说明

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