mirror of
https://github.com/servo/servo.git
synced 2025-10-04 02:29:12 +01:00
97 lines
3.4 KiB
HTML
97 lines
3.4 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>
|
|
audiobuffersource-channels.html
|
|
</title>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script src="/webaudio/resources/audit-util.js"></script>
|
|
<script src="/webaudio/resources/audit.js"></script>
|
|
</head>
|
|
<body>
|
|
<script id="layout-test-code">
|
|
let audit = Audit.createTaskRunner();
|
|
let context;
|
|
let source;
|
|
|
|
audit.define(
|
|
{
|
|
label: 'validate .buffer',
|
|
description:
|
|
'Validatation of AudioBuffer in .buffer attribute setter'
|
|
},
|
|
function(task, should) {
|
|
context = new AudioContext();
|
|
source = context.createBufferSource();
|
|
|
|
// Make sure we can't set to something which isn't an AudioBuffer.
|
|
should(function() {
|
|
source.buffer = 57;
|
|
}, 'source.buffer = 57').throw(TypeError);
|
|
|
|
// It's ok to set the buffer to null.
|
|
should(function() {
|
|
source.buffer = null;
|
|
}, 'source.buffer = null').notThrow();
|
|
|
|
// Set the buffer to a valid AudioBuffer
|
|
let buffer =
|
|
new AudioBuffer({length: 128, sampleRate: context.sampleRate});
|
|
|
|
should(function() {
|
|
source.buffer = buffer;
|
|
}, 'source.buffer = buffer').notThrow();
|
|
|
|
// The buffer has been set; we can't set it again.
|
|
should(function() {
|
|
source.buffer =
|
|
new AudioBuffer({length: 128, sampleRate: context.sampleRate})
|
|
}, 'source.buffer = new buffer').throw('InvalidStateError');
|
|
|
|
// The buffer has been set; it's ok to set it to null.
|
|
should(function() {
|
|
source.buffer = null;
|
|
}, 'source.buffer = null again').notThrow();
|
|
|
|
// The buffer was already set (and set to null). Can't set it
|
|
// again.
|
|
should(function() {
|
|
source.buffer = buffer;
|
|
}, 'source.buffer = buffer again').throw('InvalidStateError');
|
|
|
|
// But setting to null is ok.
|
|
should(function() {
|
|
}, 'source.buffer = null after setting to null').notThrow();
|
|
|
|
// Check that mono buffer can be set.
|
|
should(function() {
|
|
let monoBuffer =
|
|
context.createBuffer(1, 1024, context.sampleRate);
|
|
let testSource = context.createBufferSource();
|
|
testSource.buffer = monoBuffer;
|
|
}, 'Setting source with mono buffer').notThrow();
|
|
|
|
// Check that stereo buffer can be set.
|
|
should(function() {
|
|
let stereoBuffer =
|
|
context.createBuffer(2, 1024, context.sampleRate);
|
|
let testSource = context.createBufferSource();
|
|
testSource.buffer = stereoBuffer;
|
|
}, 'Setting source with stereo buffer').notThrow();
|
|
|
|
// Check buffers with more than two channels.
|
|
for (let i = 3; i < 10; ++i) {
|
|
should(function() {
|
|
let buffer = context.createBuffer(i, 1024, context.sampleRate);
|
|
let testSource = context.createBufferSource();
|
|
testSource.buffer = buffer;
|
|
}, 'Setting source with ' + i + ' channels buffer').notThrow();
|
|
}
|
|
task.done();
|
|
});
|
|
|
|
audit.run();
|
|
</script>
|
|
</body>
|
|
</html>
|