<!DOCTYPE html>

<html>
<head>
<script src="../resources/js-test-pre.js"></script>
<script src="resources/audio-testing.js"></script>
<script src="resources/audiobuffersource-testing.js"></script>
</head>

<body>

<div id="description"></div>
<div id="console"></div>

<script>
description("Tests that AnalyserNode validates minDecibels, maxDecibels and smoothingTimeConstant values.");

var analyser;

function runTest() {
    if (window.testRunner) {
        testRunner.dumpAsText();
        testRunner.waitUntilDone();
    }

    window.jsTestIsAsync = true;

    var sampleRate = 44100.0;
    var numberOfFrames = 32;
    var context = new webkitOfflineAudioContext(1, numberOfFrames, sampleRate);
    analyser = context.createAnalyser();
    analyser.connect(context.destination);

    // 'minDecibels' shouldn't be greater than 'maxDecibels' which defaults to -30dB.
    shouldThrow("analyser.minDecibels = -20", "'IndexSizeError (DOM Exception 1): The index is not in the allowed range.'");

    // 'maxDecibels' shouldn't be less than 'minDecibels' which defaults to -100dB.
    shouldThrow("analyser.maxDecibels = -120", "'IndexSizeError (DOM Exception 1): The index is not in the allowed range.'");

    // 'smoothingTimeConstant' range is between 0 and 1.
    shouldThrow("analyser.smoothingTimeConstant = 2", "'IndexSizeError (DOM Exception 1): The index is not in the allowed range.'");

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

runTest();

</script>

<script src="../resources/js-test-post.js"></script>
</body>
</html>
