<!DOCTYPE html>
<html>
<body>
<script src="../resources/js-test.js"></script>
<script>
description("Tests the limits of BiquadFilterNode's AudioParam attributes");

context = new OfflineAudioContext({ sampleRate: 44100, length: 100 });
node = new BiquadFilterNode(context);

const FLT_MAX = 3.4028235e38;

function diff(a, b)
{
    if (a > b)
        return a - b;
    return b - a;
}

shouldBe("node.frequency.defaultValue", "350");
shouldBe("node.frequency.minValue", "0");
shouldBe("node.frequency.maxValue", "0.5 * context.sampleRate");

shouldBe("node.detune.defaultValue", "0");
shouldBe("node.detune.minValue", "-153600");
shouldBe("node.detune.maxValue", "153600");

shouldBe("node.Q.defaultValue", "1");
shouldBeTrue("diff(node.Q.minValue, -FLT_MAX) < 1e31");
shouldBeTrue("diff(node.Q.maxValue, FLT_MAX) < 1e31");

shouldBe("node.gain.defaultValue", "0");
shouldBeTrue("diff(node.gain.minValue, -FLT_MAX) < 1e31");
shouldBeTrue("diff(node.gain.maxValue, 1541) < 1");
</script>
</body>
</html>
