// META: global=window // META: timeout=long // META: variant=?XMLHttpRequest // META: variant=?TextDecoder // META: script=resources/encodings.js // META: script=resources/single-byte-decoder.js // For TextDecoder tests var buffer = new ArrayBuffer(255), view = new Uint8Array(buffer) for(var i = 0, l = view.byteLength; i < l; i++) { view[i] = i } // For XMLHttpRequest and TextDecoder tests function assert_decode(data, encoding) { if(encoding == "ISO-8859-8-I") { encoding = "ISO-8859-8" } for(var i = 0, l = data.length; i < l; i++) { var cp = data.charCodeAt(i), expectedCp = (i < 0x80) ? i : singleByteIndexes[encoding][i-0x80] if(expectedCp == null) { expectedCp = 0xFFFD } assert_equals(cp, expectedCp, encoding + ":" + i) } } var subsetTest = ""; if (location.search) { subsetTest = location.search.substr(1); } // Setting up all the tests for(var i = 0, l = singleByteEncodings.length; i < l; i++) { var encoding = singleByteEncodings[i] for(var ii = 0, ll = encoding.labels.length; ii < ll; ii++) { var label = encoding.labels[ii] if (subsetTest == "XMLHttpRequest" || !subsetTest) { async_test(function(t) { var xhr = new XMLHttpRequest, name = encoding.name // need scoped variable xhr.open("GET", "resources/single-byte-raw.py?label=" + label) xhr.send(null) xhr.onload = t.step_func_done(function() { assert_decode(xhr.responseText, name) }) }, encoding.name + ": " + label + " (XMLHttpRequest)") } if (subsetTest == "TextDecoder" || !subsetTest) { test(function() { var d = new TextDecoder(label), data = d.decode(view) assert_equals(d.encoding, encoding.name.toLowerCase()) // ASCII names only, so safe assert_decode(data, encoding.name) }, encoding.name + ": " + label + " (TextDecoder)") } } }