<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body>
<p id="description"></p>
<div id="console"></div>
<script>
description("Test the DOM Storage quota code.");

function testQuota(storageString)
{
    storage = eval(storageString);
    if (!storage) {
        testFailed(storageString + " DOES NOT exist");
        return;
    }

    debug("Testing " + storageString);

    evalAndLog("storage.clear()");
    shouldBe("storage.length", "0");

    debug("Creating 'data' which contains 64K of data");
    data = "\u03BB";
    for (var i=0; i<16; i++)
        data += data;
    shouldBe("data.length", "65536");

    debug("Putting 'data' into 39 " + storageString + " buckets.");
    for (var i=0; i<39; i++)
        storage[i] = data;

    debug("Putting 'data' into another bucket.h");
    try {
        storage[39] = data;
        testFailed("Did not hit quota error.");
    } catch (e) {
        testPassed("Hit exception as expected");
    }

    debug("Verify that data was never inserted.");
    shouldBeNull("storage.getItem(39)");

    debug("Removing bucket 38.");
    storage.removeItem('38');

    debug("Adding 'Hello!' into a new bucket.");
    try {
        storage['foo'] = "Hello!";
        testPassed("Insertion worked.");
    } catch (e) {
        testFailed("Exception: " + e);
    }
}

testQuota("sessionStorage");
debug("");
debug("");
testQuota("localStorage");

window.successfullyParsed = true;
isSuccessfullyParsed();
</script>
</body>
</html>
