3 -- Grant of Unlimited Rights
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
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.
26 -- THIS IS A PROCEDURE USED BY MANY OF THE CHAPTER 14 TESTS TO CHECK THE
27 -- CONTENTS OF A TEXT FILE.
29 -- THIS PROCEDURE ASSUMES THE FILE PARAMETER PASSED TO IT IS AN OPEN
32 -- THE STRING PARAMETER CONTAINS THE CHARACTERS THAT ARE SUPPOSED TO BE
33 -- IN THE TEXT FILE. A '#' CHARACTER IS USED IN THE STRING TO DENOTE
34 -- THE END OF A LINE. A '@' CHARACTER IS USED TO DENOTE THE END OF A
35 -- PAGE. A '%' CHARACTER IS USED TO DENOTE THE END OF THE TEXT FILE.
36 -- THESE SYMBOLS SHOULD NOT BE USED AS TEXT OUTPUT.
41 WITH REPORT
; USE REPORT
;
42 WITH TEXT_IO
; USE TEXT_IO
;
44 PROCEDURE CHECK_FILE
(FILE
: IN OUT FILE_TYPE
; CONTENTS
: STRING) IS
47 COL_COUNT
: POSITIVE_COUNT
:= 1;
48 LINE_COUNT
: POSITIVE_COUNT
:= 1;
49 PAGE_COUNT
: POSITIVE_COUNT
:= 1;
50 TRAILING_BLANKS_MSG_WRITTEN
: BOOLEAN := FALSE;
51 STOP_PROCESSING
: EXCEPTION;
53 PROCEDURE CHECK_END_OF_LINE
(EXPECT_END_OF_PAGE
: BOOLEAN) IS
56 -- SKIP OVER ANY TRAILING BLANKS. AN IMPLEMENTATION CAN LEGALLY
57 -- APPEND BLANKS TO THE END OF ANY LINE.
59 WHILE NOT END_OF_LINE
(FILE
) LOOP
62 FAILED
("FROM CHECK_FILE: END OF LINE EXPECTED - " &
64 RAISE STOP_PROCESSING
;
66 IF NOT TRAILING_BLANKS_MSG_WRITTEN
THEN
67 COMMENT
("FROM CHECK_FILE: " &
68 "THIS IMPLEMENTATION PADS " &
70 TRAILING_BLANKS_MSG_WRITTEN
:= TRUE;
75 IF LINE_COUNT
/= LINE
(FILE
) THEN
76 FAILED
("FROM CHECK_FILE: " &
77 "LINE COUNT INCORRECT - EXPECTED " &
78 POSITIVE_COUNT
'IMAGE(LINE_COUNT
) &
80 POSITIVE_COUNT
'IMAGE(LINE
(FILE
)));
83 -- NOTE: DO NOT SKIP_LINE WHEN AT END OF PAGE BECAUSE SKIP_LINE WILL
84 -- ALSO SKIP THE PAGE TERMINATOR. SEE RM 14.3.5 PARAGRAPH 1.
86 IF NOT EXPECT_END_OF_PAGE
THEN
87 IF END_OF_PAGE
(FILE
) THEN
88 FAILED
("FROM CHECK_FILE: PREMATURE END OF PAGE");
89 RAISE STOP_PROCESSING
;
92 LINE_COUNT
:= LINE_COUNT
+ 1;
96 END CHECK_END_OF_LINE
;
98 PROCEDURE CHECK_END_OF_PAGE
IS
100 IF NOT END_OF_PAGE
(FILE
) THEN
101 FAILED
("FROM CHECK_FILE: " &
102 "END_OF_PAGE NOT WHERE EXPECTED");
103 RAISE STOP_PROCESSING
;
105 IF PAGE_COUNT
/= PAGE
(FILE
) THEN
106 FAILED
("FROM CHECK_FILE: " &
107 "PAGE COUNT INCORRECT - EXPECTED " &
108 POSITIVE_COUNT
'IMAGE (PAGE_COUNT
) &
110 POSITIVE_COUNT
'IMAGE (PAGE
(FILE
)));
114 PAGE_COUNT
:= PAGE_COUNT
+ 1;
117 END CHECK_END_OF_PAGE
;
121 RESET
(FILE
, IN_FILE
);
122 SET_LINE_LENGTH
(STANDARD_OUTPUT
, 0);
123 SET_PAGE_LENGTH
(STANDARD_OUTPUT
, 0);
125 FOR I
IN 1 .. CONTENTS
'LENGTH LOOP
130 CHECK_END_OF_LINE
(CONTENTS
(I
+ 1) = '@');
134 IF NOT END_OF_FILE
(FILE
) THEN
135 FAILED
("FROM CHECK_FILE: " &
136 "END_OF_FILE NOT WHERE EXPECTED");
137 RAISE STOP_PROCESSING
;
140 IF COL_COUNT
/= COL
(FILE
) THEN
141 FAILED
("FROM CHECK_FILE: " &
142 "COL COUNT INCORRECT - " &
143 "EXPECTED " & POSITIVE_COUNT
'
144 IMAGE(COL_COUNT) & " GOT FROM " &
145 "FILE " & POSITIVE_COUNT'IMAGE
149 COL_COUNT := COL_COUNT + 1;
150 IF X /= CONTENTS (I) THEN
151 FAILED("FROM CHECK_FILE: " &
152 "FILE DOES NOT CONTAIN CORRECT " &
153 "OUTPUT - EXPECTED " & CONTENTS(I)
155 RAISE STOP_PROCESSING;
159 WHEN STOP_PROCESSING =>
160 COMMENT ("FROM CHECK_FILE: " &
161 "LAST CHARACTER IN FOLLOWING STRING " &
162 "REVEALED ERROR: " & CONTENTS (1 .. I));
170 FAILED ("FROM CHECK_FILE: " &
171 "STATUS_ERROR RAISED - FILE CHECKING INCOMPLETE");
173 FAILED ("FROM CHECK_FILE: " &
174 "MODE_ERROR RAISED - FILE CHECKING INCOMPLETE");
176 FAILED ("FROM CHECK_FILE: " &
177 "NAME_ERROR RAISED - FILE CHECKING INCOMPLETE");
179 FAILED ("FROM CHECK_FILE: " &
180 "USE_ERROR RAISED - FILE CHECKING INCOMPLETE");
182 FAILED ("FROM CHECK_FILE: " &
183 "DEVICE_ERROR RAISED - FILE CHECKING INCOMPLETE");
185 FAILED ("FROM CHECK_FILE: " &
186 "END_ERROR RAISED - FILE CHECKING INCOMPLETE");
188 FAILED ("FROM CHECK_FILE: " &
189 "DATA_ERROR RAISED - FILE CHECKING INCOMPLETE");
191 FAILED ("FROM CHECK_FILE: " &
192 "LAYOUT_ERROR RAISED - FILE CHECKING INCOMPLETE");
194 FAILED ("FROM CHECK_FILE: " &
195 "SOME EXCEPTION RAISED - FILE CHECKING INCOMPLETE");