cxb3002.a

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

A
159
字号
-- CXB3002.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 specifications of the package Interfaces.C.Strings--      are available for use.---- TEST DESCRIPTION:--      This test verifies that the types and subprograms specified for the--      interface are present---- APPLICABILITY CRITERIA: --      If an implementation provides packages Interfaces.C and--      Interfaces.C.Strings, this test must compile, execute, and --      report "PASSED".------ CHANGE HISTORY:--      06 Dec 94   SAIC    ACVC 2.0--      28 Feb 96   SAIC    Added applicability criteria.----!with Report;with Interfaces.C;                                            -- N/A => ERRORwith Interfaces.C.Strings;                                    -- N/A => ERRORprocedure CXB3002 is   package Strings renames Interfaces.C.Strings;                 package C renames Interfaces.C;                            begin   Report.Test ("CXB3002", "Check the specification of Interfaces.C.Strings");   declare  -- encapsulate the test      TC_Int_1      : integer := 1;      TC_Int_2      : integer := 1;      TC_String     : String := "ABCD";      TC_Boolean    : Boolean := true;      TC_char_array : C.char_array (1..5);      TC_size_t     : C.size_t := C.size_t'first;      --  Note In all of the following the Strings spec. being tested      --  is shown in comment lines      --       --    type char_array_access is access all char_array;      TST_char_array_access :  Strings.char_array_access :=                                        new Interfaces.C.char_array (1..5);      --    type chars_ptr is private;      --    Null_Ptr : constant chars_ptr;      TST_chars_ptr : Strings.chars_ptr := Strings.Null_ptr;      --  type chars_ptr_array is array (size_t range <>) of chars_ptr;      TST_chars_ptr_array : Strings.chars_ptr_array(1..5);   begin    -- encapsulation      -- Arrange that the calls to the subprograms are compiled but      -- not executed      --       if not Report.Equal ( TC_Int_1, TC_Int_2 ) then         --    function To_Chars_Ptr (Item      : in char_array_access;         --                           Nul_Check : in Boolean := False)         --       return chars_ptr;         TST_chars_ptr := Strings.To_Chars_Ptr                                           (TST_char_array_access, TC_Boolean);          --    This one is out of LRM order so that we can "initialize"         --    TC_char_array for the "in" parameter of the next one         --          --    function Value (Item : in chars_ptr) return char_array;         TC_char_array := Strings.Value (TST_chars_ptr);         --    function New_Char_Array (Chars   : in char_array)          --       return chars_ptr;         TST_chars_ptr := Strings.New_Char_Array (TC_char_array);          --    function New_String (Str : in String) return chars_ptr;         TST_chars_ptr := Strings.New_String ("TEST STRING");         --    procedure Free (Item : in out chars_ptr);         Strings.Free (TST_chars_ptr);         --    function Value (Item : in chars_ptr; Length : in size_t)         --       return char_array;         TC_char_array := Strings.Value (TST_chars_ptr, TC_size_t);         -- Use Report.Comment as a known procedure which takes a string as         -- a parameter (this does not actually get output)         --    function Value (Item : in chars_ptr) return String;         Report.Comment ( Strings.Value (TST_chars_ptr) );         --    function Value (Item : in chars_ptr; Length : in size_t)          --       return String;         TC_String := Strings.Value (TST_chars_ptr, TC_size_t);         --    function Strlen (Item : in chars_ptr) return size_t;         TC_size_t := Strings.Strlen (TST_chars_ptr);         --    procedure Update (Item   : in chars_ptr;         --                      Offset : in size_t;         --                      Chars  : in char_array;         --                      Check  : in Boolean := True);         Strings.Update (TST_chars_ptr, TC_size_t, TC_char_array, TC_Boolean);         --    procedure Update (Item   : in chars_ptr;         --                      Offset : in size_t;         --                      Str    : in String;         --                      Check  : in Boolean := True);         Strings.Update (TST_chars_ptr, TC_size_t, TC_String, TC_Boolean);         --    Update_Error : exception;         raise Strings.Update_Error;               end if;      if not Report.Equal ( TC_Int_2, TC_Int_1 ) then         -- This exception is out of LRM presentation order to avoid         -- compiler warnings about unreachable code         --    Dereference_Error : exception;         raise Strings.Dereference_Error;      end if;   end;     -- encapsulation   Report.Result;end CXB3002;

⌨️ 快捷键说明

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