| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- //-------------------------------------------------------------------------------------------------------
- // Copyright (C) Microsoft. All rights reserved.
- // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
- //-------------------------------------------------------------------------------------------------------
- // Ranges of valid hexadecimal characters
- var v0 = 48, v9 = 57, vA = 65, vZ = 90, va = 97, vz = 122;
- var nonHexWideCharValues =
- [
- // These characters are just outside the boundaries for hexadecimal characters
- v0 - 1, v9 + 1,
- vA - 1, vZ + 1,
- va - 1, vz + 1,
- // Some of these non-ASCII characters may map to a hexadecimal digit. However, we still should not accept them since they
- // are not hexadecimal characters in the ASCII set.
- 65296, 65297, 65298, 65299, 65300, 65301, 65302, 65303,
- 65304, 65305, 65313, 65314, 65315, 65316, 65317, 65318,
- 65345, 65346, 65347, 65348, 65349, 65350
- ];
- writeLine("First character invalid in %-encoded URI component:");
- for (var i in nonHexWideCharValues)
- {
- var testResult = " " + nonHexWideCharValues[i] + ": ";
- try
- {
- decodeURIComponent("%" + String.fromCharCode(nonHexWideCharValues[i]) + "0");
- testResult += "Fail (no exception)";
- }
- catch (ex)
- {
- testResult += "Pass (" + ex.name + ": " + ex.message + ")";
- }
- writeLine(testResult);
- }
- writeLine("");
- writeLine("Second character invalid in %-encoded URI component:");
- for (var i in nonHexWideCharValues)
- {
- var testResult = " " + nonHexWideCharValues[i] + ": ";
- try
- {
- decodeURIComponent("%0" + String.fromCharCode(nonHexWideCharValues[i]));
- testResult += "Fail (no exception)";
- }
- catch (ex)
- {
- testResult += "Pass (" + ex.name + ": " + ex.message + ")";
- }
- writeLine(testResult);
- }
- writeLine("");
- // Helpers
- function writeLine(str)
- {
- WScript.Echo("" + str);
- }
|