From 26a029d407be480d791972afb5975cf62c9360a6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 02:47:55 +0200 Subject: Adding upstream version 124.0.1. Signed-off-by: Daniel Baumann --- .../tests/encoding/resources/encode-href-common.js | 57 ++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 testing/web-platform/tests/encoding/resources/encode-href-common.js (limited to 'testing/web-platform/tests/encoding/resources/encode-href-common.js') diff --git a/testing/web-platform/tests/encoding/resources/encode-href-common.js b/testing/web-platform/tests/encoding/resources/encode-href-common.js new file mode 100644 index 0000000000..dc646fe8c1 --- /dev/null +++ b/testing/web-platform/tests/encoding/resources/encode-href-common.js @@ -0,0 +1,57 @@ +// These are defined by the test: +// errors (boolean) +// encoder (function) +// ranges (array) +// expect (function) + +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 + subsetTest(test, function() { + var a = document.createElement("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); +} + +// set up a simple array of unicode codepoints that are not encoded +var codepoints = []; + +for (var range of ranges) { + for (var i = range[0]; i < range[1]; i++) { + result = encoder(String.fromCodePoint(i)); + var success = !!result; + if (errors) { + success = !success; + } + if (success) { + var item = {}; + codepoints.push(item); + item.cp = i; + item.expected = expect(result, i); + item.desc = range[2] ? range[2] + " " : ""; + } + } +} + +// run the tests +for (var x = 0; x < codepoints.length; x++) { + encode( + String.fromCodePoint(codepoints[x].cp), + codepoints[x].expected, + codepoints[x].desc + + " 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 tests exclude ASCII characters -- cgit v1.2.3