Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/javax/imageio/stream/ReadFullyTest.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 4422263
27
* @summary Checks that ImageInputStream.readFully(type[], int int) handles sign
28
* extension and byte ordering correctly
29
*/
30
31
import java.io.ByteArrayInputStream;
32
import java.io.InputStream;
33
import java.nio.ByteOrder;
34
35
import javax.imageio.stream.ImageInputStream;
36
import javax.imageio.stream.MemoryCacheImageInputStream;
37
38
public class ReadFullyTest {
39
40
static final ByteOrder bigEndian = ByteOrder.BIG_ENDIAN;
41
static final ByteOrder littleEndian = ByteOrder.LITTLE_ENDIAN;
42
43
private static void expect(long e, long g) {
44
if (e != g) {
45
throw new RuntimeException("Expected " + e + ", got " + g);
46
}
47
}
48
49
public static void main (String args[]) {
50
try {
51
byte[] b = {
52
(byte)0x11, (byte)0x22, // low low
53
(byte)0x44, (byte)0x99, // low high
54
(byte)0xAA, (byte)0x33, // high low
55
(byte)0xBB, (byte)0xCC // high high
56
};
57
InputStream in = new ByteArrayInputStream(b);
58
ImageInputStream iin = new MemoryCacheImageInputStream(in);
59
60
short[] s = new short[b.length/2];
61
char[] c = new char[b.length/2];
62
int[] i = new int[b.length/4];
63
long[] l = new long[b.length/8];
64
float[] f = new float[b.length/4];
65
double[] d = new double[b.length/8];
66
67
iin.seek(0L);
68
iin.setByteOrder(bigEndian);
69
iin.readFully(s, 0, s.length);
70
expect(s[0] & 0xffff, 0x1122);
71
expect(s[1] & 0xffff, 0x4499);
72
expect(s[2] & 0xffff, 0xAA33);
73
expect(s[3] & 0xffff, 0xBBCC);
74
75
iin.seek(0L);
76
iin.setByteOrder(littleEndian);
77
iin.readFully(s, 0, s.length);
78
expect(s[0] & 0xffff, 0x2211);
79
expect(s[1] & 0xffff, 0x9944);
80
expect(s[2] & 0xffff, 0x33AA);
81
expect(s[3] & 0xffff, 0xCCBB);
82
83
iin.seek(0L);
84
iin.setByteOrder(bigEndian);
85
iin.readFully(c, 0, c.length);
86
expect(c[0], 0x1122);
87
expect(c[1], 0x4499);
88
expect(c[2], 0xAA33);
89
expect(c[3], 0xBBCC);
90
91
iin.seek(0L);
92
iin.setByteOrder(littleEndian);
93
iin.readFully(c, 0, c.length);
94
expect(c[0], 0x2211);
95
expect(c[1], 0x9944);
96
expect(c[2], 0x33AA);
97
expect(c[3], 0xCCBB);
98
99
iin.seek(0L);
100
iin.setByteOrder(bigEndian);
101
iin.readFully(i, 0, i.length);
102
expect(i[0] & 0xffffffff, 0x11224499);
103
expect(i[1] & 0xffffffff, 0xAA33BBCC);
104
105
iin.seek(0L);
106
iin.setByteOrder(littleEndian);
107
iin.readFully(i, 0, i.length);
108
expect(i[0] & 0xffffffff, 0x99442211);
109
expect(i[1] & 0xffffffff, 0xCCBB33AA);
110
111
iin.seek(0L);
112
iin.setByteOrder(bigEndian);
113
iin.readFully(f, 0, f.length);
114
expect(Float.floatToIntBits(f[0]) & 0xffffffff, 0x11224499);
115
expect(Float.floatToIntBits(f[1]) & 0xffffffff, 0xAA33BBCC);
116
117
iin.seek(0L);
118
iin.setByteOrder(littleEndian);
119
iin.readFully(f, 0, f.length);
120
expect(Float.floatToIntBits(f[0]) & 0xffffffff, 0x99442211);
121
expect(Float.floatToIntBits(f[1]) & 0xffffffff, 0xCCBB33AA);
122
123
iin.seek(0L);
124
iin.setByteOrder(bigEndian);
125
iin.readFully(l, 0, l.length);
126
expect(l[0], 0x11224499AA33BBCCL);
127
128
iin.seek(0L);
129
iin.setByteOrder(littleEndian);
130
iin.readFully(l, 0, l.length);
131
expect(l[0], 0xCCBB33AA99442211L);
132
133
iin.seek(0L);
134
iin.setByteOrder(bigEndian);
135
iin.readFully(d, 0, d.length);
136
expect(Double.doubleToLongBits(d[0]), 0x11224499AA33BBCCL);
137
138
iin.seek(0L);
139
iin.setByteOrder(littleEndian);
140
iin.readFully(d, 0, d.length);
141
expect(Double.doubleToLongBits(d[0]), 0xCCBB33AA99442211L);
142
} catch (Exception ex) {
143
throw new RuntimeException("Got exception " + ex);
144
}
145
}
146
}
147
148