1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232
|
-- CE3115A.ADA
-- 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 RESETTING ONE OF A MULTIPLE OF INTERNAL FILES
-- ASSOCIATED WITH THE SAME EXTERNAL FILE HAS NO EFFECT ON ANY
-- OF THE OTHER INTERNAL FILES.
-- APPLICABILITY CRITERIA:
-- THIS TEST APPLIES ONLY TO IMPLEMENTATIONS WHICH SUPPORT MULTIPLE
-- INTERNAL FILES ASSOCIATED WITH THE SAME EXTERNAL FILE AND
-- RESETTING OF THESE MULTIPLE INTERNAL FILES FOR TEXT FILES.
-- HISTORY:
-- DLD 08/16/82
-- SPS 11/09/82
-- JBG 06/04/84
-- EG 11/19/85 MADE TEST INAPPLICABLE IF CREATE USE_ERROR.
-- TBN 11/04/86 REVISED TEST TO OUTPUT A NON_APPLICABLE RESULT WHEN
-- FILES NOT SUPPORTED.
-- GMT 08/25/87 COMPLETELY REVISED.
-- EDS 12/01/97 ADD NAME_ERROR HANDLER TO OUTPUT NOT_APPLICABLE RESULT.
-- RLB 09/29/98 MADE MODIFICATION TO AVOID BUFFERING PROBLEMS.
WITH REPORT; USE REPORT;
WITH TEXT_IO; USE TEXT_IO;
PROCEDURE CE3115A IS
BEGIN
TEST ("CE3115A", "CHECK THAT RESETTING ONE OF A MULTIPLE OF " &
"INTERNAL FILES ASSOCIATED WITH THE SAME " &
"EXTERNAL FILE HAS NO EFFECT ON ANY OF THE " &
"OTHER INTERNAL FILES");
DECLARE
TXT_FILE_ONE : TEXT_IO.FILE_TYPE;
TXT_FILE_TWO : TEXT_IO.FILE_TYPE;
CH : CHARACTER := 'A';
INCOMPLETE : EXCEPTION;
PROCEDURE TXT_CLEANUP IS
FILE1_OPEN : BOOLEAN := IS_OPEN (TXT_FILE_ONE);
FILE2_OPEN : BOOLEAN := IS_OPEN (TXT_FILE_TWO);
BEGIN
IF FILE1_OPEN AND FILE2_OPEN THEN
CLOSE (TXT_FILE_TWO);
DELETE (TXT_FILE_ONE);
ELSIF FILE1_OPEN THEN
DELETE (TXT_FILE_ONE);
ELSIF FILE2_OPEN THEN
DELETE (TXT_FILE_TWO);
END IF;
EXCEPTION
WHEN TEXT_IO.USE_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("UNEXPECTED EXCEPTION RAISED " &
"IN CLEANUP - 1");
END TXT_CLEANUP;
BEGIN
BEGIN -- CREATE FIRST FILE
CREATE (TXT_FILE_ONE, OUT_FILE, LEGAL_FILE_NAME);
PUT (TXT_FILE_ONE, CH);
EXCEPTION
WHEN TEXT_IO.USE_ERROR =>
NOT_APPLICABLE ("USE_ERROR RAISED; CREATE OF " &
"EXTERNAL FILENAME IS NOT " &
"SUPPORTED - 2");
RAISE INCOMPLETE;
WHEN TEXT_IO.NAME_ERROR =>
NOT_APPLICABLE ("NAME_ERROR RAISED; CREATE OF " &
"EXTERNAL FILENAME IS NOT " &
"SUPPORTED - 3");
RAISE INCOMPLETE;
END; -- CREATE FIRST FILE
BEGIN -- OPEN SECOND FILE
OPEN (TXT_FILE_TWO, IN_FILE, LEGAL_FILE_NAME);
EXCEPTION
WHEN TEXT_IO.USE_ERROR =>
NOT_APPLICABLE ("MULTIPLE INTERNAL FILES ARE NOT " &
"SUPPORTED WHEN ONE IS MODE " &
"OUT_FILE AND THE OTHER IS MODE " &
"IN_FILE - 4" &
" - USE_ERROR RAISED ");
TXT_CLEANUP;
RAISE INCOMPLETE;
WHEN TEXT_IO.NAME_ERROR =>
NOT_APPLICABLE ("MULTIPLE INTERNAL FILES ARE NOT " &
"SUPPORTED WHEN ONE IS MODE " &
"OUT_FILE AND THE OTHER IS MODE " &
"IN_FILE - 4" &
" - NAME_ERROR RAISED ");
TXT_CLEANUP;
RAISE INCOMPLETE;
END; -- OPEN SECOND FILE
FLUSH (TXT_FILE_ONE); -- AVOID BUFFERING PROBLEMS.
CH := 'B';
GET (TXT_FILE_TWO, CH);
IF CH /= 'A' THEN
FAILED ("INCORRECT VALUE FOR GET - 5");
END IF;
BEGIN -- INITIALIZE FIRST FILE TO CHECK POINTER RESETTING
RESET (TXT_FILE_ONE);
IF MODE (TXT_FILE_ONE) /= OUT_FILE THEN
FAILED ("FILE WAS NOT RESET - 6");
END IF;
IF MODE (TXT_FILE_TWO) /= IN_FILE THEN
FAILED ("RESETTING OF ONE INTERNAL FILE " &
"AFFECTED THE OTHER INTERNAL FILE - 7");
END IF;
EXCEPTION
WHEN TEXT_IO.USE_ERROR =>
NOT_APPLICABLE ("RESETTING OF EXTERNAL FILE FOR " &
"OUT_FILE MODE IS " &
" NOT SUPPORTED - 8");
TXT_CLEANUP;
RAISE INCOMPLETE;
END; -- INITIALIZE FIRST FILE TO CHECK POINTER RESETTING
-- PERFORM SOME I/O ON THE FIRST FILE
PUT (TXT_FILE_ONE, 'C');
PUT (TXT_FILE_ONE, 'D');
PUT (TXT_FILE_ONE, 'E');
CLOSE (TXT_FILE_ONE);
BEGIN
OPEN (TXT_FILE_ONE, IN_FILE, LEGAL_FILE_NAME);
EXCEPTION
WHEN USE_ERROR =>
NOT_APPLICABLE ("MULTIPLE INTERNAL FILES NOT " &
"SUPPORTED WHEN BOTH FILES HAVE " &
"IN_FILE MODE - 9");
RAISE INCOMPLETE;
END;
GET (TXT_FILE_ONE, CH);
GET (TXT_FILE_ONE, CH);
BEGIN -- INITIALIZE SECOND FILE AND PERFORM SOME I/O
CLOSE (TXT_FILE_TWO);
OPEN (TXT_FILE_TWO, IN_FILE, LEGAL_FILE_NAME);
EXCEPTION
WHEN TEXT_IO.USE_ERROR =>
FAILED ("MULTIPLE INTERNAL FILES SHOULD STILL " &
"BE ALLOWED - 10");
TXT_CLEANUP;
RAISE INCOMPLETE;
END; -- INITIALIZE SECOND FILE AND PERFORM SOME I/O
BEGIN -- RESET FIRST FILE AND CHECK EFFECTS ON SECOND FILE
GET (TXT_FILE_TWO, CH);
IF CH /= 'C' THEN
FAILED ("INCORRECT VALUE FOR GET OPERATION - 11");
END IF;
RESET (TXT_FILE_ONE);
GET (TXT_FILE_TWO, CH);
IF CH /= 'D' THEN
FAILED ("RESETTING INDEX OF ONE TEXT FILE " &
"RESETS THE OTHER ASSOCIATED FILE - 12");
END IF;
EXCEPTION
WHEN TEXT_IO.USE_ERROR =>
FAILED ("RESETTING SHOULD STILL BE SUPPORTED - 13");
TXT_CLEANUP;
RAISE INCOMPLETE;
END; -- RESET FIRST FILE AND CHECK EFFECTS ON SECOND FILE
TXT_CLEANUP;
EXCEPTION
WHEN INCOMPLETE =>
NULL;
END;
RESULT;
END CE3115A;
|