| // 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)") |
| } |
| } |
| } |