Home | History | Annotate | Download | only in resources
      1 function hex(number)
      2 {
      3     var hexDigit = "0123456789ABCDEF";
      4     var hex = hexDigit.substr(number & 0xf, 1);
      5     while (number > 15) {
      6         number >>= 4;
      7         hex = hexDigit.substr(number & 15, 1) + hex;
      8     }
      9     return hex;
     10 }
     11 
     12 function decodeText(charsetName, characterSequence)
     13 {
     14     var req = new XMLHttpRequest;
     15     req.open('GET', 'data:text/plain,' + characterSequence, false);
     16     req.overrideMimeType('text/plain; charset="' + charsetName + '"');
     17     req.send('');
     18     return req.responseText;
     19 }
     20 
     21 function decode(charsetName, characterSequence)
     22 {
     23     var decodedText = decodeText(charsetName, characterSequence);
     24     var result = "";
     25     for (var i = 0; i < decodedText.length; ++i) {
     26         var code = hex(decodedText.charCodeAt(i));
     27         if (i)
     28             result += "/";
     29         result += "U+" + ("0000" + code).substr(code.length, 4);
     30     }
     31     return result;
     32 }
     33 
     34 function testDecode(charsetName, characterSequence, unicode)
     35 {
     36     shouldBe("decode('" + charsetName + "', '" + characterSequence + "')", "'" + unicode + "'");
     37 }
     38 
     39 function batchTestDecode(inputData)
     40 {
     41     for (var i in inputData.encodings) {
     42         for (var j in inputData.encoded)
     43             testDecode(inputData.encodings[i], inputData.encoded[j], inputData.unicode[j]);
     44     }
     45 }
     46 
     47