| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta name="timeout" content="long"> |
| <title>Big5 encoding (href)</title> |
| <meta charset="big5"> <!-- test breaks if the server overrides this --> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="big5_index.js"></script> |
| <script src="big5-encoder.js"></script> |
| <link rel="author" title="Richard Ishida" href="mailto:ishida@w3.org"> |
| <link rel="help" href="https://encoding.spec.whatwg.org/#big5"> |
| <meta name="assert" content="The browser produces the expected byte sequences for all characters in the big5 encoding after 0x9F when writing characters to an href value, using the encoder steps in the specification."> |
| <script> |
| function encode(input, expected, desc) { |
| // tests whether a Unicode character is converted to an equivalent byte sequence by href |
| // input: a Unicode character |
| // expected: expected byte sequence |
| // desc: what's being tested |
| test(function() { |
| var a = document.createElement("a"); // <a> uses document encoding for URL's query |
| a.href = "https://example.com/?" + input; |
| result = a.search.substr(1); // remove leading "?" |
| assert_equals(normalizeStr(result), normalizeStr(expected)); |
| }, desc); |
| } |
| |
| // create a simple list of just those code points for which there is an encoding possible |
| codepoints = []; |
| for (var i = 0x80; i < 0x2a6df; i++) { |
| result = big5Encoder(String.fromCodePoint(i)); |
| if (result) { |
| var item = {}; |
| codepoints.push(item); |
| item.cp = i; |
| item.expected = "%" + result.replace(/ /g, "%"); |
| } |
| } |
| |
| // run the tests |
| for (var x = 0; x < codepoints.length; x++) { |
| encode( |
| String.fromCodePoint(codepoints[x].cp), |
| codepoints[x].expected, |
| "U+" + |
| codepoints[x].cp.toString(16).toUpperCase() + |
| " " + |
| String.fromCodePoint(codepoints[x].cp) + |
| " " + |
| codepoints[x].expected |
| ); |
| } |
| |
| // NOTES |
| // this test relies on support for String.fromCodePoint, which appears to be supported by major desktop browsers |
| // the test excludes ASCII characters |
| </script> |
| </head> |
| <body> |
| <div id="log"></div> |
| </body> |
| </html> |