<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body>
<script>
    description("This test how deep we can recurse, and that we get an exception when we do, as opposed to a stack overflow.");

    function simpleRecursion(depth) {
        if (depth)
            simpleRecursion(depth - 1);
    }

    try {
        simpleRecursion(10000);
    } catch (ex) {
        debug("FAIL: " + ex);
    }

    try {
        simpleRecursion(10000000);
    } catch (ex) {
        var msg = String(eval(ex));
        shouldBe("msg", "'RangeError: Maximum call stack size exceeded.'");
    }
    
    try {
        simpleRecursion(1000000000);
    } catch (ex) {
        var msg = String(eval(ex));
        shouldBe("msg", "'RangeError: Maximum call stack size exceeded.'");
    }

    var tooFewArgsDepth = 0;

    function tooFewArgsRecursion(a) {
        if (tooFewArgsDepth) {
            tooFewArgsDepth--;
            tooFewArgsRecursion();
        }
    }

    try {
        tooFewArgsDepth = 10000000;
        tooFewArgsRecursion();
    } catch (ex) {
        var msg = String(eval(ex));
        shouldBe("msg", "'RangeError: Maximum call stack size exceeded.'");
    }

    function tooManyArgsRecursion(depth) {
        if (depth)
            tooManyArgsRecursion(depth - 1, 1);
    }

    try {
        tooManyArgsRecursion(10000000, 1);
    } catch (ex) {
        var msg = String(eval(ex));
        shouldBe("msg", "'RangeError: Maximum call stack size exceeded.'");
    }

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