2003-12-26 Guilhem Lavaux <guilhem@kaffe.org>
[official-gcc.git] / gcc / testsuite / ada / acats / tests / cxf / cxf3004.a
blob146047bc82464d6aefbe4fda4375b45450120fc7
1 -- CXF3004.A
2 --
3 -- Grant of Unlimited Rights
4 --
5 -- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
6 -- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
7 -- unlimited rights in the software and documentation contained herein.
8 -- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
9 -- this public release, the Government intends to confer upon all
10 -- recipients unlimited rights equal to those held by the Government.
11 -- These rights include rights to use, duplicate, release or disclose the
12 -- released technical data and computer software in whole or in part, in
13 -- any manner and for any purpose whatsoever, and to have or permit others
14 -- to do so.
16 -- DISCLAIMER
18 -- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
19 -- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
20 -- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
21 -- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
22 -- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
23 -- PARTICULAR PURPOSE OF SAID MATERIAL.
24 --*
26 -- OBJECTIVE:
27 -- Check that statically identifiable picture strings can be used
28 -- in conjunction with function Image to produce output strings
29 -- appropriate to foreign currency representations.
31 -- Check that statically identifiable picture strings will cause
32 -- function Image to raise Layout_Error under the appropriate
33 -- conditions.
34 --
35 -- TEST DESCRIPTION:
36 -- This test defines several picture strings that are statically
37 -- identifiable, (i.e., Pic : Picture := To_Picture("..."); ).
38 -- These picture strings are used in conjunction with decimal data
39 -- as parameters in calls to function Image.
41 --
42 -- CHANGE HISTORY:
43 -- 11 Apr 96 SAIC Initial release for 2.1.
45 --!
47 with Report;
48 with Ada.Text_IO.Editing;
49 with Ada.Exceptions;
51 procedure CXF3004 is
52 begin
54 Report.Test ("CXF3004", "Check that statically identifiable " &
55 "picture strings will cause function Image " &
56 "to raise Layout_Error under appropriate " &
57 "conditions");
59 Test_Block:
60 declare
62 use Ada.Exceptions;
63 use Ada.Text_IO.Editing;
65 FF_Currency : constant String := "FF";
66 DM_Currency : constant String := "DM";
67 FF_Separator : constant Character := '.';
68 DM_Separator : constant Character := ',';
69 FF_Radix : constant Character := ',';
70 DM_Radix : constant Character := '.';
71 Blank_Fill : constant Character := ' ';
72 Star_Fill : constant Character := '*';
75 -- Define a decimal data type, and instantiate the Decimal_Output
76 -- generic package for the data type.
78 type Decimal_Data_Type is delta 0.01 digits 16;
80 package Image_IO is
81 new Decimal_Output(Num => Decimal_Data_Type,
82 Default_Currency => "$",
83 Default_Fill => Star_Fill,
84 Default_Separator => Default_Separator,
85 Default_Radix_Mark => DM_Radix);
89 -- The following decimal data items are used with picture strings
90 -- in evaluating use of foreign currency symbols.
92 Dec_Data_1 : Decimal_Data_Type := 123456.78;
93 Dec_Data_2 : Decimal_Data_Type := 32.10;
94 Dec_Data_3 : Decimal_Data_Type := -1234.57;
95 Dec_Data_4 : Decimal_Data_Type := 123456.78;
96 Dec_Data_5 : Decimal_Data_Type := 12.34;
97 Dec_Data_6 : Decimal_Data_Type := 12.34;
98 Dec_Data_7 : Decimal_Data_Type := 12345.67;
101 -- Statically identifiable picture strings.
102 -- These strings are used in conjunction with non-default values
103 -- for Currency string, Radix mark, and Separator in calls to
104 -- function Image.
106 Picture_1 : Picture := To_Picture("-###**_***_**9.99"); -- FF
107 Picture_2 : Picture := To_Picture("###z_ZZ9.99"); -- FF
108 Picture_3 : Picture := To_Picture("<<<<_<<<.<<###>"); -- DM
109 Picture_4 : Picture := To_Picture("-$_$$$_$$$_$$9.99"); -- DM
110 Picture_5 : Picture := To_Picture("$Zz9.99"); -- DM
111 Picture_6 : Picture := To_Picture("$$$9.99"); -- DM
112 Picture_7 : Picture := To_Picture("###_###_##9.99"); -- CHF
115 -- The following ten edited output strings correspond to the ten
116 -- foreign currency picture strings.
118 Output_1 : constant String := " FF***123.456,78";
119 Output_2 : constant String := " FF 32,10";
120 Output_3 : constant String := " (1,234.57DM )";
121 Output_4 : constant String := " DM123,456.78";
122 Output_5 : constant String := "DM 12.34";
123 Output_6 : constant String := " DM12.34";
124 Output_7 : constant String := " CHF12,345.67";
127 begin
129 -- Check the results of function Image, using the picture strings
130 -- constructed above, in creating foreign currency edited output
131 -- strings.
133 if Image_IO.Image(Item => Dec_Data_1,
134 Pic => Picture_1,
135 Currency => FF_Currency,
136 Fill => Star_Fill,
137 Separator => FF_Separator,
138 Radix_Mark => FF_Radix) /= Output_1
139 then
140 Report.Failed("Incorrect result from Fn. Image using Picture_1");
141 end if;
143 if Image_IO.Image(Item => Dec_Data_2,
144 Pic => Picture_2,
145 Currency => FF_Currency,
146 Fill => Blank_Fill,
147 Separator => FF_Separator,
148 Radix_Mark => FF_Radix) /= Output_2
149 then
150 Report.Failed("Incorrect result from Fn. Image using Picture_2");
151 end if;
153 if Image_IO.Image(Item => Dec_Data_3,
154 Pic => Picture_3,
155 Currency => DM_Currency,
156 Fill => Blank_Fill,
157 Separator => DM_Separator,
158 Radix_Mark => DM_Radix) /= Output_3
159 then
160 Report.Failed("Incorrect result from Fn. Image using Picture_3");
161 end if;
163 if Image_IO.Image(Item => Dec_Data_4,
164 Pic => Picture_4,
165 Currency => DM_Currency,
166 Fill => Blank_Fill,
167 Separator => DM_Separator,
168 Radix_Mark => DM_Radix) /= Output_4
169 then
170 Report.Failed("Incorrect result from Fn. Image using Picture_4");
171 end if;
173 if Image_IO.Image(Item => Dec_Data_5,
174 Pic => Picture_5,
175 Currency => DM_Currency,
176 Fill => Blank_Fill,
177 Separator => DM_Separator,
178 Radix_Mark => DM_Radix) /= Output_5
179 then
180 Report.Failed("Incorrect result from Fn. Image using Picture_5");
181 end if;
183 if Image_IO.Image(Item => Dec_Data_6,
184 Pic => Picture_6,
185 Currency => DM_Currency,
186 Fill => Blank_Fill,
187 Separator => DM_Separator,
188 Radix_Mark => DM_Radix) /= Output_6
189 then
190 Report.Failed("Incorrect result from Fn. Image using Picture_6");
191 end if;
193 if Image_IO.Image(Item => Dec_Data_7,
194 Pic => Picture_7,
195 Currency => "CHF",
196 Fill => Blank_Fill,
197 Separator => ',',
198 Radix_Mark => '.') /= Output_7
199 then
200 Report.Failed("Incorrect result from Fn. Image using Picture_7");
201 end if;
204 -- The following calls of Function Image, using the specific
205 -- decimal values and picture strings provided, will cause
206 -- a Layout_Error to be raised.
207 -- Note: The data and the picture strings used in the following
208 -- evaluations are not themselves erroneous, but when used in
209 -- combination will cause Layout_Error to be raised.
211 Exception_Block_1 :
212 declare
213 Erroneous_Data_1 : Decimal_Data_Type := 12.34;
214 Erroneous_Picture_1 : Picture := To_Picture("9.99");
215 N : constant Natural := Image_IO.Length(Erroneous_Picture_1);
216 TC_String : String(1..N);
217 begin
218 TC_String := Image_IO.Image(Erroneous_Data_1, Erroneous_Picture_1);
219 Report.Failed("Layout_Error not raised by combination of " &
220 "Erroneous_Picture_1 and Erroneous_Data_1");
221 Report.Comment("Should never be printed: " & TC_String);
222 exception
223 when Ada.Text_IO.Layout_Error => null; -- OK, expected exception.
224 when The_Error : others =>
225 Report.Failed
226 ("The following exception was incorrectly raised in " &
227 "Exception_Block_1: " & Exception_Name(The_Error));
228 end Exception_Block_1;
230 Exception_Block_2 :
231 declare
232 Erroneous_Data_2 : Decimal_Data_Type := -12.34;
233 Erroneous_Picture_2 : Picture := To_Picture("99.99");
234 N : constant Natural := Image_IO.Length(Erroneous_Picture_2);
235 TC_String : String(1..N);
236 begin
237 TC_String := Image_IO.Image(Erroneous_Data_2, Erroneous_Picture_2);
238 Report.Failed("Layout_Error not raised by combination of " &
239 "Erroneous_Picture_2 and Erroneous_Data_2");
240 Report.Comment("Should never be printed: " & TC_String);
241 exception
242 when Ada.Text_IO.Layout_Error => null; -- OK, expected exception.
243 when The_Error : others =>
244 Report.Failed
245 ("The following exception was incorrectly raised in " &
246 "Exception_Block_2: " & Exception_Name(The_Error));
247 end Exception_Block_2;
249 exception
250 when The_Error : others =>
251 Report.Failed("The following exception was raised in the " &
252 "Test_Block: " & Exception_Name(The_Error));
253 end Test_Block;
255 Report.Result;
257 end CXF3004;