⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cd92001.a

📁 xml大全 可读写调用率很高 xml大全 可读写调用率很高
💻 A
字号:
-- CD92001.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 X denotes a scalar object, X'Valid--      yields true if an only if the object denoted by X is normal and--      has a valid representation.---- TEST DESCRIPTION:--      Using Unchecked_Conversion, Image and Value attributes, combined--      with string manipulation, cause valid and invalid values to be--      stored in various objects.  Check their validity with the--      attribute 'Valid.  Invalid objects are created in a loop which--      performs a simplistic check to ensure that the values being used--      are indeed not valid, then assigns the value using an instance of--      Unchecked_Conversion.  The creation of the tables of valid values--      is trivial.---- APPLICABILITY CRITERIA:--      All implementations must attempt to compile this test.----      For implementations validating against Systems Programming Annex (C):--        this test must execute and report PASSED.----      For implementations not validating against Annex C:--        this test may report compile time errors at one or more points--        indicated by "-- N/A => ERROR", in which case it may be graded as--        inapplicable. Otherwise, the test must execute and report PASSED.------ CHANGE HISTORY:--      10 MAY 95   SAIC    Initial version--      07 MAY 96   SAIC    Changed U_C to Ada.U_C for 2.1--      05 JAN 99   RLB     Added Component_Size clauses to compensate--                          for the fact that there is no required size--                          for either the enumeration or modular components.--!with Report;with Ada.Unchecked_Conversion;with System;procedure CD92001 is  type Sparse_Enumerated is       ( Help, Home, Page_Up, Del, EndK,         Page_Down, Up, Left, Down, Right );  for Sparse_Enumerated use ( Help      =>    2,                              Home      =>    4,                              Page_Up   =>    8,                              Del       =>   16,                              EndK      =>   32,                              Page_Down =>   64,                              Up        =>  128,                              Left      =>  256,                              Down      =>  512,                              Right     => 1024 );  type Mod_10 is mod 10;  type Default_Enumerated is ( Zero,  One, Two,   Three, Four,                               Five,  Six, Seven, Eight, Nine,                               Clear, '=', '/',   '*',   '-',                               '+',   Enter );    for Default_Enumerated'Size use 8;  Default_Enumerated_Count : constant := 17;  type Mod_By_Enum_Items is mod Default_Enumerated_Count;  type Mod_Same_Size_As_Sparse_Enum is mod 2**12;                                        -- Sparse_Enumerated 'Size;  type Mod_Same_Size_As_Def_Enum is mod 2**8;                                     -- Default_Enumerated'Size;  subtype Test_Width is Positive range 1..100;  -- Note: There is no required relationship between 'Size and 'Component_Size,  -- so we must use component_size clauses here.  -- We use the following expressions to insure that the component size is a  -- multiple of the Storage_Unit.  Sparse_Component_Size : constant := ((Sparse_Enumerated'Size / System.Storage_Unit) +        Boolean'Pos((Sparse_Enumerated'Size mod System.Storage_Unit) /= 0)) *        System.Storage_Unit;  Default_Component_Size : constant := ((Default_Enumerated'Size / System.Storage_Unit) +        Boolean'Pos((Sparse_Enumerated'Size mod System.Storage_Unit) /= 0)) *        System.Storage_Unit;  type Sparse_Enum_Table is array(Test_Width) of Sparse_Enumerated;  for Sparse_Enum_Table'Component_Size use Sparse_Component_Size;  -- N/A => ERROR.  type Def_Enum_Table is array(Test_Width) of Default_Enumerated;  for Def_Enum_Table'Component_Size use Default_Component_Size;  -- N/A => ERROR.  type Sparse_Mod_Table  is       array(Test_Width) of Mod_Same_Size_As_Sparse_Enum;  for Sparse_Mod_Table'Component_Size use Sparse_Component_Size;  -- N/A => ERROR.  type Default_Mod_Table is       array(Test_Width) of Mod_Same_Size_As_Def_Enum;  for Default_Mod_Table'Component_Size use Default_Component_Size;  -- N/A => ERROR.  function UC_Sparse_Mod_Enum is    new Ada.Unchecked_Conversion( Sparse_Mod_Table, Sparse_Enum_Table );  function UC_Def_Mod_Enum is    new Ada.Unchecked_Conversion( Default_Mod_Table, Def_Enum_Table );  Valid_Sparse_Values : Sparse_Enum_Table;  Valid_Def_Values    : Def_Enum_Table;  Sample_Enum_Value_Table : Sparse_Mod_Table;  Sample_Def_Value_Table  : Default_Mod_Table;  -- fill the Valid tables with valid values for conversion  procedure Fill_Valid is    K : Mod_10 := 0;    P : Mod_By_Enum_Items := 0;  begin    for I in Test_Width loop      Valid_Sparse_Values(I) := Sparse_Enumerated'Val( K );      Valid_Def_Values(I)    := Default_Enumerated'Val( Integer(P) );      K := K +1;      P := P +1;    end loop;  end Fill_Valid;  -- fill the Sample tables with invalid values for conversion  procedure Fill_Invalid is    K : Mod_Same_Size_As_Sparse_Enum := 1;    P : Mod_Same_Size_As_Def_Enum    := 1;  begin    for I in Test_Width loop      K := K +13;      if K mod 2 = 0 then  -- oops, that would be a valid value        K := K +1;      end if;      if P = Mod_Same_Size_As_Def_Enum'Last         or P < Default_Enumerated_Count then -- that would be valid        P := Default_Enumerated_Count + 1;      else        P := P +1;      end if;      Sample_Enum_Value_Table(I) := K;      Sample_Def_Value_Table(I)  := P;    end loop;    Valid_Sparse_Values := UC_Sparse_Mod_Enum(Sample_Enum_Value_Table);    Valid_Def_Values    := UC_Def_Mod_Enum(Sample_Def_Value_Table);  end Fill_Invalid;  -- fill the tables with second set of valid values for conversion  procedure Refill_Valid is    K : Mod_10 := 0;    P : Mod_By_Enum_Items := 0;    Table : Array(Mod_10) of Mod_Same_Size_As_Sparse_Enum          := ( 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024 );  begin    for I in Test_Width loop      Sample_Enum_Value_Table(I) := Table(K);      Sample_Def_Value_Table(I)  := Mod_Same_Size_As_Def_Enum(P);      K := K +1;      P := P +1;    end loop;    Valid_Sparse_Values := UC_Sparse_Mod_Enum(Sample_Enum_Value_Table);    Valid_Def_Values    := UC_Def_Mod_Enum(Sample_Def_Value_Table);  end Refill_Valid;  procedure Validate(Expect_Valid: Boolean) is  begin  -- here's where we actually use the tested attribute    for K in Test_Width loop      if Valid_Sparse_Values(K)'Valid /= Expect_Valid then        Report.Failed("Expected 'Valid =" & Boolean'Image(Expect_Valid)                    & " for Sparse item " & Integer'Image(K) );      end if;    end loop;    for P in Test_Width loop      if Valid_Def_Values(P)'Valid /= Expect_Valid then        Report.Failed("Expected 'Valid =" & Boolean'Image(Expect_Valid)                    & " for Default item " & Integer'Image(P) );      end if;    end loop;  end Validate;begin  -- Main test procedure.  Report.Test ("CD92001", "Check object attribute: X'Valid" );     Fill_Valid;  Validate(True);  Fill_Invalid;  Validate(False);  Refill_Valid;  Validate(True);  Report.Result;end CD92001;

⌨️ 快捷键说明

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