encode-decode.js (1212B)
1 // Latin1 2 s = "a%2b%20def%00A0"; 3 4 res = decodeURI(s); 5 assertEq(res, "a%2b def\x00A0"); 6 assertEq(isLatin1(res), true); 7 8 res = decodeURIComponent(s); 9 assertEq(res, "a+ def\x00A0"); 10 assertEq(isLatin1(res), true); 11 12 // TwoByte 13 s += "\u1200"; 14 assertEq(decodeURI(s), "a%2b def\x00A0\u1200"); 15 assertEq(decodeURIComponent(s), "a+ def\x00A0\u1200"); 16 17 // Latin1 malformed 18 try { 19 decodeURI("abc%80"); 20 assertEq(0, 1); 21 } catch(e) { 22 assertEq(e instanceof URIError, true); 23 } 24 25 // TwoByte malformed 26 try { 27 decodeURI("abc%80\u1200"); 28 assertEq(0, 1); 29 } catch(e) { 30 assertEq(e instanceof URIError, true); 31 } 32 33 // Latin1 34 res = encodeURI("a%2b def\x00A0"); 35 assertEq(res, "a%252b%20def%00A0"); 36 assertEq(isLatin1(res), true); 37 38 res = encodeURIComponent("a+ def\x00A0"); 39 assertEq(res, "a%2B%20def%00A0"); 40 assertEq(isLatin1(res), true); 41 42 // TwoByte 43 res = encodeURI("a%2b def\x00A0\u1200"); 44 assertEq(res, "a%252b%20def%00A0%E1%88%80"); 45 assertEq(isLatin1(res), true); 46 47 res = encodeURIComponent("a+ def\x00A0\u1200"); 48 assertEq(res, "a%2B%20def%00A0%E1%88%80"); 49 assertEq(isLatin1(res), true); 50 51 // TwoByte malformed 52 try { 53 encodeURI("a\uDB00"); 54 assertEq(0, 1); 55 } catch(e) { 56 assertEq(e instanceof URIError, true); 57 }