<!DOCTYPE html>

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

<body>

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

<script>
description("Tests Biquad highpass filter.");

function runTest() {
    if (window.testRunner) {
        testRunner.dumpAsText();
        testRunner.waitUntilDone();
    }
    
    window.jsTestIsAsync = true;
        
    // Create offline audio context.
    var context = new OfflineAudioContext(2, sampleRate * renderLengthSeconds, sampleRate);

    // The filters we want to test.
    var filterParameters = [{cutoff : 0,    q : 1, gain : 1 },
                            {cutoff : 1,    q : 1, gain : 1 },
                            {cutoff : 0.25, q : 1, gain : 1 },
                           ];

    createTestAndRun(context, "highpass", filterParameters);
}

runTest();
successfullyParsed = true;

</script>

</body>
</html>
