cxf3004.a

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

A
258
字号
-- CXF3004.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 statically identifiable picture strings can be used--      in conjunction with function Image to produce output strings --      appropriate to foreign currency representations.----      Check that statically identifiable picture strings will cause--      function Image to raise Layout_Error under the appropriate --      conditions.--      -- TEST DESCRIPTION:--      This test defines several picture strings that are statically--      identifiable, (i.e.,  Pic : Picture := To_Picture("..."); ).--      These picture strings are used in conjunction with decimal data--      as parameters in calls to function Image.  ----       -- CHANGE HISTORY:--      11 Apr 96   SAIC    Initial release for 2.1.----!with Report;with Ada.Text_IO.Editing;with Ada.Exceptions;procedure CXF3004 isbegin   Report.Test ("CXF3004", "Check that statically identifiable "        &                           "picture strings will cause function Image " &                           "to raise Layout_Error under appropriate "   &                           "conditions");   Test_Block:   declare      use Ada.Exceptions;      use Ada.Text_IO.Editing;      FF_Currency  : constant String    := "FF";      DM_Currency  : constant String    := "DM";      FF_Separator : constant Character := '.';      DM_Separator : constant Character := ',';      FF_Radix     : constant Character := ',';      DM_Radix     : constant Character := '.';      Blank_Fill   : constant Character := ' ';      Star_Fill    : constant Character := '*';      -- 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 Image_IO is         new Decimal_Output(Num                => Decimal_Data_Type,                           Default_Currency   => "$",                           Default_Fill       => Star_Fill,                           Default_Separator  => Default_Separator,                           Default_Radix_Mark => DM_Radix);      -- The following decimal data items are used with picture strings       -- in evaluating use of foreign currency symbols.      Dec_Data_1 : Decimal_Data_Type := 123456.78;      Dec_Data_2 : Decimal_Data_Type :=     32.10;      Dec_Data_3 : Decimal_Data_Type :=  -1234.57;      Dec_Data_4 : Decimal_Data_Type := 123456.78;      Dec_Data_5 : Decimal_Data_Type :=     12.34;      Dec_Data_6 : Decimal_Data_Type :=     12.34;      Dec_Data_7 : Decimal_Data_Type :=  12345.67;      -- Statically identifiable picture strings.      -- These strings are used in conjunction with non-default values       -- for Currency string, Radix mark, and Separator in calls to      -- function Image.      Picture_1 : Picture := To_Picture("-###**_***_**9.99");    -- FF      Picture_2 : Picture := To_Picture("###z_ZZ9.99");          -- FF      Picture_3 : Picture := To_Picture("<<<<_<<<.<<###>");      -- DM      Picture_4 : Picture := To_Picture("-$_$$$_$$$_$$9.99");    -- DM      Picture_5 : Picture := To_Picture("$Zz9.99");              -- DM      Picture_6 : Picture := To_Picture("$$$9.99");              -- DM      Picture_7 : Picture := To_Picture("###_###_##9.99");       -- CHF      -- The following ten edited output strings correspond to the ten      -- foreign currency picture strings.      Output_1 : constant String := "  FF***123.456,78";      Output_2 : constant String := " FF   32,10";      Output_3 : constant String := "  (1,234.57DM )";      Output_4 : constant String := "      DM123,456.78";       Output_5 : constant String := "DM 12.34";      Output_6 : constant String := " DM12.34";      Output_7 : constant String := "  CHF12,345.67";   begin      -- Check the results of function Image, using the picture strings      -- constructed above, in creating foreign currency edited output      -- strings.      if Image_IO.Image(Item       => Dec_Data_1,                        Pic        => Picture_1,                        Currency   => FF_Currency,                        Fill       => Star_Fill,                        Separator  => FF_Separator,                        Radix_Mark => FF_Radix) /= Output_1      then         Report.Failed("Incorrect result from Fn. Image using Picture_1");      end if;      if Image_IO.Image(Item       => Dec_Data_2,                        Pic        => Picture_2,                        Currency   => FF_Currency,                        Fill       => Blank_Fill,                        Separator  => FF_Separator,                        Radix_Mark => FF_Radix) /= Output_2      then         Report.Failed("Incorrect result from Fn. Image using Picture_2");      end if;      if Image_IO.Image(Item       => Dec_Data_3,                        Pic        => Picture_3,                        Currency   => DM_Currency,                        Fill       => Blank_Fill,                        Separator  => DM_Separator,                        Radix_Mark => DM_Radix) /= Output_3      then         Report.Failed("Incorrect result from Fn. Image using Picture_3");      end if;      if Image_IO.Image(Item       => Dec_Data_4,                        Pic        => Picture_4,                        Currency   => DM_Currency,                        Fill       => Blank_Fill,                        Separator  => DM_Separator,                        Radix_Mark => DM_Radix) /= Output_4      then         Report.Failed("Incorrect result from Fn. Image using Picture_4");      end if;      if Image_IO.Image(Item       => Dec_Data_5,                        Pic        => Picture_5,                        Currency   => DM_Currency,                        Fill       => Blank_Fill,                        Separator  => DM_Separator,                        Radix_Mark => DM_Radix) /= Output_5      then         Report.Failed("Incorrect result from Fn. Image using Picture_5");      end if;      if Image_IO.Image(Item       => Dec_Data_6,                        Pic        => Picture_6,                        Currency   => DM_Currency,                        Fill       => Blank_Fill,                        Separator  => DM_Separator,                        Radix_Mark => DM_Radix) /= Output_6      then         Report.Failed("Incorrect result from Fn. Image using Picture_6");      end if;      if Image_IO.Image(Item       => Dec_Data_7,                        Pic        => Picture_7,                        Currency   => "CHF",                        Fill       => Blank_Fill,                        Separator  => ',',                        Radix_Mark => '.') /= Output_7      then         Report.Failed("Incorrect result from Fn. Image using Picture_7");      end if;      -- The following calls of Function Image, using the specific      -- decimal values and picture strings provided, will cause       -- a Layout_Error to be raised.      -- 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.      Exception_Block_1 :      declare         Erroneous_Data_1    : Decimal_Data_Type :=  12.34;         Erroneous_Picture_1 : Picture := To_Picture("9.99");         N         : constant Natural := Image_IO.Length(Erroneous_Picture_1);         TC_String : String(1..N);      begin         TC_String := Image_IO.Image(Erroneous_Data_1, Erroneous_Picture_1);         Report.Failed("Layout_Error not raised by combination of "  &                       "Erroneous_Picture_1 and Erroneous_Data_1");         Report.Comment("Should never be printed: " & TC_String);      exception         when Ada.Text_IO.Layout_Error => null; -- OK, expected exception.         when The_Error : others       =>             Report.Failed              ("The following exception was incorrectly raised in " &               "Exception_Block_1: " & Exception_Name(The_Error));      end Exception_Block_1;        Exception_Block_2 :      declare         Erroneous_Data_2    : Decimal_Data_Type :=  -12.34;         Erroneous_Picture_2 : Picture := To_Picture("99.99");         N         : constant Natural := Image_IO.Length(Erroneous_Picture_2);         TC_String : String(1..N);      begin         TC_String := Image_IO.Image(Erroneous_Data_2, Erroneous_Picture_2);         Report.Failed("Layout_Error not raised by combination of "  &                       "Erroneous_Picture_2 and Erroneous_Data_2");         Report.Comment("Should never be printed: " & TC_String);      exception         when Ada.Text_IO.Layout_Error => null; -- OK, expected exception.         when The_Error : others       =>             Report.Failed              ("The following exception was incorrectly raised in " &               "Exception_Block_2: " & Exception_Name(The_Error));      end Exception_Block_2;     exception      when The_Error : others =>          Report.Failed("The following exception was raised in the " &                       "Test_Block: " & Exception_Name(The_Error));   end Test_Block;   Report.Result;end CXF3004;

⌨️ 快捷键说明

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