cxf3a04.a

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

A
294
字号
-- CXF3A04.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 edited output string value returned by Function Image--      is correct.---- TEST DESCRIPTION:--      This test is structured using tables of data, consisting of--      numerical values, picture strings, and expected image--      result strings.  These data tables are found in package FXF3A00.--      --      The results of the Image function are examined under a number of --      circumstances.  The generic package Decimal_Output is instantiated--      twice, for decimal data with delta 0.01 and delta 1.0.  Each version--      of Image is called with both default parameters and user-provided--      parameters.  The results of each call to Image are compared to an--      expected edited output result string.--      --      In addition, three calls to Image are designed to raise Layout_Error,--      due to the combination of decimal value and picture string provided--      as input parameters.  If Layout_Error is not raised, or an alternate--      exception is raised instead, test failure results.--      -- TEST FILES:--      The following files comprise this test:----         FXF3A00.A   (foundation code)--      => CXF3A04.A----       -- CHANGE HISTORY:--      22 JAN 95   SAIC    Initial prerelease version.--      11 MAR 97   PWB.CTA Corrected incorrect index expression--!with FXF3A00;with Ada.Text_IO.Editing;with Report;procedure CXF3A04 isbegin   Report.Test ("CXF3A04", "Check that the string value returned by " &                           "Function Image is correct, based on the " &                           "numerical data and picture formatting "   &                           "parameters provided to the function");   Test_Block:   declare      use Ada.Text_IO;      -- Instantiate the Decimal_Output generic package for the two data      -- types, using the default values for the Default_Currency,      -- Default_Fill, Default_Separator, and Default_Radix_Mark       -- parameters.      package Pack_NDP is         new Editing.Decimal_Output (FXF3A00.Decimal_Type_NDP);      package Pack_2DP is         new Editing.Decimal_Output (FXF3A00.Decimal_Type_2DP);      TC_Currency   : constant String    := "$";      TC_Fill       : constant Character := '*';      TC_Separator  : constant Character := ',';      TC_Radix_Mark : constant Character := '.';      TC_Picture    : Editing.Picture;   begin      Two_Decimal_Place_Data:      -- Use a decimal fixed point type with delta 0.01 (two decimal places)       -- and valid picture strings. Evaluate the result of function Image       -- with the expected edited output result string.      declare           TC_Loop_End : constant :=                                     -- 10           FXF3A00.Number_Of_2DP_Items - FXF3A00.Number_Of_Foreign_Strings;      begin         -- The first 10 picture strings in the Valid_Strings array          -- correspond to data values of a decimal type with delta 0.01.          -- Compare string result of Image with expected edited output          -- string.  Evaluate data using both default parameters of Image         -- and user-provided parameter values.         for i in 1..TC_Loop_End loop            -- Create the picture object from the picture string.            TC_Picture := Editing.To_Picture(FXF3A00.Valid_Strings(i).all);            -- Use the default parameters for this loop evaluation of Image.            if Pack_2DP.Image(FXF3A00.Data_With_2DP(i), TC_Picture) /=               FXF3A00.Edited_Output(i).all            then               Report.Failed("Incorrect result from Function Image, "    &                             "when used with a decimal type with delta " &                             "0.01, picture string "                     &                             FXF3A00.Valid_Strings(i).all                &                             ", and the default parameters of Image");            end if;            -- Use user-provided parameters for this loop evaluation of Image.            if Pack_2DP.Image(Item       => FXF3A00.Data_With_2DP(i),                               Pic        => TC_Picture,                              Currency   => TC_Currency,                              Fill       => TC_Fill,                              Separator  => TC_Separator,                              Radix_Mark => TC_Radix_Mark) /=               FXF3A00.Edited_Output(i).all            then               Report.Failed("Incorrect result from Function Image, "    &                             "when used with a decimal type with delta " &                             "0.01, picture string "                     &                             FXF3A00.Valid_Strings(i).all                &                             ", and user-provided parameters");            end if;         end loop;      exception         when others =>            Report.Failed("Exception raised in Two_Decimal_Place_Data block");      end Two_Decimal_Place_Data;      No_Decimal_Place_Data:      -- Use a decimal fixed point type with delta 1.00 (no decimal places)       -- and valid picture strings. Evaluate the result of function Image       -- with the expected result string.      declare         use Editing, FXF3A00;         TC_Offset     : constant := 10;         TC_Loop_Start : constant := TC_Offset + 1;                   -- 11         TC_Loop_End   : constant := TC_Loop_Start +                                     Number_Of_NDP_Items - 1;         -- 22      begin         -- The following evaluations correspond to data values of a          -- decimal type with delta 1.0.          -- Compare string result of Image with expected edited output          -- string.  Evaluate data using both default parameters of Image         -- and user-provided parameter values.         -- Note: TC_Offset is used to align corresponding data the various         --       data tables in foundation package FXF3A00.         for i in TC_Loop_Start..TC_Loop_End loop            -- Create the picture object from the picture string.            TC_Picture := To_Picture(Valid_Strings(i).all);            -- Use the default parameters for this loop evaluation of Image.            if not (Pack_NDP.Image(Data_With_NDP(i-TC_Offset), TC_Picture) =                    Edited_Output(TC_Offset+i).all)            then               Report.Failed("Incorrect result from Function Image, "    &                             "when used with a decimal type with delta " &                             "1.0, picture string "                      &                             Valid_Strings(i).all                        &                             ", and the default parameters of Image");            end if;            -- Use user-provided parameters for this loop evaluation of Image.            if Pack_NDP.Image(Item       => Data_With_NDP(i - TC_Offset),                               Pic        => TC_Picture,                              Currency   => TC_Currency,                              Fill       => TC_Fill,                              Separator  => TC_Separator,                              Radix_Mark => TC_Radix_Mark) /=               Edited_Output(TC_Offset+i).all            then               Report.Failed("Incorrect result from Function Image, "    &                             "when used with a decimal type with delta " &                             "1.0, picture string "                      &                             Valid_Strings(i).all                        &                             ", and user-provided parameters");            end if;         end loop;      exception         when others =>            Report.Failed("Exception raised in No_Decimal_Place_Data block");      end No_Decimal_Place_Data;      Exception_Block:      -- The following three calls of Function Image, using the specific      -- decimal values and picture strings provided, will cause       -- a Layout_Error to be raised.      -- The first two evaluations use the instantiation of Decimal_Output      -- with a decimal type with delta 0.01, while the last evaluation      -- uses the instantiation with decimal type with delta 1.0.      -- Note: The data and the picture strings used in the following       --       evaluations are not themselves erroneous, but when used in      --       combination will cause Layout_Error to be raised.      begin         for i in 1..FXF3A00.Number_Of_Erroneous_Conditions loop    -- 1..3            begin               -- Create the picture object from the picture string.               TC_Picture :=                 Editing.To_Picture(FXF3A00.Erroneous_Strings(i).all);               -- Layout_Error must be raised by the following calls to               -- Function Image.               if i < 3 then  -- Choose the appropriate instantiation.                  declare                     N : constant Natural := Pack_2DP.Length(TC_Picture);                     TC_String : String(1..N);                  begin                     TC_String := Pack_2DP.Image(FXF3A00.Erroneous_Data(i),                                                 TC_Picture);                  end;               else                  declare                     use FXF3A00;                     N : constant Natural := Pack_NDP.Length(TC_Picture,                                                             TC_Currency);                     TC_String : String(1..N);                  begin                     TC_String :=                        Pack_NDP.Image(Item       => Decimal_Type_NDP(                                                      Erroneous_Data(i)),                                      Pic        => TC_Picture,                                      Currency   => TC_Currency,                                      Fill       => TC_Fill,                                      Separator  => TC_Separator,                                      Radix_Mark => TC_Radix_Mark);                  end;               end if;               Report.Failed("Layout_Error not raised by combination "  &                             "# " & Integer'Image(i) & " "              &                             "of decimal data and picture string");            exception               when Layout_Error => null;    -- Expected exception.               when others       =>                 Report.Failed("Incorrect exception raised by combination " &                               "# " & Integer'Image(i) & " "                &                               "of decimal data and picture string");            end;         end loop;      exception         when others =>            Report.Failed("Unexpected exception raised in Exception_Block");      end Exception_Block;   exception      when others => Report.Failed ("Exception raised in Test_Block");   end Test_Block;   Report.Result;end CXF3A04;

⌨️ 快捷键说明

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