summaryrefslogtreecommitdiffstats
path: root/js/src/tests/non262/TypedArray/findLast-and-findLastIndex.js
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--js/src/tests/non262/TypedArray/findLast-and-findLastIndex.js52
1 files changed, 52 insertions, 0 deletions
diff --git a/js/src/tests/non262/TypedArray/findLast-and-findLastIndex.js b/js/src/tests/non262/TypedArray/findLast-and-findLastIndex.js
new file mode 100644
index 0000000000..ed14b4a002
--- /dev/null
+++ b/js/src/tests/non262/TypedArray/findLast-and-findLastIndex.js
@@ -0,0 +1,52 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * https://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+var BUGNUMBER = 1704385;
+var summary = "Implement %TypedArray%.prototype.{findLast, findLastIndex}";
+print(BUGNUMBER + ": " + summary);
+
+const methods = ["findLast", "findLastIndex"];
+
+anyTypedArrayConstructors.forEach(constructor => {
+ methods.forEach(method => {
+ var arr = new constructor([0, 1, 2, 3, 4, 5]);
+ // test that this.length is never called
+ Object.defineProperty(arr, "length", {
+ get() {
+ throw new Error("length accessor called");
+ }
+ });
+ assertEq(arr[method].length, 1);
+ assertEq(arr[method](v => v === 3), 3);
+ assertEq(arr[method](v => v === 6), method === "findLast" ? undefined : -1);
+
+ var thisValues = [undefined, null, true, 1, "foo", [], {}];
+ if (typeof Symbol == "function")
+ thisValues.push(Symbol());
+
+ thisValues.forEach(thisArg =>
+ assertThrowsInstanceOf(() => arr[method].call(thisArg, () => true), TypeError)
+ );
+
+ assertThrowsInstanceOf(() => arr[method](), TypeError);
+ assertThrowsInstanceOf(() => arr[method](1), TypeError);
+ });
+});
+
+anyTypedArrayConstructors.filter(isFloatConstructor).forEach(constructor => {
+ var arr = new constructor([-0, 0, 1, 5, NaN, 6]);
+ assertEq(arr.findLast(v => Number.isNaN(v)), NaN);
+ assertEq(arr.findLastIndex(v => Number.isNaN(v)), 4);
+
+ assertEq(arr.findLast(v => Object.is(v, 0)), 0);
+ assertEq(arr.findLastIndex(v => Object.is(v, 0)), 1);
+
+ assertEq(arr.findLast(v => Object.is(v, -0)), -0);
+ assertEq(arr.findLastIndex(v => Object.is(v, -0)), 0);
+})
+
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);