WITH REPORT; USE REPORT;
WITH TEXT_IO; USE TEXT_IO;
WITH CHECK_FILE;
PROCEDURE CZ1103A IS
NULL_FILE : FILE_TYPE;
FILE_WITH_BLANK_LINES : FILE_TYPE;
FILE_WITH_BLANK_PAGES : FILE_TYPE;
FILE_WITH_TRAILING_BLANKS : FILE_TYPE;
FILE_WITHOUT_TRAILING_BLANKS : FILE_TYPE;
FILE_WITH_END_OF_LINE_ERROR : FILE_TYPE;
FILE_WITH_END_OF_PAGE_ERROR : FILE_TYPE;
FILE_WITH_END_OF_FILE_ERROR : FILE_TYPE;
FILE_WITH_DATA_ERROR : FILE_TYPE;
BEGIN
TEST ("CZ1103A", "CHECK THAT PROCEDURE CHECK_FILE WORKS");
BEGIN
COMMENT ("BEGIN TEST WITH AN EMPTY FILE");
CREATE (NULL_FILE, OUT_FILE);
CHECK_FILE (NULL_FILE, "#@%");
CLOSE (NULL_FILE);
EXCEPTION
WHEN OTHERS =>
FAILED ("TEST WITH EMPTY FILE INCOMPLETE");
END;
BEGIN
COMMENT ("BEGIN TEST WITH A FILE WITH BLANK LINES");
CREATE (FILE_WITH_BLANK_LINES, OUT_FILE);
NEW_LINE (FILE_WITH_BLANK_LINES, 20);
CHECK_FILE (FILE_WITH_BLANK_LINES, "####################@%");
CLOSE (FILE_WITH_BLANK_LINES);
EXCEPTION
WHEN OTHERS =>
FAILED ("TEST WITH FILE WITH BLANK LINES INCOMPLETE");
END;
BEGIN
COMMENT ("BEGIN TEST WITH A FILE WITH BLANK LINES " &
"AND PAGES");
CREATE (FILE_WITH_BLANK_PAGES, OUT_FILE);
NEW_LINE (FILE_WITH_BLANK_PAGES, 3);
NEW_PAGE (FILE_WITH_BLANK_PAGES);
NEW_LINE (FILE_WITH_BLANK_PAGES, 2);
NEW_PAGE (FILE_WITH_BLANK_PAGES);
NEW_PAGE (FILE_WITH_BLANK_PAGES);
CHECK_FILE (FILE_WITH_BLANK_PAGES, "###@##@#@%");
CLOSE (FILE_WITH_BLANK_PAGES);
EXCEPTION
WHEN OTHERS =>
FAILED ("TEST WITH FILE WITH BLANK PAGES INCOMPLETE");
END;
BEGIN
COMMENT ("BEGIN TEST WITH A FILE WITH TRAILING BLANKS");
CREATE (FILE_WITH_TRAILING_BLANKS, OUT_FILE);
FOR I IN 1 .. 3 LOOP
PUT_LINE (FILE_WITH_TRAILING_BLANKS,
"LINE WITH TRAILING BLANKS ");
END LOOP;
CHECK_FILE(FILE_WITH_TRAILING_BLANKS, "LINE WITH TRAILING" &
" BLANKS#LINE WITH TRAILING BLANKS#LINE" &
" WITH TRAILING BLANKS#@%");
CLOSE (FILE_WITH_TRAILING_BLANKS);
EXCEPTION
WHEN OTHERS =>
FAILED ("TEST WITH FILE WITH TRAILING BLANKS " &
"INCOMPLETE");
END;
BEGIN
COMMENT ("BEGIN TEST WITH A FILE WITHOUT TRAILING BLANKS");
CREATE (FILE_WITHOUT_TRAILING_BLANKS, OUT_FILE);
FOR I IN 1 .. 3 LOOP
PUT_LINE (FILE_WITHOUT_TRAILING_BLANKS,
"LINE WITHOUT TRAILING BLANKS");
END LOOP;
CHECK_FILE(FILE_WITHOUT_TRAILING_BLANKS, "LINE WITHOUT " &
"TRAILING BLANKS#LINE WITHOUT TRAILING BLANKS#" &
"LINE WITHOUT TRAILING BLANKS#@%");
CLOSE (FILE_WITHOUT_TRAILING_BLANKS);
EXCEPTION
WHEN OTHERS =>
FAILED ("TEST WITH FILE WITHOUT TRAILING BLANKS " &
"INCOMPLETE");
END;
BEGIN
COMMENT ("BEGIN TEST WITH A FILE WITH AN END OF LINE ERROR");
CREATE (FILE_WITH_END_OF_LINE_ERROR, OUT_FILE);
PUT_LINE (FILE_WITH_END_OF_LINE_ERROR, "THIS LINE WILL " &
"CONTAIN AN END OF LINE IN THE WRONG PLACE");
CHECK_FILE (FILE_WITH_END_OF_LINE_ERROR, "THIS LINE WILL " &
"CONTAIN AN # IN THE WRONG PLACE#@%");
CLOSE (FILE_WITH_END_OF_LINE_ERROR);
EXCEPTION
WHEN OTHERS =>
FAILED ("TEST WITH END_OF_LINE ERROR INCOMPLETE");
END;
BEGIN
COMMENT ("BEGIN TEST WITH FILE WITH END OF PAGE ERROR");
CREATE (FILE_WITH_END_OF_PAGE_ERROR, OUT_FILE);
PUT_LINE (FILE_WITH_END_OF_PAGE_ERROR, "THIS LINE WILL " &
"CONTAIN AN END OF PAGE IN THE WRONG PLACE");
CHECK_FILE (FILE_WITH_END_OF_PAGE_ERROR, "THIS LINE WILL " &
"CONTAIN AN @ IN THE WRONG PLACE#@%");
CLOSE (FILE_WITH_END_OF_PAGE_ERROR);
EXCEPTION
WHEN OTHERS =>
FAILED ("TEST WITH END_OF_PAGE ERROR INCOMPLETE");
END;
BEGIN
COMMENT ("BEGIN TEST WITH FILE WITH END OF FILE ERROR");
CREATE (FILE_WITH_END_OF_FILE_ERROR, OUT_FILE);
PUT_LINE (FILE_WITH_END_OF_FILE_ERROR, "THIS LINE WILL " &
"CONTAIN AN END OF FILE IN THE WRONG PLACE");
CHECK_FILE (FILE_WITH_END_OF_FILE_ERROR, "THIS LINE WILL " &
"CONTAIN AN % IN THE WRONG PLACE#@%");
CLOSE (FILE_WITH_END_OF_FILE_ERROR);
EXCEPTION
WHEN OTHERS =>
FAILED ("TEST WITH END_OF_FILE ERROR INCOMPLETE");
END;
BEGIN
COMMENT ("BEGIN TEST WITH FILE WITH INCORRECT DATA");
CREATE (FILE_WITH_DATA_ERROR, OUT_FILE);
PUT_LINE (FILE_WITH_DATA_ERROR, "LINE WITH INCORRECT " &
"DATA");
CHECK_FILE (FILE_WITH_DATA_ERROR, "LINE WITH CORRECT " &
"DATA#@%");
CLOSE (FILE_WITH_DATA_ERROR);
EXCEPTION
WHEN OTHERS =>
FAILED ("TEST WITH INCORRECT DATA INCOMPLETE");
END;
RESULT;
TEST ("CZ1103A", "THE LINE ABOVE SHOULD REPORT FAILURE");
SPECIAL_ACTION ("COMPARE THIS OUTPUT TO THE EXPECTED RESULT");
RESULT;
END CZ1103A;