tor-browser

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

test_unescapestring.js (1029B)


      1 "use strict";
      2 
      3 const ONLY_NONASCII = Ci.nsINetUtil.ESCAPE_URL_ONLY_NONASCII;
      4 const SKIP_CONTROL = Ci.nsINetUtil.ESCAPE_URL_SKIP_CONTROL;
      5 
      6 var tests = [
      7  ["foo", "foo", 0],
      8  ["foo%20bar", "foo bar", 0],
      9  ["foo%2zbar", "foo%2zbar", 0],
     10  ["foo%", "foo%", 0],
     11  ["%zzfoo", "%zzfoo", 0],
     12  ["foo%z", "foo%z", 0],
     13  ["foo%00bar", "foo\x00bar", 0],
     14  ["foo%ffbar", "foo\xffbar", 0],
     15  ["%00%1b%20%61%7f%80%ff", "%00%1b%20%61%7f\x80\xff", ONLY_NONASCII],
     16  ["%00%1b%20%61%7f%80%ff", "%00%1b a%7f\x80\xff", SKIP_CONTROL],
     17  [
     18    "%00%1b%20%61%7f%80%ff",
     19    "%00%1b%20%61%7f\x80\xff",
     20    ONLY_NONASCII | SKIP_CONTROL,
     21  ],
     22  // Test that we do not drop the high-bytes of a UTF-16 string.
     23  ["\u30a8\u30c9", "\xe3\x82\xa8\xe3\x83\x89", 0],
     24 ];
     25 
     26 function run_test() {
     27  for (var i = 0; i < tests.length; ++i) {
     28    dump("Test " + i + " (" + tests[i][0] + ", " + tests[i][2] + ")\n");
     29    Assert.equal(
     30      Services.io.unescapeString(tests[i][0], tests[i][2]),
     31      tests[i][1]
     32    );
     33  }
     34  dump(tests.length + " tests passed\n");
     35 }