cxac004.a

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

A
311
字号
-- CXAC004.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 Stream_Access type and Stream function found in package--      Ada.Text_IO.Text_Streams allows a text file to be processed with the --      functionality of streams.---- TEST DESCRIPTION:--      This test verifies that the package Ada.Text_IO.Text_Streams is --      available and that the functionality it contains allows a text file to--      be manipulated as a stream.--      The test defines data objects of a variety of types that can be stored--      in a text file.  A text file and associated text stream are then --      defined, and the 'Write attribute is used to enter the individual data--      items into the text stream.  Once all the individual data items have --      been written to the stream, the 'Output attribute is used to write --      arrays of these same data objects to the stream.--      The text file is reset to serve as an input file, and the 'Read --      attribute is used to extract the individual data items from the --      stream.  These items are then verified against the data originally --      written to the stream. Finally, the 'Input attribute is used to --      extract the data arrays from the stream. These arrays are then --      verified against the original data written to the stream.---- APPLICABILITY CRITERIA: --      Applicable to implementations that support external text files.--       -- CHANGE HISTORY:--      06 Jul 95   SAIC    Initial prerelease version.--      26 Feb 97   PWB.CTA Allowed for non-support of some IO operations;--                          removed requirement for support of decimal types.--!with Report;with Ada.Text_IO;with Ada.Text_IO.Text_Streams;with Ada.Characters.Latin_1;with Ada.Strings.Unbounded;procedure CXAC004 is   Data_File     : Ada.Text_IO.File_Type;   Data_Filename : constant String :=                            Report.Legal_File_Name ( Nam => "CXAC004" );   Incomplete : exception;begin   Report.Test ("CXAC004", "Check that the Stream_Access type and Stream "   &                           "function found in package "                      &                           "Ada.Text_IO.Text_Streams allows a text file to " &                           "be processed with the functionality of streams");   Test_for_IO_Support:   begin      -- Check for Text_IO support in creating the data file.  If the       -- implementation does not support external files, Name_Error or       -- Use_Error will be raised at the point of the following call to       -- Create, resulting in a Not_Applicable test result.      Ada.Text_IO.Create(Data_File, Ada.Text_IO.Out_File, Data_Filename);   exception       when Ada.Text_IO.Use_Error | Ada.Text_IO.Name_Error =>          Report.Not_Applicable             ( "Files not supported - Create as Out_File for Text_IO" );          raise Incomplete;   end Test_for_IO_Support;   Test_Block:   declare      use Ada.Characters.Latin_1, Ada.Strings.Unbounded;      TC_Items  : constant := 3;      -- Declare types and objects that will be used as data values to be      -- written to and read from the text file/stream.      type Enum_Type          is (Red, Yellow, Green, Blue, Indigo);      type Fixed_Type         is delta 0.125 range 0.0..255.0;      type Float_Type         is digits 7 range 0.0..1.0E5;      type Modular_Type       is mod 256;        subtype Str_Type        is String(1..4);      type Char_Array_Type    is array (1..TC_Items) of Character;      type Enum_Array_Type    is array (1..TC_Items) of Enum_Type;      type Fixed_Array_Type   is array (1..TC_Items) of Fixed_Type;      type Float_Array_Type   is array (1..TC_Items) of Float_Type;      type Int_Array_Type     is array (1..TC_Items) of Integer;      type Mod_Array_Type     is array (1..TC_Items) of Modular_Type;      type Str_Array_Type     is array (1..TC_Items) of Str_Type;      type Unb_Str_Array_Type is array (1..TC_Items) of Unbounded_String;      Char_Array      : Char_Array_Type    := ('A', 'z', Yen_Sign);      TC_Char_Array_1,      TC_Char_Array_2 : Char_Array_Type    := (others => Space);      Enum_Array      : Enum_Array_Type    := (Blue, Yellow, Indigo);      TC_Enum_Array_1,      TC_Enum_Array_2 : Enum_Array_Type    := (others => Red);      Fix_Array       : Fixed_Array_Type   := (0.125, 123.5, 250.750);      TC_Fix_Array_1,      TC_Fix_Array_2  : Fixed_Array_Type   := (others => 0.0);      Flt_Array       : Float_Array_Type   := (1.0, 150.0, 1500.0);      TC_Flt_Array_1,      TC_Flt_Array_2  : Float_Array_Type   := (others => 0.0);      Int_Array       : Int_Array_Type     := (124, 2349, -24_001);      TC_Int_Array_1,      TC_Int_Array_2  : Int_Array_Type     := (others => -99);      Mod_Array       : Mod_Array_Type     := (10, 127, 255);      TC_Mod_Array_1,      TC_Mod_Array_2  : Mod_Array_Type     := (others => 0);      Str_Array       : Str_Array_Type     := ("abcd", "klmn", "wxyz");      TC_Str_Array_1,      TC_Str_Array_2  : Str_Array_Type     := (others => "    ");      UStr_Array      : Unb_Str_Array_Type :=                                         (To_Unbounded_String("cat"),                                         To_Unbounded_String("testing"),                                         To_Unbounded_String("ACVC"));      TC_UStr_Array_1,      TC_UStr_Array_2 : Unb_Str_Array_Type :=                                         (others => Null_Unbounded_String);      -- Create a stream access object pointing to the data file.      Data_Stream : Ada.Text_IO.Text_Streams.Stream_Access :=                       Ada.Text_IO.Text_Streams.Stream(File => Data_File);   begin      -- Use the 'Write attribute to enter the three sets of data items      -- into the data stream.        -- Note that the data will be mixed within the text file.      for i in 1..TC_Items loop         Character'Write       (Data_Stream, Char_Array(i));         Enum_Type'Write       (Data_Stream, Enum_Array(i));         Fixed_Type'Write      (Data_Stream, Fix_Array(i));         Float_Type'Write      (Data_Stream, Flt_Array(i));         Integer'Write         (Data_Stream, Int_Array(i));         Modular_Type'Write    (Data_Stream, Mod_Array(i));         Str_Type'Write        (Data_Stream, Str_Array(i));         Unbounded_String'Write(Data_Stream, UStr_Array(i));      end loop;      -- Use the 'Output attribute to enter the entire arrays of each       -- type of data items into the data stream.        -- Note that the array bounds will be written to the stream as part       -- of the action of the 'Output attribute.      Char_Array_Type'Output    (Data_Stream, Char_Array);      Enum_Array_Type'Output    (Data_Stream, Enum_Array);      Fixed_Array_Type'Output   (Data_Stream, Fix_Array);      Float_Array_Type'Output   (Data_Stream, Flt_Array);      Int_Array_Type'Output     (Data_Stream, Int_Array);      Mod_Array_Type'Output     (Data_Stream, Mod_Array);      Str_Array_Type'Output     (Data_Stream, Str_Array);      Unb_Str_Array_Type'Output (Data_Stream, UStr_Array);      -- Reset the data file to mode In_File.  The data file will now serve      -- as the source of data which will be compared to the original data      -- written to the file above.      Reset1:      begin         Ada.Text_IO.Reset (File => Data_File, Mode => Ada.Text_IO.In_File);      exception         when Ada.Text_IO.Use_Error =>            Report.Not_Applicable               ( "Reset to In_File not supported for Text_IO" );            raise Incomplete;      end Reset1;      -- Extract and validate all the single data items from the stream.      for i in 1..TC_Items loop         Character'Read        (Data_Stream, TC_Char_Array_1(i));         Enum_Type'Read        (Data_Stream, TC_Enum_Array_1(i));         Fixed_Type'Read       (Data_Stream, TC_Fix_Array_1(i));         Float_Type'Read       (Data_Stream, TC_Flt_Array_1(i));         Integer'Read          (Data_Stream, TC_Int_Array_1(i));         Modular_Type'Read     (Data_Stream, TC_Mod_Array_1(i));         Str_Type'Read         (Data_Stream, TC_Str_Array_1(i));         Unbounded_String'Read (Data_Stream, TC_UStr_Array_1(i));      end loop;      if TC_Char_Array_1 /= Char_Array then         Report.Failed("Character values do not match");      end if;      if TC_Enum_Array_1 /= Enum_Array then         Report.Failed("Enumeration values do not match");      end if;      if TC_Fix_Array_1 /= Fix_Array then         Report.Failed("Fixed point values do not match");      end if;      if TC_Flt_Array_1 /= Flt_Array then         Report.Failed("Floating point values do not match");      end if;      if TC_Int_Array_1 /= Int_Array then         Report.Failed("Integer values do not match");      end if;      if TC_Mod_Array_1 /= Mod_Array then         Report.Failed("Modular values do not match");      end if;      if TC_Str_Array_1 /= Str_Array then         Report.Failed("String values do not match");      end if;      if TC_UStr_Array_1 /= UStr_Array then         Report.Failed("Unbounded_String values do not match");      end if;      -- Extract and validate all data arrays from the data stream.      -- Note that the 'Input attribute denotes a function, whereas the      -- other stream oriented attributes in this test denote procedures.      TC_Char_Array_2 := Char_Array_Type'Input(Data_Stream);      TC_Enum_Array_2 := Enum_Array_Type'Input(Data_Stream);      TC_Fix_Array_2  := Fixed_Array_Type'Input(Data_Stream);      TC_Flt_Array_2  := Float_Array_Type'Input(Data_Stream);      TC_Int_Array_2  := Int_Array_Type'Input(Data_Stream);      TC_Mod_Array_2  := Mod_Array_Type'Input(Data_Stream);      TC_Str_Array_2  := Str_Array_Type'Input(Data_Stream);      TC_UStr_Array_2 := Unb_Str_Array_Type'Input(Data_Stream);      if TC_Char_Array_2 /= Char_Array then         Report.Failed("Character array values do not match");      end if;      if TC_Enum_Array_2 /= Enum_Array then         Report.Failed("Enumeration array values do not match");      end if;      if TC_Fix_Array_2 /= Fix_Array then         Report.Failed("Fixed point array values do not match");      end if;      if TC_Flt_Array_2 /= Flt_Array then         Report.Failed("Floating point array values do not match");      end if;      if TC_Int_Array_2 /= Int_Array then         Report.Failed("Integer array values do not match");      end if;      if TC_Mod_Array_2 /= Mod_Array then         Report.Failed("Modular array values do not match");      end if;      if TC_Str_Array_2 /= Str_Array then         Report.Failed("String array values do not match");      end if;      if TC_UStr_Array_2 /= UStr_Array then         Report.Failed("Unbounded_String array values do not match");      end if;   exception      when Incomplete =>         raise;      when others => Report.Failed ("Exception raised in Test_Block");   end Test_Block;   Deletion:   begin      -- Delete the data file.      if not Ada.Text_IO.Is_Open(Data_File) then         Ada.Text_IO.Open(Data_File, Ada.Text_IO.In_File, Data_Filename);      end if;      Ada.Text_IO.Delete(Data_File);   exception      when others =>         Report.Failed            ( "Delete not properly implemented for Text_IO" );   end Deletion;   Report.Result;exception   when Incomplete =>      Report.Result;   when others     =>      Report.Failed ( "Unexpected exception" );      Report.Result;end CXAC004;

⌨️ 快捷键说明

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