tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

head_charsetConversionTests.js (2935B)


      1 var CC = Components.Constructor;
      2 
      3 function CreateScriptableConverter() {
      4  var ScriptableUnicodeConverter = CC(
      5    "@mozilla.org/intl/scriptableunicodeconverter",
      6    "nsIScriptableUnicodeConverter"
      7  );
      8 
      9  return new ScriptableUnicodeConverter();
     10 }
     11 
     12 function checkDecode(converter, charset, inText, expectedText) {
     13  try {
     14    converter.charset = charset;
     15  } catch (e) {
     16    converter.charset = "iso-8859-1";
     17  }
     18 
     19  dump("testing decoding from " + charset + " to Unicode.\n");
     20  try {
     21    var outText = converter.ConvertToUnicode(inText);
     22  } catch (e) {
     23    outText = "\ufffd";
     24  }
     25 
     26  if (outText != expectedText) {
     27    for (var i = 0; i < inText.length; ++i) {
     28      var inn = inText[i];
     29      var out = outText[i];
     30      var expected = expectedText[i];
     31      if (out != expected) {
     32        dump(
     33          "Decoding error at position " +
     34            i +
     35            ": for input " +
     36            escape(inn) +
     37            " expected " +
     38            escape(expected) +
     39            " but got " +
     40            escape(out) +
     41            "\n"
     42        );
     43      }
     44    }
     45  }
     46  Assert.equal(outText, expectedText);
     47 }
     48 
     49 function checkEncode(converter, charset, inText, expectedText) {
     50  try {
     51    converter.charset = charset;
     52  } catch (e) {
     53    converter.charset = "iso-8859-1";
     54  }
     55 
     56  dump("testing encoding from Unicode to " + charset + "\n");
     57  var outText = converter.ConvertFromUnicode(inText) + converter.Finish();
     58 
     59  if (outText != expectedText) {
     60    for (var i = 0; i < inText.length; ++i) {
     61      var inn = inText[i];
     62      var out = outText[i];
     63      var expected = expectedText[i];
     64      if (out != expected) {
     65        dump(
     66          "Encoding error at position " +
     67            i +
     68            ": for input " +
     69            escape(inn) +
     70            " expected " +
     71            escape(expected) +
     72            " but got " +
     73            escape(out) +
     74            "\n"
     75        );
     76      }
     77    }
     78  }
     79  Assert.equal(outText, expectedText);
     80 }
     81 
     82 function testDecodeAliases(aliases, inString, expectedString) {
     83  var converter = CreateScriptableConverter();
     84  for (var i = 0; i < aliases.length; ++i) {
     85    checkDecode(converter, aliases[i], inString, expectedString);
     86  }
     87 }
     88 
     89 function testEncodeAliases(aliases, inString, expectedString) {
     90  var converter = CreateScriptableConverter();
     91  for (var i = 0; i < aliases.length; ++i) {
     92    checkEncode(converter, aliases[i], inString, expectedString);
     93  }
     94 }
     95 
     96 function testDecodeAliasesInternal(aliases, inString, expectedString) {
     97  var converter = CreateScriptableConverter();
     98  converter.isInternal = true;
     99  for (var i = 0; i < aliases.length; ++i) {
    100    checkDecode(converter, aliases[i], inString, expectedString);
    101  }
    102 }
    103 
    104 function testEncodeAliasesInternal(aliases, inString, expectedString) {
    105  var converter = CreateScriptableConverter();
    106  converter.isInternal = true;
    107  for (var i = 0; i < aliases.length; ++i) {
    108    checkEncode(converter, aliases[i], inString, expectedString);
    109  }
    110 }