cxf3002.a

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

A
232
字号
-- CXF3002.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 functionality contained in package--      Ada.Wide_Text_IO.Editing is available and produces correct results.---- TEST DESCRIPTION:--      This test is designed to validate the procedures and functions that--      are found in package Ada.Wide_Text_IO.Editing, the "wide" --      complementary package to Ada.Text_IO.Editing.  The test is similar --      to CXF3301, which tested a large portion of the Ada.Text_IO.Editing--      package.  Additional testing has been added here to cover the balance--      of the Wide_Text_IO.Editing child package.--      This test is structured using tables of data, consisting of--      numerical values, picture strings, and expected image--      result strings.  ----      Each picture string is checked for validity, and an invalid picture --      string will cause immediate test failure on its first pass through--      the evaluation loop.  Inside the evaluation loop, each decimal data --      item is combined with each of the picture strings as parameters to a--      call to Image, and the result of each call is compared to an --      expected edited output result string.----      Note: Each of the functions Valid, To_Picture, and Pic_String has--            String (rather than Wide_String) as its parameter or result--            subtype, since a picture String is not localizable.--      --       -- CHANGE HISTORY:--      22 Jun 95   SAIC    Initial prerelease version.--      22 Aug 95   SAIC    Test name changed to CXF3002 (from CXF3401) to --                          conform with naming conventions.--      24 Feb 97   PWB.CTA Corrected picture strings and expected values.--!with Ada.Wide_Text_IO.Editing;with Report;procedure CXF3002 isbegin   Report.Test ("CXF3002", "Check that the functionality contained " &                           "in package Ada.Wide_Text_IO.Editing is " &                           "available and produces correct results");   Test_Block:   declare      use Ada.Wide_Text_IO;      Number_Of_Decimal_Items    : constant := 5;      Number_Of_Picture_Strings  : constant := 4;      Number_Of_Expected_Results : constant := Number_Of_Decimal_Items *                                               Number_Of_Picture_Strings;      Def_Cur   : constant Wide_String    := "$";      Def_Fill  : constant Wide_Character := '*';      Def_Sep   : constant Wide_Character := Editing.Default_Separator;      Def_Radix : constant Wide_Character := Editing.Default_Radix_Mark;      type String_Pointer_Type      is access String;      type Wide_String_Pointer_Type is access Wide_String;      -- Define a decimal data type, and instantiate the Decimal_Output       -- generic package for the data type.      type Decimal_Data_Type is delta 0.01 digits 16;      package Wide_Ed_Out is         new Editing.Decimal_Output(Num                => Decimal_Data_Type,                                   Default_Currency   => Def_Cur,                                   Default_Fill       => Def_Fill,                                   Default_Separator  => Def_Sep,                                   Default_Radix_Mark => Def_Radix);      -- Define types for the arrays of data that will hold the decimal data       -- values, picture strings, and expected edited output results.      type Decimal_Data_Array_Type is         array (Integer range <>) of Decimal_Data_Type;      type Picture_String_Array_Type is         array (Integer range <>) of String_Pointer_Type;      type Edited_Output_Results_Array_Type is         array (Integer range <>) of Wide_String_Pointer_Type;      -- Define the data arrays for this test.      Decimal_Data :         Decimal_Data_Array_Type(1..Number_Of_Decimal_Items) :=          ( 1 =>  5678.90,            2 => -6789.01,            3 =>     0.00,            4 =>     0.20,            5 =>     3.45          );      Picture_Strings :         Picture_String_Array_Type(1..Number_Of_Picture_Strings) :=          ( 1 => new String'("-$$_$$9.99"),            2 => new String'("-$$_$$$.$$"),            3 => new String'("-ZZZZ.ZZ"),            4 => new String'("-$$$_999.99")          );      Edited_Output :        Edited_Output_Results_Array_Type(1..Number_Of_Expected_Results) :=           ( 1 => new Wide_String'(" $5,678.90"),                2 => new Wide_String'(" $5,678.90"),                3 => new Wide_String'(" 5678.90"),                 4 => new Wide_String'("  $5,678.90"),              5 => new Wide_String'("-$6,789.01"),            6 => new Wide_String'("-$6,789.01"),            7 => new Wide_String'("-6789.01"),            8 => new Wide_String'("- $6,789.01"),            9 => new Wide_String'("     $0.00"),           10 => new Wide_String'("          "),               11 => new Wide_String'("        "),                12 => new Wide_String'("   $ 000.00"),             13 => new Wide_String'("     $0.20"),           14 => new Wide_String'("      $.20"),               15 => new Wide_String'("     .20"),                16 => new Wide_String'("   $ 000.20"),           17 => new Wide_String'("     $3.45"),           18 => new Wide_String'("     $3.45"),           19 => new Wide_String'("    3.45"),           20 => new Wide_String'("   $ 003.45")          );      TC_Picture    : Editing.Picture;      TC_Loop_Count : Natural := 0;   begin      -- Compare string result of Image with expected edited output wide       -- string.        Evaluate_Edited_Output:      for i in 1..Number_Of_Decimal_Items loop         for j in 1..Number_Of_Picture_Strings loop            TC_Loop_Count := TC_Loop_Count + 1;            -- Check on the validity of the picture strings prior to            -- processing.            if Editing.Valid(Picture_Strings(j).all) then               -- Create the picture object from the picture string.               TC_Picture := Editing.To_Picture(Picture_Strings(j).all);               -- Check results of function Decimal_Output.Valid.               if not Wide_Ed_Out.Valid(Decimal_Data(i), TC_Picture) then                  Report.Failed("Incorrect result from function Valid "    &                                "when examining the picture string that "  &                                "was produced from string "                &                                Integer'Image(j) & " in conjunction with " &                                "decimal data item # " & Integer'Image(i));               end if;               -- Check results of function Editing.Pic_String.               if Editing.Pic_String(TC_Picture) /= Picture_Strings(j).all then                  Report.Failed("Incorrect result from To_Picture/"  &                                "Pic_String conversion for picture " &                                "string # " & Integer'Image(j));               end if;               -- Compare actual edited output result of Function Image with               -- the expected result.               if Wide_Ed_Out.Image(Decimal_Data(i), TC_Picture) /=                  Edited_Output(TC_Loop_Count).all               then                  Report.Failed("Incorrect result from Function Image, " &                                "when used with decimal data item # "    &                                Integer'Image(i)                         &                                " and picture string # "                  &                                Integer'Image(j));               end if;            else               Report.Failed("Picture String # " & Integer'Image(j) &                             "reported as being invalid");            end if;         end loop;      end loop Evaluate_Edited_Output;   exception      when Editing.Picture_Error =>         Report.Failed ("Picture_Error raised in Test_Block");      when Layout_Error          =>         Report.Failed ("Layout_Error raised in Test_Block");      when others                =>          Report.Failed ("Exception raised in Test_Block");   end Test_Block;   Report.Result;end CXF3002;

⌨️ 快捷键说明

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