| function shouldBe(actual, expected) { |
| if (actual !== expected) |
| throw new Error('bad value: ' + actual); |
| } |
| |
| function isLowSurrogate(code) |
| { |
| return code >= 0xDC00 && code <= 0xDFFF; |
| } |
| |
| function isHighSurrogate(code) |
| { |
| return code >= 0xD800 && code <= 0xDBFF; |
| } |
| |
| function isSurrogate(code) |
| { |
| return isLowSurrogate(code) || isHighSurrogate(code); |
| } |
| |
| for (var i = 256; i < 0xffff; ++i) { |
| if (isSurrogate(i)) |
| continue; |
| var ch = String.fromCharCode(i); |
| shouldBe(decodeURIComponent(encodeURIComponent(ch)), ch); |
| shouldBe(decodeURI(encodeURI(ch)), ch); |
| shouldBe(unescape(escape(ch)), ch); |
| } |