it,
spy,
} from "./dev-deps.js";
-import {
- findIndexedEntry,
- isArrayIndexString,
- isArraylikeObject,
- isCollection,
- isConcatSpreadable,
-} from "./collection.js";
+import { findIndexedEntry, isCollection } from "./collection.js";
describe("findIndexedEntry", () => {
it("[[Call]] returns undefined if no matching entry exists", () => {
});
});
-describe("isArrayIndexString", () => {
- it("[[Call]] returns false for nonstrings", () => {
- assertStrictEquals(isArrayIndexString(1), false);
- });
-
- it("[[Call]] returns false for noncanonical strings", () => {
- assertStrictEquals(isArrayIndexString(""), false);
- assertStrictEquals(isArrayIndexString("01"), false);
- assertStrictEquals(isArrayIndexString("9007199254740993"), false);
- });
-
- it("[[Call]] returns false for nonfinite numbers", () => {
- assertStrictEquals(isArrayIndexString("NaN"), false);
- assertStrictEquals(isArrayIndexString("Infinity"), false);
- assertStrictEquals(isArrayIndexString("-Infinity"), false);
- });
-
- it("[[Call]] returns false for negative numbers", () => {
- assertStrictEquals(isArrayIndexString("-0"), false);
- assertStrictEquals(isArrayIndexString("-1"), false);
- });
-
- it("[[Call]] returns false for nonintegers", () => {
- assertStrictEquals(isArrayIndexString("0.25"), false);
- assertStrictEquals(isArrayIndexString("1.1"), false);
- });
-
- it("[[Call]] returns false for numbers greater than or equal to -1 >>> 0", () => {
- assertStrictEquals(isArrayIndexString(String(-1 >>> 0)), false);
- assertStrictEquals(
- isArrayIndexString(String((-1 >>> 0) + 1)),
- false,
- );
- });
-
- it("[[Call]] returns true for array lengths less than -1 >>> 0", () => {
- assertStrictEquals(isArrayIndexString("0"), true);
- assertStrictEquals(
- isArrayIndexString(String((-1 >>> 0) - 1)),
- true,
- );
- });
-});
-
-describe("isArraylikeObject", () => {
- it("[[Call]] returns false for primitives", () => {
- assertStrictEquals(isArraylikeObject("failure"), false);
- });
-
- it("[[Call]] returns false if length throws", () => {
- assertStrictEquals(
- isArraylikeObject({
- get length() {
- throw void {};
- },
- }),
- false,
- );
- });
-
- it("[[Call]] returns false if length is not a number and cannot be converted to one", () => {
- assertStrictEquals(isArraylikeObject({ length: 1n }), false);
- });
-
- it("[[Call]] returns true if length is convertable to a number", () => {
- assertStrictEquals(isArraylikeObject({ length: -0 }), true);
- assertStrictEquals(isArraylikeObject({ length: 1 }), true);
- assertStrictEquals(isArraylikeObject({ length: -1.25 }), true);
- assertStrictEquals(
- isArraylikeObject({ length: 9007199254740992 }),
- true,
- );
- assertStrictEquals(isArraylikeObject({ length: Infinity }), true);
- assertStrictEquals(isArraylikeObject({ length: "success" }), true);
- });
-});
-
describe("isCollection", () => {
it("[[Call]] returns false for primitives", () => {
assertStrictEquals(isCollection("failure"), false);
);
});
});
-
-describe("isConcatSpreadable", () => {
- it("[[Call]] returns false for primitives", () => {
- assertStrictEquals(isConcatSpreadable("failure"), false);
- });
-
- it("[[Call]] returns false if [Symbol.isConcatSpreadable] is null or false", () => {
- assertStrictEquals(
- isConcatSpreadable(
- Object.assign([], { [Symbol.isConcatSpreadable]: null }),
- ),
- false,
- );
- assertStrictEquals(
- isConcatSpreadable(
- Object.assign([], { [Symbol.isConcatSpreadable]: false }),
- ),
- false,
- );
- });
-
- it("[[Call]] returns true if [Symbol.isConcatSpreadable] is undefined and the object is an array", () => {
- assertStrictEquals(
- isConcatSpreadable(
- Object.assign([], { [Symbol.isConcatSpreadable]: undefined }),
- ),
- true,
- );
- });
-
- it("[[Call]] returns true if [Symbol.isConcatSpreadable] is true", () => {
- assertStrictEquals(
- isConcatSpreadable({ [Symbol.isConcatSpreadable]: true }),
- true,
- );
- });
-});