test for bug 1257718 r?padenot draft
authorKarl Tomlinson <karlt+@karlt.net>
Wed, 22 Jun 2016 09:10:31 +1200
changeset 380507 da102019bc14e67abcd1827f05a02fc4e55bc63e
parent 380506 24d9806c540e7b58e72dafb14a31f99561d56e8a
child 380508 bdc1239c8b42893a139b9a6f74932e8b6cb0fe06
push id21234
push userktomlinson@mozilla.com
push dateWed, 22 Jun 2016 05:11:59 +0000
reviewerspadenot
bugs1257718
milestone50.0a1
test for bug 1257718 r?padenot MozReview-Commit-ID: 8MkfnpsQBKH
testing/web-platform/meta/MANIFEST.json
testing/web-platform/tests/webaudio/the-audio-api/the-audioparam-interface/setValueAtTime-within-block.html
--- a/testing/web-platform/meta/MANIFEST.json
+++ b/testing/web-platform/meta/MANIFEST.json
@@ -36043,16 +36043,22 @@
           }
         ],
         "web-animations/timing-model/animations/set-the-timeline-of-an-animation.html": [
           {
             "path": "web-animations/timing-model/animations/set-the-timeline-of-an-animation.html",
             "url": "/web-animations/timing-model/animations/set-the-timeline-of-an-animation.html"
           }
         ],
+        "webaudio/the-audio-api/the-audioparam-interface/setValueAtTime-within-block.html": [
+          {
+            "path": "webaudio/the-audio-api/the-audioparam-interface/setValueAtTime-within-block.html",
+            "url": "/webaudio/the-audio-api/the-audioparam-interface/setValueAtTime-within-block.html"
+          }
+        ],
         "webaudio/the-audio-api/the-iirfilternode-interface/test-iirfilternode.html": [
           {
             "path": "webaudio/the-audio-api/the-iirfilternode-interface/test-iirfilternode.html",
             "url": "/webaudio/the-audio-api/the-iirfilternode-interface/test-iirfilternode.html"
           }
         ]
       }
     },
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/webaudio/the-audio-api/the-audioparam-interface/setValueAtTime-within-block.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<title>Test setValueAtTime with start time not on a block boundary</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+promise_test(function() {
+  const bufferSize = 200;
+  const offset = 65;
+  const sampleRate = 48000;
+  const scheduledValue = -2.0;
+
+  var context = new OfflineAudioContext(1, bufferSize, sampleRate);
+
+  var gain = context.createGain();
+  gain.gain.setValueAtTime(scheduledValue, offset/sampleRate);
+  gain.connect(context.destination);
+
+  // Apply unit DC signal to gain node.
+  var source = context.createBufferSource();
+  source.buffer =
+    function() {
+      var buffer = context.createBuffer(1, 1, context.sampleRate);
+      buffer.getChannelData(0)[0] = 1.0;
+      return buffer;
+    }();
+  source.loop = true;
+  source.start();
+  source.connect(gain);
+
+  return context.startRendering().
+    then(function(buffer) {
+      assert_equals(buffer.length, bufferSize, "output buffer length");
+      var output = buffer.getChannelData(0);
+      var i = 0;
+      for (; i < offset; ++i) {
+        // "Its default value is 1."
+        assert_equals(output[i], 1.0, "default gain at sample " + i);
+      }
+      for (; i < buffer.length; ++i) {
+        // "If there are no more events after this SetValue event, then for
+        // t≥T0, v(t)=V, where T0 is the startTime parameter and V is the
+        // value parameter."
+        assert_equals(output[i], scheduledValue,
+                      "scheduled value at sample " + i);
+      }
+    });
+});
+</script>