netwerk/test/unit/test_unescapestring.js

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/netwerk/test/unit/test_unescapestring.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,31 @@
     1.4 +const ONLY_NONASCII = Components.interfaces.nsINetUtil.ESCAPE_URL_ONLY_NONASCII;
     1.5 +const SKIP_CONTROL = Components.interfaces.nsINetUtil.ESCAPE_URL_SKIP_CONTROL;
     1.6 +
     1.7 +
     1.8 +var tests = [
     1.9 +  ["foo", "foo", 0],
    1.10 +  ["foo%20bar", "foo bar", 0],
    1.11 +  ["foo%2zbar", "foo%2zbar", 0],
    1.12 +  ["foo%", "foo%", 0],
    1.13 +  ["%zzfoo", "%zzfoo", 0],
    1.14 +  ["foo%z", "foo%z", 0],
    1.15 +  ["foo%00bar", "foo\x00bar", 0],
    1.16 +  ["foo%ffbar", "foo\xffbar", 0],
    1.17 +  ["%00%1b%20%61%7f%80%ff", "%00%1b%20%61%7f\x80\xff", ONLY_NONASCII],
    1.18 +  ["%00%1b%20%61%7f%80%ff", "%00%1b a%7f\x80\xff", SKIP_CONTROL],
    1.19 +  ["%00%1b%20%61%7f%80%ff", "%00%1b%20%61%7f\x80\xff", ONLY_NONASCII|SKIP_CONTROL],
    1.20 +  // Test that we do not drop the high-bytes of a UTF-16 string.
    1.21 +  ["\u30a8\u30c9", "\xe3\x82\xa8\xe3\x83\x89", 0],
    1.22 +];
    1.23 +
    1.24 +function run_test() {
    1.25 +  var util = Components.classes["@mozilla.org/network/util;1"]
    1.26 +                       .getService(Components.interfaces.nsINetUtil);
    1.27 +
    1.28 +  for (var i = 0; i < tests.length; ++i) {
    1.29 +    dump("Test " + i + " (" + tests[i][0] + ", " + tests[i][2] + ")\n");
    1.30 +    do_check_eq(util.unescapeString(tests[i][0], tests[i][2]),
    1.31 +                                    tests[i][1]);
    1.32 +  }
    1.33 +  dump(tests.length + " tests passed\n");
    1.34 +}

mercurial