1-- CE2103A.TST
2
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.
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-- OBJECTIVE:
26--     CHECK THAT IS_OPEN RETURNS THE PROPER VALUES FOR FILES OF
27--     TYPE SEQUENTIAL_IO.
28
29--          A) UNOPENED FILES
30
31-- HISTORY:
32--     DLD 08/10/82
33--     SPS 11/09/82
34--     JBG 03/24/83
35--     EG  06/03/85
36--     SPW 08/10/87  SPLIT CASE FOR OPENED FILES INTO CE2103C.ADA.
37--     PWB 03/07/97  ADDED CHECK FOR FILE SUPPORT.
38
39WITH REPORT; USE REPORT;
40WITH SEQUENTIAL_IO;
41
42PROCEDURE CE2103A IS
43
44     PACKAGE SEQ_IO IS NEW SEQUENTIAL_IO(CHARACTER);
45          USE SEQ_IO;
46
47     TEST_FILE_ZERO : SEQ_IO.FILE_TYPE;
48     TEST_FILE_ONE : SEQ_IO.FILE_TYPE;
49     TEST_FILE_TWO : SEQ_IO.FILE_TYPE;
50     TEST_FILE_THREE : SEQ_IO.FILE_TYPE;
51     TEST_FILE_FOUR : SEQ_IO.FILE_TYPE;
52     VAL : BOOLEAN;
53
54     INCOMPLETE : EXCEPTION;
55
56BEGIN
57
58     TEST ("CE2103A", "CHECK THAT IS_OPEN RETURNS THE PROPER " &
59                      "VALUES FOR UNOPENED FILES OF TYPE " &
60                      "SEQUENTIAL_IO");
61
62-- FIRST TEST WHETHER IMPLEMENTATION SUPPORTS SEQUENTIAL FILES AT ALL
63
64     BEGIN
65          SEQ_IO.CREATE ( TEST_FILE_ZERO,
66                          SEQ_IO.OUT_FILE,
67                          REPORT.LEGAL_FILE_NAME );
68     EXCEPTION
69          WHEN SEQ_IO.USE_ERROR | SEQ_IO.NAME_ERROR =>
70               REPORT.NOT_APPLICABLE
71                    ( "SEQUENTIAL FILES NOT SUPPORTED -- CREATE OUT-FILE" );
72               RAISE INCOMPLETE;
73     END;
74     SEQ_IO.DELETE ( TEST_FILE_ZERO );
75
76-- WHEN FILE IS DECLARED BUT NOT OPEN
77
78     BEGIN
79          VAL := TRUE;
80          VAL := IS_OPEN (TEST_FILE_ONE);
81          IF VAL = TRUE THEN
82               FAILED ("FILE NOT OPEN BUT IS_OPEN RETURNS TRUE");
83          END IF;
84     END;
85
86-- FOLLOWING UNSUCCESSFUL CREATE
87
88     BEGIN
89          VAL := TRUE;
90          CREATE (TEST_FILE_TWO, OUT_FILE,
91                  "$ILLEGAL_EXTERNAL_FILE_NAME1");
92          FAILED ("NAME_ERROR NOT RAISED - UNSUCCESSFUL CREATE");
93     EXCEPTION
94          WHEN NAME_ERROR =>
95               VAL := IS_OPEN (TEST_FILE_TWO);
96               IF VAL = TRUE THEN
97                    FAILED ("IS_OPEN GIVES TRUE AFTER AN " &
98                            "UNSUCCESSFUL CREATE");
99               END IF;
100     END;
101
102-- FOLLOWING UNSUCCESSFUL OPEN
103
104     BEGIN
105          VAL := TRUE;
106          OPEN (TEST_FILE_THREE, IN_FILE,
107                "$ILLEGAL_EXTERNAL_FILE_NAME1");
108          FAILED ("NAME_ERROR NOT RAISED - UNSUCCESSFUL OPEN");
109     EXCEPTION
110          WHEN NAME_ERROR =>
111               VAL := IS_OPEN (TEST_FILE_THREE);
112               IF VAL = TRUE THEN
113                    FAILED ("IS_OPEN GIVES TRUE - UNSUCCESSFUL OPEN");
114               END IF;
115     END;
116
117-- FOLLOWING CLOSING FILE THAT IS NOT OPEN
118
119     BEGIN
120          VAL := TRUE;
121          CLOSE (TEST_FILE_FOUR);
122          FAILED ("STATUS ERROR NOT RAISED WHEN " &
123                  "ATTEMPTING TO CLOSE AN UNOPENED FILE");
124     EXCEPTION
125          WHEN STATUS_ERROR =>
126               VAL := IS_OPEN (TEST_FILE_FOUR);
127               IF VAL = TRUE THEN
128                    FAILED ("IS_OPEN GIVES TRUE AFTER ATTEMPTING " &
129                            "TO CLOSE AN UNOPENED FILE");
130               END IF;
131     END;
132
133     RESULT;
134
135EXCEPTION
136     WHEN INCOMPLETE =>
137          NULL;
138          REPORT.RESULT;
139     WHEN OTHERS =>
140          REPORT.FAILED ( "UNEXPECTED EXCEPTION" );
141          REPORT.RESULT;
142END CE2103A;
143