OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gcc-4.2.2/] [gcc/] [testsuite/] [ada/] [acats/] [tests/] [cxa/] [cxa4034.a] - Blame information for rev 867

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 149 jeremybenn
-- CXA4034.A
2
--
3
--                             Grant of Unlimited Rights
4
--
5
--     The Ada Conformity Assessment Authority (ACAA) holds unlimited
6
--     rights in the software and documentation contained herein. Unlimited
7
--     rights are the same as those granted by the U.S. Government for older
8
--     parts of the Ada Conformity Assessment Test Suite, and are defined
9
--     in DFAR 252.227-7013(a)(19). By making this public release, the ACAA
10
--     intends to confer upon all recipients unlimited rights equal to those
11
--     held by the ACAA. These rights include rights to use, duplicate,
12
--     release or disclose the released technical data and computer software
13
--     in whole or in part, in any manner and for any purpose whatsoever, and
14
--     to have or permit others to do so.
15
--
16
--                                    DISCLAIMER
17
--
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
--*
25
--
26
-- OBJECTIVE:
27
--    Check that Ada.Strings.Bounded.Slice raises Index_Error if
28
--    High > Length (Source) or Low > Length (Source) + 1.
29
--    (Defect Report 8652/0049).
30
--
31
--    Check that Ada.Strings.Wide_Bounded.Slice raises Index_Error if
32
--    High > Length (Source) or Low > Length (Source) + 1.
33
--
34
-- CHANGE HISTORY:
35
--    12 FEB 2001   PHL   Initial version
36
--    14 MAR 2001   RLB   Added Wide_Bounded subtest.
37
--
38
--!
39
with Ada.Exceptions;
40
use Ada.Exceptions;
41
with Ada.Strings.Bounded;
42
with Ada.Strings.Wide_Bounded;
43
use Ada.Strings;
44
with Report;
45
use Report;
46
procedure CXA4034 is
47
 
48
    package Bs is new Ada.Strings.Bounded.Generic_Bounded_Length (40);
49
 
50
    package WBs is new Ada.Strings.Wide_Bounded.Generic_Bounded_Length (32);
51
 
52
    Source : String (Ident_Int (1) .. Ident_Int (30));
53
 
54
    Wide_Source : Wide_String (Ident_Int (1) .. Ident_Int (24));
55
 
56
    X : Bs.Bounded_String;
57
 
58
    WX : WBs.Bounded_Wide_String;
59
 
60
begin
61
    Test ("CXA4034",
62
          "Check that Slice raises Index_Error if either Low or High is " &
63
             "greater than the Length(Source) for Ada.Strings.Bounded and " &
64
             "Ada.Strings.Wide_Bounded");
65
 
66
    -- Fill Source with "ABC..."
67
    for I in Source'Range loop
68
        Source (I) := Ident_Char (Character'Val (I +
69
                        Character'Pos ('A') - Source'First));
70
    end loop;
71
    -- and W with "ABC..."
72
    for I in Wide_Source'Range loop
73
        Wide_Source (I) := Ident_Wide_Char (Wide_Character'Val (I +
74
                         Wide_Character'Pos ('A') - Wide_Source'First));
75
    end loop;
76
 
77
    X := Bs.To_Bounded_String (Source);
78
 
79
    begin
80
        declare
81
            S : constant String :=
82
               Bs.Slice (X, Low => Ident_Int (28), High => Ident_Int (41));
83
        begin
84
            Failed ("No exception raised by Slice - 1");
85
            if S = Source then
86
                Comment ("Don't optimize S");
87
            end if;
88
        end;
89
    exception
90
        when Index_Error =>
91
            null; -- Expected exception.
92
        when E: others =>
93
            Failed ("Exception raised - " & Exception_Name (E) &
94
                    " - " & Exception_Message (E) & " - 1");
95
    end;
96
 
97
    begin
98
        declare
99
            S : constant String :=
100
               Bs.Slice (X, Low => Ident_Int (8), High => Ident_Int (31));
101
        begin
102
            Failed ("No exception raised by Slice - 2");
103
            if S = Source then
104
                Comment ("Don't optimize S");
105
            end if;
106
        end;
107
    exception
108
        when Index_Error =>
109
            null; -- Expected exception.
110
        when E: others =>
111
            Failed ("Exception raised - " & Exception_Name (E) &
112
                    " - " & Exception_Message (E) & " - 2");
113
    end;
114
 
115
    begin
116
        declare
117
            S : constant String :=
118
               Bs.Slice (X, Low => Ident_Int (15), High => Ident_Int (30));
119
        begin
120
            if S /= Source(15..30) then
121
                Failed ("Wrong result - 3");
122
            end if;
123
        end;
124
    exception
125
        when E: others =>
126
            Failed ("Exception raised - " & Exception_Name (E) &
127
                    " - " & Exception_Message (E) & " - 3");
128
    end;
129
 
130
    begin
131
        declare
132
            S : constant String :=
133
               Bs.Slice (X, Low => Ident_Int (42), High => Ident_Int (28));
134
        begin
135
            Failed ("No exception raised by Slice - 4");
136
            if S = Source then
137
                Comment ("Don't optimize S");
138
            end if;
139
        end;
140
    exception
141
        when Index_Error =>
142
            null; -- Expected exception.
143
        when E: others =>
144
            Failed ("Exception raised - " & Exception_Name (E) &
145
                    " - " & Exception_Message (E) & " - 4");
146
    end;
147
 
148
    begin
149
        declare
150
            S : constant String :=
151
               Bs.Slice (X, Low => Ident_Int (31), High => Ident_Int (28));
152
        begin
153
            if S /= "" then
154
                Failed ("Wrong result - 5");
155
            end if;
156
        end;
157
    exception
158
        when E: others =>
159
            Failed ("Exception raised - " & Exception_Name (E) &
160
                    " - " & Exception_Message (E) & " - 5");
161
    end;
162
 
163
    begin
164
        declare
165
            S : constant String :=
166
               Bs.Slice (X, Low => Ident_Int (30), High => Ident_Int (30));
167
        begin
168
            if S /= Source(30..30) then
169
                Failed ("Wrong result - 6");
170
            end if;
171
        end;
172
    exception
173
        when E: others =>
174
            Failed ("Exception raised - " & Exception_Name (E) &
175
                    " - " & Exception_Message (E) & " - 6");
176
    end;
177
 
178
    WX := WBs.To_Bounded_Wide_String (Wide_Source);
179
 
180
    begin
181
        declare
182
            W : constant Wide_String :=
183
               WBs.Slice (WX, Low => Ident_Int (21), High => Ident_Int (33));
184
        begin
185
            Failed ("No exception raised by Slice - 7");
186
            if W = Wide_Source then
187
                Comment ("Don't optimize W");
188
            end if;
189
        end;
190
    exception
191
        when Index_Error =>
192
            null; -- Expected exception.
193
        when E: others =>
194
            Failed ("Exception raised - " & Exception_Name (E) &
195
                    " - " & Exception_Message (E) & " - 7");
196
    end;
197
 
198
    begin
199
        declare
200
            W : constant Wide_String :=
201
               WBs.Slice (WX, Low => Ident_Int (8), High => Ident_Int (25));
202
        begin
203
            Failed ("No exception raised by Slice - 8");
204
            if W = Wide_Source then
205
                Comment ("Don't optimize W");
206
            end if;
207
        end;
208
    exception
209
        when Index_Error =>
210
            null; -- Expected exception.
211
        when E: others =>
212
            Failed ("Exception raised - " & Exception_Name (E) &
213
                    " - " & Exception_Message (E) & " - 8");
214
    end;
215
 
216
    begin
217
        declare
218
            W : constant Wide_String :=
219
               WBs.Slice (WX, Low => Ident_Int (15), High => Ident_Int (24));
220
        begin
221
            if W /= Wide_Source(15..24) then
222
                Failed ("Wrong result - 8");
223
            end if;
224
        end;
225
    exception
226
        when E: others =>
227
            Failed ("Exception raised - " & Exception_Name (E) &
228
                    " - " & Exception_Message (E) & " - 9");
229
    end;
230
 
231
    begin
232
        declare
233
            W : constant Wide_String :=
234
               WBs.Slice (WX, Low => Ident_Int (36), High => Ident_Int (20));
235
        begin
236
            Failed ("No exception raised by Slice - 10");
237
            if W = Wide_Source then
238
                Comment ("Don't optimize W");
239
            end if;
240
        end;
241
    exception
242
        when Index_Error =>
243
            null; -- Expected exception.
244
        when E: others =>
245
            Failed ("Exception raised - " & Exception_Name (E) &
246
                    " - " & Exception_Message (E) & " - 10");
247
    end;
248
 
249
    begin
250
        declare
251
            W : constant Wide_String :=
252
               WBs.Slice (WX, Low => Ident_Int (25), High => Ident_Int (21));
253
        begin
254
            if W /= "" then
255
                Failed ("Wrong result - 11");
256
            end if;
257
        end;
258
    exception
259
        when E: others =>
260
            Failed ("Exception raised - " & Exception_Name (E) &
261
                    " - " & Exception_Message (E) & " - 11");
262
    end;
263
 
264
    begin
265
        declare
266
            W : constant Wide_String :=
267
               WBs.Slice (WX, Low => Ident_Int (24), High => Ident_Int (24));
268
        begin
269
            if W /= Wide_Source(24..24) then
270
                Failed ("Wrong result - 12");
271
            end if;
272
        end;
273
    exception
274
        when E: others =>
275
            Failed ("Exception raised - " & Exception_Name (E) &
276
                    " - " & Exception_Message (E) & " - 12");
277
    end;
278
 
279
    Result;
280
end CXA4034;
281
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.