| // Latin1 |
| s = "a%2b%20def%00A0"; |
| |
| res = decodeURI(s); |
| assertEq(res, "a%2b def\x00A0"); |
| assertEq(isLatin1(res), true); |
| |
| res = decodeURIComponent(s); |
| assertEq(res, "a+ def\x00A0"); |
| assertEq(isLatin1(res), true); |
| |
| // TwoByte |
| s += "\u1200"; |
| assertEq(decodeURI(s), "a%2b def\x00A0\u1200"); |
| assertEq(decodeURIComponent(s), "a+ def\x00A0\u1200"); |
| |
| // Latin1 malformed |
| try { |
| decodeURI("abc%80"); |
| assertEq(0, 1); |
| } catch(e) { |
| assertEq(e instanceof URIError, true); |
| } |
| |
| // TwoByte malformed |
| try { |
| decodeURI("abc%80\u1200"); |
| assertEq(0, 1); |
| } catch(e) { |
| assertEq(e instanceof URIError, true); |
| } |
| |
| // Latin1 |
| res = encodeURI("a%2b def\x00A0"); |
| assertEq(res, "a%252b%20def%00A0"); |
| assertEq(isLatin1(res), true); |
| |
| res = encodeURIComponent("a+ def\x00A0"); |
| assertEq(res, "a%2B%20def%00A0"); |
| assertEq(isLatin1(res), true); |
| |
| // TwoByte |
| res = encodeURI("a%2b def\x00A0\u1200"); |
| assertEq(res, "a%252b%20def%00A0%E1%88%80"); |
| assertEq(isLatin1(res), true); |
| |
| res = encodeURIComponent("a+ def\x00A0\u1200"); |
| assertEq(res, "a%2B%20def%00A0%E1%88%80"); |
| assertEq(isLatin1(res), true); |
| |
| // TwoByte malformed |
| try { |
| encodeURI("a\uDB00"); |
| assertEq(0, 1); |
| } catch(e) { |
| assertEq(e instanceof URIError, true); |
| } |