Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
- This WPT test may be referenced by the following Test IDs:
- /webaudio/the-audio-api/the-audiobuffer-interface/audiobuffer.html - WPT Dashboard Interop Dashboard
<!DOCTYPE html>
<html>
<head>
<title>AudioBuffer API Test</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<script>
const sampleRate = 44100.0;
const lengthInSeconds = 2;
const numberOfChannels = 4;
test(() => {
const buffer = new AudioBuffer({
numberOfChannels,
length: sampleRate * lengthInSeconds,
sampleRate
});
assert_true(
true,
`buffer = new AudioBuffer({numberOfChannels: ${numberOfChannels}, ` +
`length: ${sampleRate * lengthInSeconds}, ` +
`sampleRate: ${sampleRate}})`);
assert_equals(buffer.sampleRate, sampleRate, 'buffer.sampleRate');
assert_equals(
buffer.length, sampleRate * lengthInSeconds, 'buffer.length');
assert_equals(buffer.duration, lengthInSeconds, 'buffer.duration');
assert_equals(
buffer.numberOfChannels, numberOfChannels, 'buffer.numberOfChannels');
for (let i = 0; i < buffer.numberOfChannels; ++i) {
assert_true(
buffer.getChannelData(i) instanceof Float32Array,
`buffer.getChannelData(${i}) instanceof Float32Array`);
}
assert_throws_dom(
'IndexSizeError',
() => buffer.getChannelData(buffer.numberOfChannels),
`buffer.getChannelData(${buffer.numberOfChannels}) throws`);
// Non-standard values (1000 & 24576) to test edge-case duration behavior.
const testSampleRate = 24576;
const testLength = 1000;
const buffer2 = new AudioBuffer({
numberOfChannels: 1,
length: testLength,
sampleRate: testSampleRate
});
const expectedDuration = testLength / testSampleRate;
assert_equals(
buffer2.duration,
expectedDuration,
'new AudioBuffer({numberOfChannels: 1,\n' +
`length: ${testLength},sampleRate: ${testSampleRate}}).duration`);
}, 'AudioBuffer: creation and property validation');
</script>
</body>
</html>