Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/java/nio/file/Files/FileAttributes.java
41153 views
1
/*
2
* Copyright (c) 2008, 2011, 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
24
/* @test
25
* @bug 4313887 6838333 7017446
26
* @summary Unit test for java.nio.file.Files
27
* @library ..
28
*/
29
30
import java.nio.file.*;
31
import java.nio.file.attribute.*;
32
import java.io.IOException;
33
import java.util.*;
34
import java.util.concurrent.TimeUnit;
35
36
/**
37
* Exercises getAttribute/setAttribute/readAttributes methods.
38
*/
39
40
public class FileAttributes {
41
42
static void assertTrue(boolean okay) {
43
if (!okay)
44
throw new RuntimeException("Assertion Failed");
45
}
46
47
static void checkEqual(Object o1, Object o2) {
48
if (o1 == null) {
49
assertTrue(o2 == null);
50
} else {
51
assertTrue (o1.equals(o2));
52
}
53
}
54
55
// Exercise getAttribute/setAttribute/readAttributes on basic attributes
56
static void checkBasicAttributes(Path file, BasicFileAttributes attrs)
57
throws IOException
58
{
59
// getAttribute
60
checkEqual(attrs.size(), Files.getAttribute(file, "size"));
61
checkEqual(attrs.lastModifiedTime(), Files.getAttribute(file, "basic:lastModifiedTime"));
62
checkEqual(attrs.lastAccessTime(), Files.getAttribute(file, "lastAccessTime"));
63
checkEqual(attrs.creationTime(), Files.getAttribute(file, "basic:creationTime"));
64
assertTrue((Boolean)Files.getAttribute(file, "isRegularFile"));
65
assertTrue(!(Boolean)Files.getAttribute(file, "basic:isDirectory"));
66
assertTrue(!(Boolean)Files.getAttribute(file, "isSymbolicLink"));
67
assertTrue(!(Boolean)Files.getAttribute(file, "basic:isOther"));
68
checkEqual(attrs.fileKey(), Files.getAttribute(file, "basic:fileKey"));
69
70
// setAttribute
71
FileTime modTime = attrs.lastModifiedTime();
72
Files.setAttribute(file, "basic:lastModifiedTime", FileTime.fromMillis(0L));
73
checkEqual(Files.getLastModifiedTime(file),
74
FileTime.fromMillis(0L));
75
Files.setAttribute(file, "lastModifiedTime", modTime);
76
checkEqual(Files.getLastModifiedTime(file), modTime);
77
78
Map<String,Object> map;
79
map = Files.readAttributes(file, "*");
80
assertTrue(map.size() >= 9);
81
checkEqual(attrs.isRegularFile(), map.get("isRegularFile")); // check one
82
83
map = Files.readAttributes(file, "basic:*");
84
assertTrue(map.size() >= 9);
85
checkEqual(attrs.lastAccessTime(), map.get("lastAccessTime")); // check one
86
87
map = Files.readAttributes(file, "size,lastModifiedTime");
88
assertTrue(map.size() == 2);
89
checkEqual(attrs.size(), map.get("size"));
90
checkEqual(attrs.lastModifiedTime(), map.get("lastModifiedTime"));
91
}
92
93
// Exercise getAttribute/setAttribute/readAttributes on posix attributes
94
static void checkPosixAttributes(Path file, PosixFileAttributes attrs)
95
throws IOException
96
{
97
checkBasicAttributes(file, attrs);
98
99
// getAttribute
100
checkEqual(attrs.permissions(), Files.getAttribute(file, "posix:permissions"));
101
checkEqual(attrs.owner(), Files.getAttribute(file, "posix:owner"));
102
checkEqual(attrs.group(), Files.getAttribute(file, "posix:group"));
103
104
// setAttribute
105
Set<PosixFilePermission> orig = attrs.permissions();
106
Set<PosixFilePermission> newPerms = new HashSet<>(orig);
107
newPerms.remove(PosixFilePermission.OTHERS_READ);
108
newPerms.remove(PosixFilePermission.OTHERS_WRITE);
109
newPerms.remove(PosixFilePermission.OTHERS_EXECUTE);
110
Files.setAttribute(file, "posix:permissions", newPerms);
111
checkEqual(Files.getPosixFilePermissions(file), newPerms);
112
Files.setAttribute(file, "posix:permissions", orig);
113
checkEqual(Files.getPosixFilePermissions(file), orig);
114
Files.setAttribute(file, "posix:owner", attrs.owner());
115
Files.setAttribute(file, "posix:group", attrs.group());
116
117
// readAttributes
118
Map<String,Object> map;
119
map = Files.readAttributes(file, "posix:*");
120
assertTrue(map.size() >= 12);
121
checkEqual(attrs.permissions(), map.get("permissions")); // check one
122
123
map = Files.readAttributes(file, "posix:size,owner");
124
assertTrue(map.size() == 2);
125
checkEqual(attrs.size(), map.get("size"));
126
checkEqual(attrs.owner(), map.get("owner"));
127
}
128
129
// Exercise getAttribute/readAttributes on unix attributes
130
static void checkUnixAttributes(Path file) throws IOException {
131
// getAttribute
132
int mode = (Integer)Files.getAttribute(file, "unix:mode");
133
long ino = (Long)Files.getAttribute(file, "unix:ino");
134
long dev = (Long)Files.getAttribute(file, "unix:dev");
135
long rdev = (Long)Files.getAttribute(file, "unix:rdev");
136
int nlink = (Integer)Files.getAttribute(file, "unix:nlink");
137
int uid = (Integer)Files.getAttribute(file, "unix:uid");
138
int gid = (Integer)Files.getAttribute(file, "unix:gid");
139
FileTime ctime = (FileTime)Files.getAttribute(file, "unix:ctime");
140
141
// readAttributes
142
Map<String,Object> map;
143
map = Files.readAttributes(file, "unix:*");
144
assertTrue(map.size() >= 20);
145
146
map = Files.readAttributes(file, "unix:size,uid,gid");
147
assertTrue(map.size() == 3);
148
checkEqual(map.get("size"),
149
Files.readAttributes(file, BasicFileAttributes.class).size());
150
}
151
152
// Exercise getAttribute/setAttribute on dos attributes
153
static void checkDosAttributes(Path file, DosFileAttributes attrs)
154
throws IOException
155
{
156
checkBasicAttributes(file, attrs);
157
158
// getAttribute
159
checkEqual(attrs.isReadOnly(), Files.getAttribute(file, "dos:readonly"));
160
checkEqual(attrs.isHidden(), Files.getAttribute(file, "dos:hidden"));
161
checkEqual(attrs.isSystem(), Files.getAttribute(file, "dos:system"));
162
checkEqual(attrs.isArchive(), Files.getAttribute(file, "dos:archive"));
163
164
// setAttribute
165
boolean value;
166
167
value = attrs.isReadOnly();
168
Files.setAttribute(file, "dos:readonly", !value);
169
checkEqual(Files.readAttributes(file, DosFileAttributes.class).isReadOnly(), !value);
170
Files.setAttribute(file, "dos:readonly", value);
171
checkEqual(Files.readAttributes(file, DosFileAttributes.class).isReadOnly(), value);
172
173
value = attrs.isHidden();
174
Files.setAttribute(file, "dos:hidden", !value);
175
checkEqual(Files.readAttributes(file, DosFileAttributes.class).isHidden(), !value);
176
Files.setAttribute(file, "dos:hidden", value);
177
checkEqual(Files.readAttributes(file, DosFileAttributes.class).isHidden(), value);
178
179
value = attrs.isSystem();
180
Files.setAttribute(file, "dos:system", !value);
181
checkEqual(Files.readAttributes(file, DosFileAttributes.class).isSystem(), !value);
182
Files.setAttribute(file, "dos:system", value);
183
checkEqual(Files.readAttributes(file, DosFileAttributes.class).isSystem(), value);
184
185
value = attrs.isArchive();
186
Files.setAttribute(file, "dos:archive", !value);
187
checkEqual(Files.readAttributes(file, DosFileAttributes.class).isArchive(), !value);
188
Files.setAttribute(file, "dos:archive", value);
189
checkEqual(Files.readAttributes(file, DosFileAttributes.class).isArchive(), value);
190
191
// readAttributes
192
Map<String,Object> map;
193
map = Files.readAttributes(file, "dos:*");
194
assertTrue(map.size() >= 13);
195
checkEqual(attrs.isReadOnly(), map.get("readonly")); // check one
196
197
map = Files.readAttributes(file, "dos:size,hidden");
198
assertTrue(map.size() == 2);
199
checkEqual(attrs.size(), map.get("size"));
200
checkEqual(attrs.isHidden(), map.get("hidden"));
201
}
202
203
static void checkBadSet(Path file, String attribute, Object value)
204
throws IOException
205
{
206
try {
207
Files.setAttribute(file, attribute, 0);
208
throw new RuntimeException("IllegalArgumentException expected");
209
} catch (IllegalArgumentException ignore) { }
210
}
211
212
static void checkBadGet(Path file, String attribute) throws IOException {
213
try {
214
Files.getAttribute(file, attribute);
215
throw new RuntimeException("IllegalArgumentException expected");
216
} catch (IllegalArgumentException ignore) { }
217
}
218
219
static void checkBadRead(Path file, String attribute) throws IOException {
220
try {
221
Files.readAttributes(file, attribute);
222
throw new RuntimeException("IllegalArgumentException expected");
223
} catch (IllegalArgumentException ignore) { }
224
}
225
226
static void miscTests(Path file) throws IOException {
227
// unsupported views
228
try {
229
Files.setAttribute(file, "foo:bar", 0);
230
throw new RuntimeException("UnsupportedOperationException expected");
231
} catch (UnsupportedOperationException ignore) { }
232
try {
233
Files.getAttribute(file, "foo:bar");
234
throw new RuntimeException("UnsupportedOperationException expected");
235
} catch (UnsupportedOperationException ignore) { }
236
try {
237
Files.readAttributes(file, "foo:*");
238
throw new RuntimeException("UnsupportedOperationException expected");
239
} catch (UnsupportedOperationException ignore) { }
240
241
// bad args
242
checkBadSet(file, "", 0);
243
checkBadSet(file, "basic:", 0);
244
checkBadSet(file, "basic:foobar", 0);
245
checkBadGet(file, "");
246
checkBadGet(file, "basic:");
247
checkBadGet(file, "basic:foobar");
248
checkBadGet(file, "basic:size,lastModifiedTime");
249
checkBadGet(file, "basic:*");
250
checkBadRead(file, "");
251
checkBadRead(file, "basic:");
252
checkBadRead(file, "basic:foobar");
253
checkBadRead(file, "basic:size,foobar");
254
255
// nulls
256
try {
257
Files.getAttribute(file, null);
258
throw new RuntimeException("NullPointerException expected");
259
} catch (NullPointerException npe) { }
260
try {
261
Files.getAttribute(file, "isRegularFile", (LinkOption[])null);
262
throw new RuntimeException("NullPointerException expected");
263
} catch (NullPointerException npe) { }
264
try {
265
Files.setAttribute(file, null, 0L);
266
throw new RuntimeException("NullPointerException expected");
267
} catch (NullPointerException npe) { }
268
}
269
270
static void doTests(Path dir) throws IOException {
271
Path file = dir.resolve("foo");
272
Files.createFile(file);
273
FileStore store = Files.getFileStore(file);
274
try {
275
checkBasicAttributes(file,
276
Files.readAttributes(file, BasicFileAttributes.class));
277
278
if (store.supportsFileAttributeView("posix"))
279
checkPosixAttributes(file,
280
Files.readAttributes(file, PosixFileAttributes.class));
281
282
if (store.supportsFileAttributeView("unix"))
283
checkUnixAttributes(file);
284
285
if (store.supportsFileAttributeView("dos"))
286
checkDosAttributes(file,
287
Files.readAttributes(file, DosFileAttributes.class));
288
289
miscTests(file);
290
} finally {
291
Files.delete(file);
292
}
293
}
294
295
296
public static void main(String[] args) throws IOException {
297
Path dir = TestUtil.createTemporaryDirectory();
298
try {
299
doTests(dir);
300
} finally {
301
TestUtil.removeAll(dir);
302
}
303
}
304
}
305
306