diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /js/src/tests/non262/TypedArray/from_string.js | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | js/src/tests/non262/TypedArray/from_string.js | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/js/src/tests/non262/TypedArray/from_string.js b/js/src/tests/non262/TypedArray/from_string.js new file mode 100644 index 0000000000..09a2c36710 --- /dev/null +++ b/js/src/tests/non262/TypedArray/from_string.js @@ -0,0 +1,24 @@ +// %TypedArray%.from called on Array should also handle strings correctly. +var from = Int8Array.from.bind(Uint32Array); +var toCodePoint = s => s.codePointAt(0); + +// %TypedArray%.from on a string iterates over the string. +assertEqArray(from("test string", toCodePoint), + ['t', 'e', 's', 't', ' ', 's', 't', 'r', 'i', 'n', 'g'].map(toCodePoint)); + +// %TypedArray%.from on a string handles surrogate pairs correctly. +var gclef = "\uD834\uDD1E"; // U+1D11E MUSICAL SYMBOL G CLEF +assertEqArray(from(gclef, toCodePoint), [gclef].map(toCodePoint)); +assertEqArray(from(gclef + " G", toCodePoint), [gclef, " ", "G"].map(toCodePoint)); + +// %TypedArray%.from on a string calls the @@iterator method. +String.prototype[Symbol.iterator] = function* () { yield 1; yield 2; }; +assertEqArray(from("anything"), [1, 2]); + +// If the iterator method is deleted, Strings are still arraylike. +delete String.prototype[Symbol.iterator]; +assertEqArray(from("works", toCodePoint), ['w', 'o', 'r', 'k', 's'].map(toCodePoint)); +assertEqArray(from(gclef, toCodePoint), ['\uD834', '\uDD1E'].map(toCodePoint)); + +if (typeof reportCompare === "function") + reportCompare(true, true); |