1function encode(charset, unicode)
2{
3    // Returns a value already encoded, since we can't do it synchronously.
4    return results[charset][unicode];
5}
6
7function testsDone()
8{
9    var form = document.getElementById('form');
10    var subframe = document.getElementById('subframe');
11
12    form.parentNode.removeChild(form);
13    subframe.parentNode.removeChild(subframe);
14
15    description("This tests encoding characters in various character sets.");
16
17    for (i = 0; i < charsets.length; ++i) {
18        shouldBe("encode('" + charsets[i] + "', '" + unicodes[i] + "')", "'" + expectedResults[i] + "'");
19    }
20
21    isSuccessfullyParsed();
22
23    if (window.layoutTestController)
24        layoutTestController.notifyDone();
25}
26
27function processResult(result)
28{
29    var charsetResults = results[charsets[i]];
30    if (!charsetResults) {
31        charsetResults = new Object;
32        results[charsets[i]] = charsetResults;
33    }
34    charsetResults[unicodes[i]] = result;
35}
36
37function subframeLoaded()
38{
39    var URL = "" + document.getElementById('subframe').contentWindow.location;
40    processResult(URL.substr(URL.indexOf('=') + 1));
41    ++i;
42    runTest();
43}
44
45function runTest()
46{
47    if (i >= charsets.length) {
48        testsDone();
49        return;
50    }
51
52    var form = document.getElementById('form');
53    var text = document.getElementById('text');
54    var subframe = document.getElementById('subframe');
55
56    form.acceptCharset = charsets[i];
57    form.action = "resources/dummy.html";
58    subframe.onload = subframeLoaded;
59    text.value = String.fromCharCode(unicodes[i].replace('U+', '0x'));
60
61    form.submit();
62}
63
64function testEncode(charsetName, unicode, characterSequence)
65{
66    charsets.push(charsetName);
67    unicodes.push(unicode);
68    expectedResults.push(characterSequence);
69}
70