diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 01:47:29 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 01:47:29 +0000 |
commit | 0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d (patch) | |
tree | a31f07c9bcca9d56ce61e9a1ffd30ef350d513aa /testing/web-platform/tests/encoding/resources/decoding-helpers.js | |
parent | Initial commit. (diff) | |
download | firefox-esr-0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d.tar.xz firefox-esr-0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d.zip |
Adding upstream version 115.8.0esr.upstream/115.8.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/encoding/resources/decoding-helpers.js')
-rw-r--r-- | testing/web-platform/tests/encoding/resources/decoding-helpers.js | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/testing/web-platform/tests/encoding/resources/decoding-helpers.js b/testing/web-platform/tests/encoding/resources/decoding-helpers.js new file mode 100644 index 0000000000..78e52da014 --- /dev/null +++ b/testing/web-platform/tests/encoding/resources/decoding-helpers.js @@ -0,0 +1,32 @@ +// Decode an URL encoded string, using XHR and data: URL. Returns a Promise. +function decode(label, url_encoded_string) { + return new Promise((resolve, reject) => { + const req = new XMLHttpRequest; + req.open('GET', `data:text/plain,${url_encoded_string}`); + req.overrideMimeType(`text/plain; charset="${label}"`); + req.send(); + req.onload = () => resolve(req.responseText); + req.onerror = () => reject(new Error(req.statusText)); + }); +} + +// Convert code units in a decoded string into: "U+0001/U+0002/...' +function to_code_units(string) { + return string.split('') + .map(unit => unit.charCodeAt(0)) + .map(code => 'U+' + ('0000' + code.toString(16).toUpperCase()).slice(-4)) + .join('/'); +} + +function decode_test(label, + url_encoded_input, + expected_code_units, + description) { + promise_test(() => { + return decode(label, url_encoded_input) + .then(decoded => to_code_units(decoded)) + .then(actual => { + assert_equals(actual, expected_code_units, `Decoding with ${label}`); + }); + }, description); +} |