summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-null.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-null.html')
-rw-r--r--testing/web-platform/tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-null.html59
1 files changed, 59 insertions, 0 deletions
diff --git a/testing/web-platform/tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-null.html b/testing/web-platform/tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-null.html
new file mode 100644
index 0000000000..b5b1ec0c3d
--- /dev/null
+++ b/testing/web-platform/tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-null.html
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>
+ Test ABSN Outputs Silence if buffer is null
+ </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>
+ const audit = Audit.createTaskRunner();
+
+ audit.define('ABSN with null buffer', (task, should) => {
+ // Create test context. Length and sampleRate are pretty arbitrary, but
+ // we don't need either to be very large.
+ const context = new OfflineAudioContext(
+ {numberOfChannels: 1, length: 1024, sampleRate: 8192});
+
+ // Just create a constant buffer for testing. Anything will do as long
+ // as the buffer contents are not identically zero.
+ const audioBuffer =
+ new AudioBuffer({length: 10, sampleRate: context.sampleRate});
+ const audioBufferSourceNode = new AudioBufferSourceNode(context);
+
+ audioBuffer.getChannelData(0).fill(1);
+
+ // These two tests are mostly for the informational messages to show
+ // what's happening. They should never fail!
+ should(() => {
+ audioBufferSourceNode.buffer = audioBuffer;
+ }, 'Setting ABSN.buffer to AudioBuffer').notThrow();
+
+ // This is the important part. Setting the buffer to null after setting
+ // it to something else should cause the source to produce silence.
+ should(() => {
+ audioBufferSourceNode.buffer = null;
+ }, 'Setting ABSN.buffer = null').notThrow();
+
+ audioBufferSourceNode.start(0);
+ audioBufferSourceNode.connect(context.destination);
+
+ context.startRendering()
+ .then(buffer => {
+ // Since the buffer is null, the output of the source should be
+ // silence.
+ should(buffer.getChannelData(0), 'ABSN output')
+ .beConstantValueOf(0);
+ })
+ .then(() => task.done());
+ });
+
+ audit.run();
+ </script>
+ </body>
+</html>