blob: bfc8bee6794f8a3a654e18fedd718255011c59eb [file] [log] [blame]
serb9adafbe2013-11-12 20:24:25 +04001/*
2 * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
duke6e45e102007-12-01 00:00:00 +000024/**
25 * @test
26 * @bug 6359397
27 * @summary Test if RandomAccessFile methods will check if the stream
28 * has been closed.
29 */
30
31import java.io.*;
32
33public enum OpsAfterClose {
34
35 READ { boolean check(RandomAccessFile r) {
36 try {
37 r.read();
38 } catch (IOException io) {
39 System.out.print("Excep Msg: "+ io.getMessage() + ", ");
40 return true;
41 }
42 return false;
43 } },
44
45 READ_BUF { boolean check(RandomAccessFile r) {
46 try {
47 byte buf[] = new byte[2];
48 int len = 1;
49 r.read(buf, 0, len);
50 } catch (IOException io) {
51 System.out.print("Excep Msg: "+ io.getMessage() + ", ");
52 return true;
53 }
54 return false;
55 } },
56 GET_CHANNEL { boolean check(RandomAccessFile r) {
57 r.getChannel();
58 return true;
59 } },
60 GET_FD { boolean check(RandomAccessFile r) {
61 try {
62 r.getFD();
63 return true;
64 } catch (IOException io) {
65 System.out.print("Excep Msg: "+ io.getMessage() + ", ");
66 return false;
67 }
68 } },
69 GET_FILE_PTR { boolean check(RandomAccessFile r) {
70 try {
71 r.getFilePointer();
72 } catch (IOException io) {
73 System.out.print("Excep Msg: "+ io.getMessage() + ", ");
74 return true;
75 }
76 return false;
77 } },
78 GET_LENGTH { boolean check(RandomAccessFile r) {
79 try {
80 r.length();
81 } catch (IOException io) {
82 System.out.print("Excep Msg: "+ io.getMessage() + ", ");
83 return true;
84 }
85 return false;
86 } },
87 SEEK { boolean check(RandomAccessFile r) {
88 try {
89 r.seek(1);
90 } catch (IOException io) {
91 System.out.print("Excep Msg: "+ io.getMessage() + ", ");
92 return true;
93 }
94 return false;
95 } },
96 SET_LENGTH { boolean check(RandomAccessFile r) {
97 try {
98 r.setLength(1);
99 } catch (IOException io) {
100 System.out.print("Excep Msg: "+ io.getMessage() + ", ");
101 return true;
102 }
103 return false;
104 } },
105 SKIP_BYTES { boolean check(RandomAccessFile r) {
106 try {
107 r.skipBytes(1);
108 } catch (IOException io) {
109 System.out.print("Excep Msg: "+ io.getMessage() + ", ");
110 return true;
111 }
112 return false;
113 } },
114 WRITE { boolean check(RandomAccessFile r) {
115 try {
116 r.write(1);
117 } catch (IOException io) {
118 System.out.print("Excep Msg: "+ io.getMessage() + ", ");
119 return true;
120 }
121 return false;
122 } },
123 WRITE_BUF { boolean check(RandomAccessFile r) {
124 try {
125 byte buf[] = new byte[2];
126 int len = 1;
127 r.write(buf, 0, len);
128 } catch (IOException io) {
129 System.out.print("Excep Msg: "+ io.getMessage() + ", ");
130 return true;
131 }
132 return false;
133 } },
134 CLOSE { boolean check(RandomAccessFile r) {
135 try {
136 r.close();
137 return true; // No Exception thrown on windows
138 } catch (IOException io) {
139 System.out.print("Excep Msg: "+ io.getMessage() + ", ");
140 return true; // Exception thrown on solaris and linux
141 }
142 } };
143
144 abstract boolean check(RandomAccessFile r);
145
146 public static void main(String args[]) throws Exception {
147
148 boolean failed = false;
149
150 File f = new File(System.getProperty("test.dir", "."),
151 "raf.txt");
152 f.createNewFile();
153 f.deleteOnExit();
154
155 RandomAccessFile raf = new RandomAccessFile(f, "rw");
156 if (testRandomAccessFile(raf)) {
157 throw new Exception("Test failed for some of the operation{s}" +
158 " on RandomAccessFile, check the messages");
159 }
160 }
161
162 private static boolean testRandomAccessFile(RandomAccessFile r)
163 throws Exception {
164 r.close();
165 boolean failed = false;
166 boolean result;
167 System.out.println("Testing File:" + r);
168 for (OpsAfterClose op : OpsAfterClose.values()) {
169 result = op.check(r);
170 if (!result) {
171 failed = true;
172 }
173 System.out.println(op + ":" + result);
174 }
175 if (failed) {
176 System.out.println("Test failed for the failed operation{s}" +
177 " above for the RandomAccessFile:" + r);
178 }
179 return failed;
180 }
181}