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 }