Files
servo/tests/wpt/web-platform-tests/webcodecs/audio-decoder.any.js

57 lines
1.5 KiB
JavaScript

// META: global=window,dedicatedworker
// META: script=/webcodecs/utils.js
const defaultConfig = {
codec: "opus",
sampleRate: 48000,
numberOfChannels: 2
};
function getFakeChunk() {
return new EncodedAudioChunk({
type:'key',
timestamp:0,
data:Uint8Array.of(0)
});
}
promise_test(t => {
// AudioDecoderInit lacks required fields.
assert_throws_js(TypeError, () => { new AudioDecoder({}); });
// AudioDecoderInit has required fields.
let decoder = new AudioDecoder(getDefaultCodecInit(t));
assert_equals(decoder.state, "unconfigured");
decoder.close();
return endAfterEventLoopTurn();
}, 'Test AudioDecoder construction');
promise_test(t => {
let decoder = new AudioDecoder(getDefaultCodecInit(t));
let badCodecsList = [
'', // Empty codec
'bogus', // Non exsitent codec
'vp8', // Video codec
'audio/webm; codecs="opus"' // Codec with mime type
]
testConfigurations(decoder, defaultConfig, badCodecsList);
return endAfterEventLoopTurn();
}, 'Test AudioDecoder.configure()');
promise_test(t => {
let decoder = new AudioDecoder(getDefaultCodecInit(t));
return testClosedCodec(t, decoder, defaultConfig, getFakeChunk());
}, 'Verify closed AudioDecoder operations');
promise_test(t => {
let decoder = new AudioDecoder(getDefaultCodecInit(t));
return testUnconfiguredCodec(t, decoder, getFakeChunk());
}, 'Verify unconfigured AudioDecoder operations');