Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/javax/sound/sampled/spi/AudioFileReader/ReadersExceptions.java
40527 views
1
/*
2
* Copyright (c) 2013, 2016, 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
import java.io.ByteArrayInputStream;
25
import java.io.IOException;
26
import java.io.InputStream;
27
28
import javax.sound.sampled.AudioSystem;
29
import javax.sound.sampled.UnsupportedAudioFileException;
30
import javax.sound.sampled.spi.AudioFileReader;
31
32
import static java.util.ServiceLoader.load;
33
34
/**
35
* @test
36
* @bug 7058662 7058666 7058672 8130305
37
* @author Sergey Bylokhov
38
*/
39
public final class ReadersExceptions {
40
41
// empty channels
42
static byte[] wrongAIFFCh =
43
{0x46, 0x4f, 0x52, 0x4d, // AiffFileFormat.AIFF_MAGIC
44
0, 0, 0, 0, // length
45
0, 0, 0, 0, // iffType
46
0x43, 0x4f, 0x4d, 0x4d, // chunkName
47
0, 0, 0, 100, // chunkLen
48
0, 0, // channels
49
0, 0, 0, 0, //
50
0, 10 // sampleSize
51
, 0, 0, 0, 0};
52
// empty sampleSize
53
static byte[] wrongAIFFSSL =
54
{0x46, 0x4f, 0x52, 0x4d, //AiffFileFormat.AIFF_MAGIC
55
0, 0, 0, 0, // length
56
0, 0, 0, 0, // iffType
57
0x43, 0x4f, 0x4d, 0x4d, // chunkName
58
0, 0, 0, 100, // chunkLen
59
0, 10, // channels
60
0, 0, 0, 0, //
61
0, 0 // sampleSize
62
, 0, 0, 0, 0};
63
// big sampleSize
64
static byte[] wrongAIFFSSH =
65
{0x46, 0x4f, 0x52, 0x4d, //AiffFileFormat.AIFF_MAGIC
66
0, 0, 0, 0, // length
67
0, 0, 0, 0, // iffType
68
0x43, 0x4f, 0x4d, 0x4d, // chunkName
69
0, 0, 0, 100, // chunkLen
70
0, 10, // channels
71
0, 0, 0, 0, //
72
0, 33 // sampleSize
73
, 0, 0, 0, 0};
74
// empty channels
75
static byte[] wrongAUCh =
76
{0x2e, 0x73, 0x6e, 0x64,//AiffFileFormat.AU_SUN_MAGIC
77
0, 0, 0, 24, // headerSize
78
0, 0, 0, 0, // dataSize
79
0, 0, 0, 1, // encoding_local AuFileFormat.AU_ULAW_8
80
0, 0, 0, 1, // sampleRate
81
0, 0, 0, 0 // channels
82
};
83
// empty sample rate
84
static byte[] wrongAUSR =
85
{0x2e, 0x73, 0x6e, 0x64,//AiffFileFormat.AU_SUN_MAGIC
86
0, 0, 0, 24, // headerSize
87
0, 0, 0, 0, // dataSize
88
0, 0, 0, 1, // encoding_local AuFileFormat.AU_ULAW_8
89
0, 0, 0, 0, // sampleRate
90
0, 0, 0, 1 // channels
91
};
92
// empty header size
93
static byte[] wrongAUEmptyHeader =
94
{0x2e, 0x73, 0x6e, 0x64,//AiffFileFormat.AU_SUN_MAGIC
95
0, 0, 0, 0, // headerSize
96
0, 0, 0, 0, // dataSize
97
0, 0, 0, 1, // encoding_local AuFileFormat.AU_ULAW_8
98
0, 0, 0, 1, // sampleRate
99
0, 0, 0, 1 // channels
100
};
101
// small header size
102
static byte[] wrongAUSmallHeader =
103
{0x2e, 0x73, 0x6e, 0x64,//AiffFileFormat.AU_SUN_MAGIC
104
0, 0, 0, 7, // headerSize
105
0, 0, 0, 0, // dataSize
106
0, 0, 0, 1, // encoding_local AuFileFormat.AU_ULAW_8
107
0, 0, 0, 1, // sampleRate
108
0, 0, 0, 1 // channels
109
};
110
// frame size overflow, when result negative
111
static byte[] wrongAUFrameSizeOverflowNegativeResult =
112
{0x2e, 0x73, 0x6e, 0x64,//AiffFileFormat.AU_SUN_MAGIC
113
0, 0, 0, 24, // headerSize
114
0, 0, 0, 0, // dataSize
115
0, 0, 0, 5, // encoding_local AuFileFormat.AU_LINEAR_32
116
0, 0, 0, 1, // sampleRate
117
0x7F, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF // channels
118
};
119
// frame size overflow, when result positive
120
static byte[] wrongAUFrameSizeOverflowPositiveResult =
121
{0x2e, 0x73, 0x6e, 0x64,//AiffFileFormat.AU_SUN_MAGIC
122
0, 0, 0, 24, // headerSize
123
0, 0, 0, 0, // dataSize
124
0, 0, 0, 4, // encoding_local AuFileFormat.AU_LINEAR_24
125
0, 0, 0, 1, // sampleRate
126
0x7F, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF // channels
127
};
128
// empty channels
129
static byte[] wrongWAVCh =
130
{0x52, 0x49, 0x46, 0x46, // WaveFileFormat.RIFF_MAGIC
131
1, 1, 1, 1, // fileLength
132
0x57, 0x41, 0x56, 0x45, // waveMagic
133
0x66, 0x6d, 0x74, 0x20, // FMT_MAGIC
134
3, 0, 0, 0, // length
135
1, 0, // wav_type WAVE_FORMAT_PCM
136
0, 0, // channels
137
0, 0, 0, 0, // sampleRate
138
0, 0, 0, 0, // avgBytesPerSec
139
0, 0, // blockAlign
140
1, 0, // sampleSizeInBits
141
0x64, 0x61, 0x74, 0x61, // WaveFileFormat.DATA_MAGIC
142
0, 0, 0, 0, // dataLength
143
};
144
// empty sampleSizeInBits
145
static byte[] wrongWAVSSB =
146
{0x52, 0x49, 0x46, 0x46, // WaveFileFormat.RIFF_MAGIC
147
1, 1, 1, 1, // fileLength
148
0x57, 0x41, 0x56, 0x45, // waveMagic
149
0x66, 0x6d, 0x74, 0x20, // FMT_MAGIC
150
3, 0, 0, 0, // length
151
1, 0, // wav_type WAVE_FORMAT_PCM
152
1, 0, // channels
153
0, 0, 0, 0, // sampleRate
154
0, 0, 0, 0, // avgBytesPerSec
155
0, 0, // blockAlign
156
0, 0, // sampleSizeInBits
157
0x64, 0x61, 0x74, 0x61, // WaveFileFormat.DATA_MAGIC
158
0, 0, 0, 0, // dataLength
159
};
160
161
static byte[][] data = {
162
wrongAIFFCh, wrongAIFFSSL, wrongAIFFSSH, wrongAUCh, wrongAUSR,
163
wrongAUEmptyHeader, wrongAUSmallHeader,
164
wrongAUFrameSizeOverflowNegativeResult,
165
wrongAUFrameSizeOverflowPositiveResult, wrongWAVCh, wrongWAVSSB
166
};
167
168
public static void main(final String[] args) throws IOException {
169
for (final byte[] bytes : data) {
170
testAS(bytes);
171
testAFR(bytes);
172
}
173
}
174
175
private static void testAS(final byte[] buffer) throws IOException {
176
// AudioSystem API
177
final InputStream is = new ByteArrayInputStream(buffer);
178
try {
179
AudioSystem.getAudioFileFormat(is);
180
} catch (UnsupportedAudioFileException ignored) {
181
// Expected.
182
return;
183
}
184
throw new RuntimeException("Test Failed");
185
}
186
187
private static void testAFR(final byte[] buffer) throws IOException {
188
// AudioFileReader API
189
final InputStream is = new ByteArrayInputStream(buffer);
190
for (final AudioFileReader afr : load(AudioFileReader.class)) {
191
for (int i = 0; i < 10; ++i) {
192
try {
193
afr.getAudioFileFormat(is);
194
throw new RuntimeException("UAFE expected");
195
} catch (final UnsupportedAudioFileException ignored) {
196
// Expected.
197
}
198
}
199
}
200
}
201
}
202
203