<!DOCTYPE html>
<html>
<head>
    <title>audiobuffersource-negative-playbackrate-loop</title>
    <script src="../resources/js-test.js"></script>
    <script src="resources/audio-testing.js"></script>
    <script src="resources/audiobuffersource-testing.js"></script>

    <script>

    var sampleRate = 44100.0;
    var sourceFrames = 128;
    var renderFrames = 10;
    var testSpacingFrames = 0;
    var startLoop = 100 / sampleRate;
    var loopDuration = (renderFrames / 2) / sampleRate;
    var endLoop = startLoop + loopDuration;

    var tests = [{ 
        description:"Test looping playback at -1 playbackRate",
        offsetFrame:0,
        renderFrames:renderFrames,
        expected:[104, 103, 102, 101, 100, 104, 103, 102, 101, 100],
    }];

    function go() {
        jsTestIsAsync = true;

        context = new webkitOfflineAudioContext(1, renderFrames, sampleRate);

        var bufferSource = context.createBufferSource();
        bufferSource.buffer = createRamp(context, 0, 127, sourceFrames);

        bufferSource.connect(context.destination);
        bufferSource.playbackRate.value = -1;
        bufferSource.loop = true;
        bufferSource.loopStart = startLoop;
        bufferSource.loopEnd = endLoop;
        bufferSource.start(0, startLoop, loopDuration);
        bufferSource.stop(loopDuration * 2);

        context.oncomplete = checkAllTests;
        context.startRendering();
    }

    </script>
</head>
<body onload="go()">
</body>
</html>
