Javascript  |  70行  |  1.74 KB

function encode(charset, unicode)
{
    // Returns a value already encoded, since we can't do it synchronously.
    return results[charset][unicode];
}

function testsDone()
{
    var form = document.getElementById('form');
    var subframe = document.getElementById('subframe');

    form.parentNode.removeChild(form);
    subframe.parentNode.removeChild(subframe);

    description("This tests encoding characters in various character sets.");

    for (i = 0; i < charsets.length; ++i) {
        shouldBe("encode('" + charsets[i] + "', '" + unicodes[i] + "')", "'" + expectedResults[i] + "'");
    }

    isSuccessfullyParsed();

    if (window.layoutTestController)
        layoutTestController.notifyDone();
}

function processResult(result)
{
    var charsetResults = results[charsets[i]];
    if (!charsetResults) {
        charsetResults = new Object;
        results[charsets[i]] = charsetResults;
    }
    charsetResults[unicodes[i]] = result; 
}

function subframeLoaded()
{
    var URL = "" + document.getElementById('subframe').contentWindow.location;
    processResult(URL.substr(URL.indexOf('=') + 1));
    ++i;
    runTest();
}

function runTest()
{    
    if (i >= charsets.length) {
        testsDone();
        return;
    }

    var form = document.getElementById('form');
    var text = document.getElementById('text');
    var subframe = document.getElementById('subframe');

    form.acceptCharset = charsets[i];
    form.action = "resources/dummy.html";
    subframe.onload = subframeLoaded;
    text.value = String.fromCharCode(unicodes[i].replace('U+', '0x'));
    
    form.submit();
}

function testEncode(charsetName, unicode, characterSequence)
{
    charsets.push(charsetName);
    unicodes.push(unicode);
    expectedResults.push(characterSequence);
}