<!DOCTYPE html>
<html class="a">
  <head>
    <title>Delay time clamping in cycles</title>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
  </head>
  <body>
    <script>
      function doTest() {
        let off = new OfflineAudioContext(1, 512, 48000);
        let b = new AudioBuffer({sampleRate: off.sampleRate, length: 1});
        b.getChannelData(0)[0] = 1;
        let impulse = new AudioBufferSourceNode(off, {buffer: b});
        impulse.start(0);
        // This delayTime of 64 samples MUST be clamped to 128 samples when
        // in a cycle.
        let delay = new DelayNode(off, {delayTime: 64 / 48000});
        let fb = new GainNode(off);
        impulse.connect(fb).connect(delay).connect(fb).connect(off.destination);
        return off.startRendering().then((b) => {
          return Promise.resolve(b.getChannelData(0));
        })
      }

      promise_test(() => {
        return doTest().then(samples => {
          for (var i = 0; i < samples.length; i++) {
            if ((i % 128) != 0) {
              assert_equals(
                  samples[i], 0.0,
                  'Non-silent audio found in between delayed impulses');
            } else {
              assert_equals(
                  samples[i], 1.0,
                  'Silent audio found instead of a delayed impulse');
            }
          }
        });
      }, 'Test that a DelayNode allows a feedback loop of a single rendering quantum');
    </script>
  </body>
</html>
