view gcc/testsuite/ada/acats/tests/cxf/cxf3a05.a @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
line wrap: on
line source

-- CXF3A05.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 Function Image produces correct results when provided
--      non-default parameters for Currency, Fill, Separator, and 
--      Radix_Mark at either the time of package Decimal_Output instantiation,
--      or in a call to Image.  Check non-default parameters that are 
--      appropriate for foreign currency representations.
--
-- 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, resulting from several different
--      instantiations of Decimal_Output, are compared with expected
--      edited output string results.  The primary focus of this test is to
--      examine the effect of non-default parameters, provided during the 
--      instantiation of package Decimal_Output, or provided as part of a
--      call to Function Image (that resulted from an instantiation of
--      Decimal_Output that used default parameters).  The non-default
--      parameters provided correspond to foreign currency representations.
--      
--      For each picture string/decimal data combination examined, two
--      evaluations of Image are performed.  These correspond to the two
--      methods of providing the appropriate non-default parameters described
--      above.  Both forms of Function Image should produce the same expected
--      edited output string.
--      
-- TEST FILES:
--      The following files comprise this test:
--
--         FXF3A00.A   (foundation code)
--      => CXF3A05.A
--
--       
-- CHANGE HISTORY:
--      26 JAN 95   SAIC    Initial prerelease version.
--      17 FEB 97   PWB.CTA Correct array indices for Foreign_Strings array
--                          references.
--!

with FXF3A00;
with Ada.Text_IO.Editing;
with Report;

procedure CXF3A05 is
begin

   Report.Test ("CXF3A05", "Check that Function Image produces "        &
                           "correct results when provided non-default " &
                           "parameters for Currency, Fill, Separator, " &
                           "and Radix_Mark, appropriate to foreign "    &
                           "currency representations");

   Test_Block:
   declare

      use Ada.Text_IO;

      -- Instantiate the Decimal_Output generic package for the several
      -- combinations of Default_Currency, Default_Fill, Default_Separator,
      -- and Default_Radix_Mark.

      package Pack_Def is                   -- Uses default parameter values.
        new Editing.Decimal_Output(FXF3A00.Decimal_Type_2DP);

      package Pack_FF  is
        new Editing.Decimal_Output(FXF3A00.Decimal_Type_2DP,
                                   Default_Currency   => "FF",
                                   Default_Fill       => '*',
                                   Default_Separator  => '.',
                                   Default_Radix_Mark => ',');

      package Pack_DM  is
        new Editing.Decimal_Output(FXF3A00.Decimal_Type_2DP,
                                   Default_Currency   => "DM",
                                   Default_Fill       => '*',
                                   Default_Separator  => ',',
                                   Default_Radix_Mark => '.');

      package Pack_CHF  is
        new Editing.Decimal_Output(FXF3A00.Decimal_Type_2DP,
                                   Default_Currency   => "CHF",
                                   Default_Fill       => '*',
                                   Default_Separator  => ',',
                                   Default_Radix_Mark => '.');


      TC_Picture    : Editing.Picture;
      TC_Start_Loop : constant := 11;
      TC_End_Loop   : constant := TC_Start_Loop +                       -- 20
                                  FXF3A00.Number_Of_Foreign_Strings - 1;

   begin

      -- In the case of each particular type of foreign string examined,
      -- two versions of Function Image are examined.  First, a version of
      -- the function that originated from an instantiation of Decimal_Output
      -- with non-default parameters is checked.  This version of Image is 
      -- called making use of default parameters in the actual function call.
      -- In addition, a version of Function Image is checked that resulted 
      -- from an instantiation of Decimal_Output using default parameters, 
      -- but which uses non-default parameters in the function call.

      for i in TC_Start_Loop..TC_End_Loop loop

         -- Create the picture object from the picture string.

         TC_Picture := Editing.To_Picture
                         (FXF3A00.Foreign_Strings(i - TC_Start_Loop + 1).all);

         -- Based on the ordering of the specific foreign picture strings
         -- in the FXF3A00.Foreign_Strings table, the following conditional
         -- is used to determine which type of currency is being examined
         -- as the loop executes.

         if i < TC_Start_Loop + FXF3A00.Number_Of_FF_Strings then -- (11-14)
            -- Process the FF picture strings.

            -- Check the result of Function Image from an instantiation
            -- of Decimal_Output that provided non-default actual 
            -- parameters at the time of package instantiation, and uses
            -- default parameters in the call of Image.

            if Pack_FF.Image(Item => FXF3A00.Data_With_2DP(i),
                             Pic  => TC_Picture)  /=
               FXF3A00.Edited_Output(i).all
            then
               Report.Failed("Incorrect output from Function Image "     &
                             "from package instantiated with FF "        &
                             "related parameters, using picture string " &
                             FXF3A00.Foreign_Strings
                               (i - TC_Start_Loop + 1).all);
            end if;

            -- Check the result of Function Image that originated from 
            -- an instantiation of Decimal_Output where default parameters
            -- were used at the time of package Instantiation, but where
            -- non-default parameters are provided in the call of Image.

            if Pack_Def.Image(Item       => FXF3A00.Data_With_2DP(i),
                              Pic        => TC_Picture,
                              Currency   => "FF",
                              Fill       => '*',
                              Separator  => '.',
                              Radix_Mark => ',')  /=
               FXF3A00.Edited_Output(i).all
            then
               Report.Failed("Incorrect output from Function Image "     &
                             "from package instantiated with default "   &
                             "parameters, using picture string "         &
                             FXF3A00.Foreign_Strings
                               (i - TC_Start_Loop + 1).all               &
                             ", and FF related parameters in call to Image");
            end if;


         elsif i < TC_Start_Loop +                                -- (15-19)
                   FXF3A00.Number_Of_FF_Strings + 
                   FXF3A00.Number_Of_DM_Strings  then
            -- Process the DM picture strings.

            -- Non-default instantiation parameters, default function call
            -- parameters.

            if Pack_DM.Image(Item => FXF3A00.Data_With_2DP(i),
                             Pic  => TC_Picture)  /=
               FXF3A00.Edited_Output(i).all
            then
               Report.Failed("Incorrect output from Function Image "     &
                             "from package instantiated with DM "        &
                             "related parameters, using picture string " &
                             FXF3A00.Foreign_Strings
                               (i - TC_Start_Loop + 1).all);
            end if;

            -- Default instantiation parameters, non-default function call
            -- parameters.

            if Pack_Def.Image(Item       => FXF3A00.Data_With_2DP(i),
                              Pic        => TC_Picture,
                              Currency   => "DM",
                              Fill       => '*',
                              Separator  => ',',
                              Radix_Mark => '.')  /=
               FXF3A00.Edited_Output(i).all
            then
               Report.Failed("Incorrect output from Function Image "     &
                             "from package instantiated with default "   &
                             "parameters, using picture string "         &
                             FXF3A00.Foreign_Strings
                               (i - TC_Start_Loop + 1).all               &
                             ", and DM related parameters in call to Image");
            end if;


         else                                                     -- (i=20)
            -- Process the CHF string.

            -- Non-default instantiation parameters, default function call
            -- parameters.

            if Pack_CHF.Image(FXF3A00.Data_With_2DP(i), TC_Picture)  /=
               FXF3A00.Edited_Output(i).all
            then
               Report.Failed("Incorrect output from Function Image "     &
                             "from package instantiated with CHF "       &
                             "related parameters, using picture string " &
                             FXF3A00.Foreign_Strings
                               (i - TC_Start_Loop + 1).all);
            end if;

            -- Default instantiation parameters, non-default function call
            -- parameters.

            if Pack_Def.Image(FXF3A00.Data_With_2DP(i),
                              TC_Picture,
                              "CHF",
                              '*',
                              ',',
                              '.')  /=
               FXF3A00.Edited_Output(i).all
            then
               Report.Failed("Incorrect output from Function Image "     &
                             "from package instantiated with default "   &
                             "parameters, using picture string "         &
                             FXF3A00.Foreign_Strings
                               (i - TC_Start_Loop + 1).all               &
                             ", and CHF related parameters in call to Image");
            end if;

         end if;

      end loop;

   exception
      when others => Report.Failed ("Exception raised in Test_Block");
   end Test_Block;

   Report.Result;

end CXF3A05;