summaryrefslogtreecommitdiff
path: root/gcc/testsuite/ada/acats/tests/cxf/cxf3a04.a
diff options
context:
space:
mode:
authorupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
committerupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
commit554fd8c5195424bdbcabf5de30fdc183aba391bd (patch)
tree976dc5ab7fddf506dadce60ae936f43f58787092 /gcc/testsuite/ada/acats/tests/cxf/cxf3a04.a
downloadcbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.bz2
cbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.xz
obtained gcc-4.6.4.tar.bz2 from upstream website;upstream
verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository.
Diffstat (limited to 'gcc/testsuite/ada/acats/tests/cxf/cxf3a04.a')
-rw-r--r--gcc/testsuite/ada/acats/tests/cxf/cxf3a04.a293
1 files changed, 293 insertions, 0 deletions
diff --git a/gcc/testsuite/ada/acats/tests/cxf/cxf3a04.a b/gcc/testsuite/ada/acats/tests/cxf/cxf3a04.a
new file mode 100644
index 000000000..9eee39bb6
--- /dev/null
+++ b/gcc/testsuite/ada/acats/tests/cxf/cxf3a04.a
@@ -0,0 +1,293 @@
+-- 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 is
+begin
+
+ 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;