blob: 07d2e608ccdcaf7623557b5b28f5fea45dc5b77b [file] [log] [blame]
function hex(number)
{
var hexDigit = "0123456789ABCDEF";
var hex = hexDigit.substr(number & 0xf, 1);
while (number > 15) {
number >>= 4;
hex = hexDigit.substr(number & 15, 1) + hex;
}
return hex;
}
function decodeText(charsetName, characterSequence)
{
var req = new XMLHttpRequest;
req.open('GET', 'data:text/plain,' + characterSequence, false);
req.overrideMimeType('text/plain; charset="' + charsetName + '"');
req.send('');
return req.responseText;
}
function decode(charsetName, characterSequence)
{
var decodedText = decodeText(charsetName, characterSequence);
var result = "";
for (var i = 0; i < decodedText.length; ++i) {
var code = hex(decodedText.charCodeAt(i));
if (i)
result += "/";
result += "U+" + ("0000" + code).substr(code.length, 4);
}
return result;
}
function testDecode(charsetName, characterSequence, unicode)
{
shouldBe("decode('" + charsetName + "', '" + characterSequence + "')", "'" + unicode + "'");
}
function batchTestDecode(inputData)
{
for (var i in inputData.encodings) {
for (var j in inputData.encoded)
testDecode(inputData.encodings[i], inputData.encoded[j], inputData.unicode[j]);
}
}