-- 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;