Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/javax/imageio/spi/SpiTest.java
41149 views
1
/*
2
* Copyright (c) 2001, 2017, 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
/*
25
* @test
26
* @bug 4395376
27
* @summary Performs various sanity checks on Spi class constructors and get
28
* methods
29
*/
30
31
import java.util.Iterator;
32
import java.util.Locale;
33
34
import javax.imageio.ImageReader;
35
import javax.imageio.ImageTypeSpecifier;
36
import javax.imageio.ImageWriter;
37
import javax.imageio.spi.IIORegistry;
38
import javax.imageio.spi.IIOServiceProvider;
39
import javax.imageio.spi.ImageReaderSpi;
40
import javax.imageio.spi.ImageReaderWriterSpi;
41
import javax.imageio.spi.ImageWriterSpi;
42
import javax.imageio.spi.ServiceRegistry;
43
44
public class SpiTest {
45
46
String vendorName = null;
47
String version = null;
48
String[] names = null;
49
String[] suffixes = null;
50
String[] MIMETypes = null;
51
String readerClassName = null;
52
String writerClassName = null;
53
Class[] inputTypes = null;
54
Class[] outputTypes = null;
55
String[] writerSpiNames = null;
56
String[] readerSpiNames = null;
57
String nativeStreamMetadataFormatName = null;
58
String nativeStreamMetadataFormatClassName = null;
59
String[] extraStreamMetadataFormatNames = null;
60
String[] extraStreamMetadataFormatClassNames = null;
61
String nativeImageMetadataFormatName = null;
62
String nativeImageMetadataFormatClassName = null;
63
String[] extraImageMetadataFormatNames = null;
64
String[] extraImageMetadataFormatClassNames = null;
65
66
private void error(String message) {
67
// System.out.println("Error: " + message);
68
throw new RuntimeException(message);
69
}
70
71
private void testSpi(IIOServiceProvider spi) {
72
if (spi.getVendorName() == null) {
73
error(spi + " getVendorName == null!");
74
}
75
if (spi.getVersion() == null) {
76
error(spi + " getVersion == null!");
77
}
78
}
79
80
private void testSpi(ImageReaderWriterSpi spi) {
81
testSpi((IIOServiceProvider)spi);
82
if (spi.getFormatNames() == null) {
83
error("spi.getFormatNames == null!");
84
}
85
String[] suffixes = spi.getFileSuffixes();
86
if (suffixes != null && suffixes.length == 0) {
87
error("suffixes.length == 0!");
88
}
89
String[] MIMETypes = spi.getMIMETypes();
90
if (MIMETypes != null && MIMETypes.length == 0) {
91
error("MIMETypes.length == 0!");
92
}
93
if (spi.getPluginClassName() == null) {
94
error("spi.getPluginClassName == null!");
95
}
96
String[] extraStreamMetadataFormatNames =
97
spi.getExtraStreamMetadataFormatNames();
98
if (extraStreamMetadataFormatNames != null &&
99
extraStreamMetadataFormatNames.length == 0) {
100
error("extraStreamMetadataFormatNames.length == 0!");
101
}
102
String[] extraImageMetadataFormatNames =
103
spi.getExtraImageMetadataFormatNames();
104
if (extraImageMetadataFormatNames != null &&
105
extraImageMetadataFormatNames.length == 0) {
106
error("extraImageMetadataFormatNames.length == 0!");
107
}
108
}
109
110
public void testSpi(ImageReaderSpi spi) {
111
testSpi((ImageReaderWriterSpi)spi);
112
Class[] inputTypes = spi.getInputTypes();
113
if (inputTypes == null) {
114
error("inputTypes == null!");
115
}
116
if (inputTypes.length == 0) {
117
error("inputTypes.length == 0!");
118
}
119
String[] writerSpiNames = spi.getImageWriterSpiNames();
120
if (writerSpiNames != null && writerSpiNames.length == 0) {
121
error("writerSpiNames.length == 0!");
122
}
123
}
124
125
public void testSpi(ImageWriterSpi spi) {
126
testSpi((ImageReaderWriterSpi)spi);
127
Class[] outputTypes = spi.getOutputTypes();
128
if (outputTypes == null) {
129
error("outputTypes == null!");
130
}
131
if (outputTypes.length == 0) {
132
error("outputTypes.length == 0!");
133
}
134
String[] readerSpiNames = spi.getImageReaderSpiNames();
135
if (readerSpiNames != null && readerSpiNames.length == 0) {
136
error("readerSpiNames.length == 0!");
137
}
138
}
139
140
private void resetConstructorArguments() {
141
vendorName = null;
142
version = null;
143
names = null;
144
suffixes = null;
145
MIMETypes = null;
146
readerClassName = null;
147
inputTypes = null;
148
outputTypes = null;
149
writerSpiNames = null;
150
readerSpiNames = null;
151
nativeStreamMetadataFormatName = null;
152
nativeStreamMetadataFormatClassName = null;
153
extraStreamMetadataFormatNames = null;
154
extraStreamMetadataFormatClassNames = null;
155
nativeImageMetadataFormatName = null;
156
nativeImageMetadataFormatClassName = null;
157
extraImageMetadataFormatNames = null;
158
extraImageMetadataFormatClassNames = null;
159
}
160
161
private ImageReaderSpi constructImageReaderSpi() {
162
return new ImageReaderSpi(vendorName,
163
version,
164
names,
165
suffixes,
166
MIMETypes,
167
readerClassName,
168
inputTypes,
169
writerSpiNames,
170
false,
171
nativeStreamMetadataFormatName,
172
nativeStreamMetadataFormatClassName,
173
extraStreamMetadataFormatNames,
174
extraStreamMetadataFormatClassNames,
175
false,
176
nativeImageMetadataFormatName,
177
nativeImageMetadataFormatClassName,
178
extraImageMetadataFormatNames,
179
extraImageMetadataFormatClassNames) {
180
181
public String getDescription(Locale locale) {
182
return null;
183
}
184
185
public boolean canDecodeInput(Object source) {
186
return false;
187
}
188
189
public ImageReader createReaderInstance(Object extension) {
190
return null;
191
}
192
};
193
}
194
195
private ImageWriterSpi constructImageWriterSpi() {
196
return new ImageWriterSpi(vendorName,
197
version,
198
names,
199
suffixes,
200
MIMETypes,
201
writerClassName,
202
outputTypes,
203
readerSpiNames,
204
false,
205
nativeStreamMetadataFormatName,
206
nativeStreamMetadataFormatClassName,
207
extraStreamMetadataFormatNames,
208
extraStreamMetadataFormatClassNames,
209
false,
210
nativeImageMetadataFormatName,
211
nativeImageMetadataFormatClassName,
212
extraImageMetadataFormatNames,
213
extraImageMetadataFormatClassNames) {
214
215
public String getDescription(Locale locale) {
216
return null;
217
}
218
219
public boolean canEncodeImage(ImageTypeSpecifier type) {
220
return false;
221
}
222
223
public ImageWriter createWriterInstance(Object extension) {
224
return null;
225
}
226
};
227
}
228
229
private void checkImageReaderSpiConstructor(boolean shouldFail) {
230
boolean gotIAE = false;
231
try {
232
constructImageReaderSpi();
233
} catch (Exception e) {
234
if (!(e instanceof IllegalArgumentException)) {
235
error("Got exception " + e);
236
} else {
237
gotIAE = true;
238
}
239
}
240
if (gotIAE != shouldFail) {
241
if (gotIAE) {
242
error("ImageReaderSpi constructor threw an IAE!");
243
} else {
244
error("ImageReaderSpi constructor didn't throw an IAE!");
245
}
246
}
247
}
248
249
private void checkImageWriterSpiConstructor(boolean shouldFail) {
250
boolean gotIAE = false;
251
try {
252
constructImageWriterSpi();
253
} catch (Exception e) {
254
if (!(e instanceof IllegalArgumentException)) {
255
error("Got exception " + e);
256
} else {
257
gotIAE = true;
258
}
259
}
260
if (gotIAE != shouldFail) {
261
if (gotIAE) {
262
error("ImageWriterSpi constructor threw an IAE!");
263
} else {
264
error("ImageWriterSpi constructor didn't throw an IAE!");
265
}
266
}
267
}
268
269
public void testImageReaderSpiConstructor() {
270
resetConstructorArguments();
271
272
checkImageReaderSpiConstructor(true);
273
vendorName = "My Vendor";
274
checkImageReaderSpiConstructor(true);
275
version = "My Version";
276
checkImageReaderSpiConstructor(true);
277
names = new String[0];
278
checkImageReaderSpiConstructor(true);
279
names = new String[1];
280
names[0] = "My Format Name";
281
checkImageReaderSpiConstructor(true);
282
readerClassName = "com.mycompany.Reader";
283
checkImageReaderSpiConstructor(true);
284
inputTypes = new Class[0];
285
checkImageReaderSpiConstructor(true);
286
inputTypes = new Class[1];
287
inputTypes[0] = Object.class;
288
// Now it should work
289
checkImageReaderSpiConstructor(false);
290
291
// Test normalization of zero-length arrays
292
suffixes = new String[0];
293
MIMETypes = new String[0];
294
writerSpiNames = new String[0];
295
extraStreamMetadataFormatNames = new String[0];
296
extraImageMetadataFormatNames = new String[0];
297
298
ImageReaderSpi spi = constructImageReaderSpi();
299
if (spi.getFileSuffixes() != null) {
300
error("Failed to normalize suffixes!");
301
}
302
if (spi.getMIMETypes() != null) {
303
error("Failed to normalize MIMETypes!");
304
}
305
if (spi.getImageWriterSpiNames() != null) {
306
error("Failed to normalize writerSpiNames!");
307
}
308
if (spi.getExtraStreamMetadataFormatNames() != null) {
309
error("Failed to normalize extraStreamMetadataFormatNames!");
310
}
311
if (spi.getExtraImageMetadataFormatNames() != null) {
312
error("Failed to normalize extraImageMetadataFormatNames!");
313
}
314
}
315
316
public void testImageWriterSpiConstructor() {
317
resetConstructorArguments();
318
319
checkImageWriterSpiConstructor(true);
320
vendorName = "My Vendor";
321
checkImageWriterSpiConstructor(true);
322
version = "My Version";
323
checkImageWriterSpiConstructor(true);
324
names = new String[0];
325
checkImageWriterSpiConstructor(true);
326
names = new String[1];
327
names[0] = "My Format Name";
328
checkImageWriterSpiConstructor(true);
329
writerClassName = "com.mycompany.Writer";
330
checkImageWriterSpiConstructor(true);
331
outputTypes = new Class[0];
332
checkImageWriterSpiConstructor(true);
333
outputTypes = new Class[1];
334
outputTypes[0] = Object.class;
335
// Now it should work
336
checkImageWriterSpiConstructor(false);
337
338
// Test normalization of zero-length arrays
339
suffixes = new String[0];
340
MIMETypes = new String[0];
341
readerSpiNames = new String[0];
342
extraStreamMetadataFormatNames = new String[0];
343
extraStreamMetadataFormatClassNames = new String[0];
344
extraImageMetadataFormatNames = new String[0];
345
extraImageMetadataFormatClassNames = new String[0];
346
347
ImageWriterSpi spi = constructImageWriterSpi();
348
if (spi.getFileSuffixes() != null) {
349
error("Failed to normalize suffixes!");
350
}
351
if (spi.getMIMETypes() != null) {
352
error("Failed to normalize MIMETypes!");
353
}
354
if (spi.getImageReaderSpiNames() != null) {
355
error("Failed to normalize readerSpiNames!");
356
}
357
if (spi.getExtraStreamMetadataFormatNames() != null) {
358
error("Failed to normalize extraStreamMetadataFormatNames!");
359
}
360
if (spi.getExtraImageMetadataFormatNames() != null) {
361
error("Failed to normalize extraImageMetadataFormatNames!");
362
}
363
}
364
365
public SpiTest() {
366
testImageReaderSpiConstructor();
367
testImageWriterSpiConstructor();
368
369
ServiceRegistry registry = IIORegistry.getDefaultInstance();
370
Iterator readers = registry.getServiceProviders(ImageReaderSpi.class,
371
false);
372
while (readers.hasNext()) {
373
ImageReaderSpi rspi = (ImageReaderSpi)readers.next();
374
System.out.println("*** Testing " + rspi.getClass().getName());
375
testSpi(rspi);
376
}
377
378
Iterator writers = registry.getServiceProviders(ImageWriterSpi.class,
379
false);
380
while (writers.hasNext()) {
381
ImageWriterSpi wspi = (ImageWriterSpi)writers.next();
382
System.out.println("*** Testing " + wspi.getClass().getName());
383
testSpi(wspi);
384
}
385
}
386
387
public static void main(String[] args) {
388
new SpiTest();
389
}
390
}
391
392