2003-12-26 Guilhem Lavaux <guilhem@kaffe.org>
[official-gcc.git] / gcc / testsuite / ada / acats / tests / ce / ce3602a.ada
blobff0280303e93bce48df61cdbc841fa788c63417b
1 -- CE3602A.ADA
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 --*
25 -- OBJECTIVE:
26 -- CHECK THAT GET FOR CHARACTERS AND STRINGS ALLOW A STRING TO SPAN
27 -- OVER MORE THAN ONE LINE, SKIPPING INTERVENING LINE AND PAGE
28 -- TERMINATORS. ALSO CHECK THAT GET ACCEPTS A NULL STRING ACTUAL
29 -- PARAMETER AND A STRING SLICE.
31 -- APPLICABILITY CRITERIA:
32 -- THIS TEST IS APPLICABLE ONLY TO IMPLEMENTATIONS WHICH SUPPORT
33 -- TEXT FILES.
35 -- HISTORY:
36 -- SPS 08/30/82
37 -- VKG 01/26/83
38 -- JBG 02/22/84 CHANGED TO .ADA TEST
39 -- RJW 11/04/86 REVISED TEST TO OUTPUT A NOT_APPLICABLE
40 -- RESULT WHEN FILES ARE NOT SUPPORTED.
41 -- JLH 09/04/87 REMOVED DEPENDENCE ON RESET, CORRECTED EXCEPTION
42 -- HANDLING, AND ADDED NEW CASES FOR OBJECTIVE.
45 WITH REPORT;
46 USE REPORT;
47 WITH TEXT_IO;
48 USE TEXT_IO;
50 PROCEDURE CE3602A IS
51 INCOMPLETE : EXCEPTION;
53 BEGIN
55 TEST ("CE3602A", "CHECK THAT GET FOR CHARACTERS AND STRINGS " &
56 "ALLOWS A STRING TO SPAN OVER MORE THAN ONE " &
57 "LINE, SKIPPING INTERVENING LINE AND PAGE " &
58 "TERMINATORS. ALSO CHECK THAT GET ACCEPTS " &
59 "A NULL STRING ACTUAL PARAMETER AND A STRING " &
60 "SLICE");
62 DECLARE
63 FILE1 : FILE_TYPE;
64 ST : STRING (1 .. 40);
65 STR: STRING (1 .. 100);
66 NST: STRING (1 .. 0);
67 ORIGINAL_LINE_LENGTH : COUNT;
69 -- READ_CHARS RETURNS A STRING OF N CHARACTERS FROM A GIVEN FILE.
71 FUNCTION READ_CHARS (FILE : FILE_TYPE;
72 N : NATURAL )
73 RETURN STRING IS
74 C: CHARACTER;
75 BEGIN
76 IF N = 0 THEN RETURN "";
77 ELSE
78 GET (FILE,C);
79 RETURN C&READ_CHARS (FILE,N-1);
80 END IF;
81 EXCEPTION
82 WHEN OTHERS =>
83 FAILED ("ERROR ON READ_CHARS");
84 END READ_CHARS;
87 BEGIN
89 -- CREATE AND INITIALIZE TEST DATA FILE
91 BEGIN
92 CREATE (FILE1, OUT_FILE, LEGAL_FILE_NAME);
93 EXCEPTION
94 WHEN USE_ERROR =>
95 NOT_APPLICABLE ("USE_ERROR RAISED ON TEXT CREATE " &
96 "WITH OUT_FILE MODE");
97 RAISE INCOMPLETE;
98 WHEN NAME_ERROR =>
99 NOT_APPLICABLE ("NAME_ERROR RAISED ON TEXT " &
100 "CREATE WITH OUT_FILE MODE");
101 RAISE INCOMPLETE;
102 WHEN OTHERS =>
103 FAILED ("UNEXPECTED EXCEPTION RAISED ON " &
104 "TEXT CREATE");
105 RAISE INCOMPLETE;
106 END;
108 ORIGINAL_LINE_LENGTH := LINE_LENGTH;
110 -- LINE_LENGTH SET IN CASE IMPLEMENTATION REQUIRES BOUNDED LENGTH LINES
112 SET_LINE_LENGTH (16);
113 PUT (FILE1, "THIS LINE SHALL ");
114 SET_LINE_LENGTH (10);
115 PUT (FILE1, "SPAN OVER ");
116 SET_LINE_LENGTH (14);
117 PUT (FILE1, "SEVERAL LINES.");
118 CLOSE (FILE1);
119 SET_LINE_LENGTH (ORIGINAL_LINE_LENGTH);
122 -- BEGIN TEST
124 BEGIN
126 BEGIN
127 OPEN (FILE1, IN_FILE, LEGAL_FILE_NAME);
128 EXCEPTION
129 WHEN USE_ERROR =>
130 NOT_APPLICABLE ("USE_ERROR RAISED ON TEXT " &
131 "OPEN WITH IN_FILE MODE - 1");
132 RAISE INCOMPLETE;
133 END;
135 STR(1..40) := READ_CHARS (FILE1, 40);
136 CLOSE (FILE1);
138 OPEN (FILE1, IN_FILE, LEGAL_FILE_NAME);
140 GET (FILE1, ST);
141 IF STR(1..40) /= ST THEN
142 FAILED ("GET FOR STRING INCORRECT");
143 END IF;
145 IF STR(1..40) /= "THIS LINE SHALL SPAN OVER SEVERAL " &
146 "LINES." THEN
147 FAILED ("INCORRECT VALUE READ");
148 END IF;
150 -- GET NULL STRING
152 CLOSE (FILE1);
154 OPEN (FILE1, IN_FILE, LEGAL_FILE_NAME);
156 BEGIN
157 GET (FILE1, NST);
158 EXCEPTION
159 WHEN OTHERS =>
160 FAILED (" GET FAILED ON NULL STRING");
161 END;
163 -- GET NULL SLICE
165 BEGIN
166 GET (FILE1, STR (10 .. 1));
167 EXCEPTION
168 WHEN OTHERS =>
169 FAILED ("GET FAILED ON A NULL SLICE");
170 END;
172 BEGIN
173 DELETE (FILE1);
174 EXCEPTION
175 WHEN USE_ERROR =>
176 NULL;
177 END;
179 END;
181 EXCEPTION
182 WHEN INCOMPLETE =>
183 NULL;
185 END;
187 RESULT;
189 END CE3602A;