]> Lady’s Gitweb - Pisces/blobdiff - value.test.js
Minor refactors to numeric.js
[Pisces] / value.test.js
index 0f95f22fda345a9841fc695a4c47b6dbaa8649a3..b7dcd6980e89c4c12bac9b6fd861562c4707598c 100644 (file)
@@ -1,16 +1,17 @@
-// β™“πŸŒŸ PiscΔ“s βˆ· value.test.js
-// ====================================================================
-//
-// Copyright Β© 2022–2023 Lady [@ Lady’s Computer].
-//
-// This Source Code Form is subject to the terms of the Mozilla Public
-// License, v. 2.0. If a copy of the MPL was not distributed with this
-// file, You can obtain one at <https://mozilla.org/MPL/2.0/>.
+// SPDX-FileCopyrightText: 2022, 2023, 2025 Lady <https://www.ladys.computer/about/#lady>
+// SPDX-License-Identifier: MPL-2.0
+/**
+ * βŒ β™“πŸŒŸ PiscΔ“s βˆ· value.test.js
+ *
+ * Copyright Β© 2022–2023, 2025 Lady [@ Ladys Computer].
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <https://mozilla.org/MPL/2.0/>.
+ */
 
 import {
-  assert,
   assertEquals,
-  assertNotStrictEquals,
   assertStrictEquals,
   assertThrows,
   describe,
@@ -25,12 +26,11 @@ import {
   isDataDescriptor,
   isFullyPopulatedDescriptor,
   isGenericDescriptor,
-  isPropertyDescriptorRecord,
   ITERATOR,
-  LN10,
-  LN2,
-  LOG10ℇ,
-  LOG2ℇ,
+  LN_10,
+  LN_2,
+  LOG10_𝑒,
+  LOG2_𝑒,
   MATCH,
   MATCH_ALL,
   MAXIMUM_NUMBER,
@@ -44,26 +44,26 @@ import {
   ordinaryToPrimitive,
   POSITIVE_INFINITY,
   POSITIVE_ZERO,
-  RECIPROCAL_SQRT2,
+  RECIPROCAL_SQRT_2,
   REPLACE,
   sameValue,
   sameValueZero,
   SPECIES,
   SPLIT,
-  SQRT2,
+  SQRT_2,
   TO_PRIMITIVE,
   TO_STRING_TAG,
   toFunctionName,
   toIndex,
   toLength,
   toPrimitive,
-  toPropertyDescriptor,
+  toPropertyKey,
   type,
   UNDEFINED,
   UNSCOPABLES,
-  Ξ•,
-  Ξ ,
-  β„‡,
+  π‘’,
+  πœ€,
+  πœ‹,
 } from "./value.js";
 
 describe("ASYNC_ITERATOR", () => {
@@ -93,27 +93,27 @@ describe("ITERATOR", () => {
   });
 });
 
-describe("LN10", () => {
+describe("LN_10", () => {
   it("[[Get]] is ln(10)", () => {
-    assertStrictEquals(LN10, Math.LN10);
+    assertStrictEquals(LN_10, Math.LN10);
   });
 });
 
-describe("LN2", () => {
+describe("LN_2", () => {
   it("[[Get]] is ln(2)", () => {
-    assertStrictEquals(LN2, Math.LN2);
+    assertStrictEquals(LN_2, Math.LN2);
   });
 });
 
-describe("LOG10ℇ", () => {
-  it("[[Get]] is log10(ℇ)", () => {
-    assertStrictEquals(LOG10ℇ, Math.LOG10E);
+describe("LOG10_𝑒", () => {
+  it("[[Get]] is log10(𝑒)", () => {
+    assertStrictEquals(LOG10_𝑒, Math.LOG10E);
   });
 });
 
-describe("LOG2ℇ", () => {
+describe("LOG2_𝑒", () => {
   it("[[Get]] is log2(ℇ)", () => {
-    assertStrictEquals(LOG2ℇ, Math.LOG2E);
+    assertStrictEquals(LOG2_𝑒, Math.LOG2E);
   });
 });
 
@@ -195,9 +195,9 @@ describe("POSITIVE_ZERO", () => {
   });
 });
 
-describe("RECIPROCAL_SQRT2", () => {
+describe("RECIPROCAL_SQRT_2", () => {
   it("[[Get]] is sqrt(Β½)", () => {
-    assertStrictEquals(RECIPROCAL_SQRT2, Math.SQRT1_2);
+    assertStrictEquals(RECIPROCAL_SQRT_2, Math.SQRT1_2);
   });
 });
 
@@ -219,9 +219,9 @@ describe("SPLIT", () => {
   });
 });
 
-describe("SQRT2", () => {
+describe("SQRT_2", () => {
   it("[[Get]] is sqrt(2)", () => {
-    assertStrictEquals(SQRT2, Math.SQRT2);
+    assertStrictEquals(SQRT_2, Math.SQRT2);
   });
 });
 
@@ -505,45 +505,6 @@ describe("isGenericDescriptor", () => {
   });
 });
 
-describe("isPropertyDescriptorRecord", () => {
-  it("[[Call]] returns true for objects created by toPropertyDescriptor", () => {
-    assertStrictEquals(
-      isPropertyDescriptorRecord(toPropertyDescriptor({})),
-      true,
-    );
-  });
-
-  it("[[Get]] returns false for other objects", () => {
-    assertStrictEquals(
-      isPropertyDescriptorRecord(Object.create(null)),
-      false,
-    );
-  });
-
-  it("[[Get]] returns false for undefined", () => {
-    assertStrictEquals(isPropertyDescriptorRecord(undefined), false);
-  });
-
-  it("[[Construct]] throws an error", () => {
-    assertThrows(() => new isPropertyDescriptorRecord({}));
-  });
-
-  describe(".length", () => {
-    it("[[Get]] returns the correct length", () => {
-      assertStrictEquals(isPropertyDescriptorRecord.length, 1);
-    });
-  });
-
-  describe(".name", () => {
-    it("[[Get]] returns the correct name", () => {
-      assertStrictEquals(
-        isPropertyDescriptorRecord.name,
-        "isPropertyDescriptorRecord",
-      );
-    });
-  });
-});
-
 describe("ordinaryToPrimitive", () => {
   it("[[Call]] prefers `valueOf` by default", () => {
     const obj = {
@@ -1034,274 +995,43 @@ describe("toPrimitive", () => {
   });
 });
 
-describe("toPropertyDescriptor", () => {
-  it("[[Call]] creates a new property descriptor record", () => {
-    const obj = {};
-    const desc = toPropertyDescriptor(obj);
-    assertEquals(obj, desc);
-    assertNotStrictEquals(obj, desc);
+describe("toPropertyKey", () => {
+  it("returns a string or symbol", () => {
+    const sym = Symbol();
+    assertStrictEquals(toPropertyKey(sym), sym);
+    assertStrictEquals(
+      toPropertyKey(new String("success")),
+      "success",
+    );
   });
 
-  it("[[Call]] coerces the values", () => {
-    assertEquals(
-      toPropertyDescriptor({
-        configurable: undefined,
-        enumerable: undefined,
-        writable: undefined,
+  it("favours the `toString` representation", () => {
+    assertStrictEquals(
+      toPropertyKey({
+        toString() {
+          return "success";
+        },
+        valueOf() {
+          return "failure";
+        },
       }),
-      { configurable: false, enumerable: false, writable: false },
+      "success",
     );
   });
 
-  it("[[Construct]] throws for primitives", () => {
-    assertThrows(() => toPropertyDescriptor(undefined));
-    assertThrows(() => toPropertyDescriptor("failure"));
-  });
-
   it("[[Construct]] throws an error", () => {
-    assertThrows(() => new toPropertyDescriptor({}));
+    assertThrows(() => new toPropertyKey(""));
   });
 
   describe(".length", () => {
     it("[[Get]] returns the correct length", () => {
-      assertStrictEquals(toPropertyDescriptor.length, 1);
+      assertStrictEquals(toPropertyKey.length, 1);
     });
   });
 
   describe(".name", () => {
     it("[[Get]] returns the correct name", () => {
-      assertStrictEquals(
-        toPropertyDescriptor.name,
-        "toPropertyDescriptor",
-      );
-    });
-  });
-
-  describe("~configurable", () => {
-    it("[[DefineOwnProperty]] coerces to a boolean", () => {
-      const desc = toPropertyDescriptor({});
-      Object.defineProperty(desc, "configurable", {});
-      assertStrictEquals(desc.configurable, false);
-    });
-
-    it("[[DefineOwnProperty]] throws for accessor properties", () => {
-      const desc = toPropertyDescriptor({});
-      assertThrows(() =>
-        Object.defineProperty(desc, "configurable", { get: undefined })
-      );
-    });
-
-    it("[[Set]] coerces to a boolean", () => {
-      const desc = toPropertyDescriptor({});
-      desc.configurable = undefined;
-      assertStrictEquals(desc.configurable, false);
-    });
-
-    it("[[Delete]] works", () => {
-      const desc = toPropertyDescriptor({ configurable: false });
-      delete desc.configurable;
-      assert(!("configurable" in desc));
-    });
-  });
-
-  describe("~enumerable", () => {
-    it("[[DefineOwnProperty]] coerces to a boolean", () => {
-      const desc = toPropertyDescriptor({});
-      Object.defineProperty(desc, "enumerable", {});
-      assertStrictEquals(desc.enumerable, false);
-    });
-
-    it("[[DefineOwnProperty]] throws for accessor properties", () => {
-      const desc = toPropertyDescriptor({});
-      assertThrows(() =>
-        Object.defineProperty(desc, "enumerable", { get: undefined })
-      );
-    });
-
-    it("[[Set]] coerces to a boolean", () => {
-      const desc = toPropertyDescriptor({});
-      desc.enumerable = undefined;
-      assertStrictEquals(desc.enumerable, false);
-    });
-
-    it("[[Delete]] works", () => {
-      const desc = toPropertyDescriptor({ enumerable: false });
-      delete desc.enumerable;
-      assert(!("enumerable" in desc));
-    });
-  });
-
-  describe("~get", () => {
-    it("[[DefineOwnProperty]] works", () => {
-      const desc = toPropertyDescriptor({});
-      Object.defineProperty(desc, "get", {});
-      assertStrictEquals(desc.get, undefined);
-    });
-
-    it("[[DefineOwnProperty]] throws for accessor properties", () => {
-      const desc = toPropertyDescriptor({});
-      assertThrows(() =>
-        Object.defineProperty(desc, "get", { get: undefined })
-      );
-    });
-
-    it("[[DefineOwnProperty]] throws if not callable or undefined", () => {
-      const desc = toPropertyDescriptor({});
-      assertThrows(
-        () => Object.defineProperty(desc, "get", { value: null }),
-      );
-    });
-
-    it("[[DefineOwnProperty]] throws if a data property is defined", () => {
-      const desc = toPropertyDescriptor({ value: undefined });
-      assertThrows(() => Object.defineProperty(desc, "get", {}));
-    });
-
-    it("[[Set]] works", () => {
-      const desc = toPropertyDescriptor({});
-      const fn = () => {};
-      desc.get = fn;
-      assertStrictEquals(desc.get, fn);
-    });
-
-    it("[[Set]] throws if not callable or undefined", () => {
-      const desc = toPropertyDescriptor({});
-      assertThrows(() => desc.get = null);
-    });
-
-    it("[[Set]] throws if a data property is defined", () => {
-      const desc = toPropertyDescriptor({ value: undefined });
-      assertThrows(() => desc.get = undefined);
-    });
-
-    it("[[Delete]] works", () => {
-      const desc = toPropertyDescriptor({ get: undefined });
-      delete desc.get;
-      assert(!("get" in desc));
-    });
-  });
-
-  describe("~set", () => {
-    it("[[DefineOwnProperty]] works", () => {
-      const desc = toPropertyDescriptor({});
-      Object.defineProperty(desc, "set", {});
-      assertStrictEquals(desc.set, undefined);
-    });
-
-    it("[[DefineOwnProperty]] throws for accessor properties", () => {
-      const desc = toPropertyDescriptor({});
-      assertThrows(() =>
-        Object.defineProperty(desc, "set", { get: undefined })
-      );
-    });
-
-    it("[[DefineOwnProperty]] throws if not callable or undefined", () => {
-      const desc = toPropertyDescriptor({});
-      assertThrows(
-        () => Object.defineProperty(desc, "set", { value: null }),
-      );
-    });
-
-    it("[[DefineOwnProperty]] throws if a data property is defined", () => {
-      const desc = toPropertyDescriptor({ value: undefined });
-      assertThrows(() => Object.defineProperty(desc, "set", {}));
-    });
-
-    it("[[Set]] works", () => {
-      const desc = toPropertyDescriptor({});
-      const fn = (_) => {};
-      desc.set = fn;
-      assertStrictEquals(desc.set, fn);
-    });
-
-    it("[[Set]] throws if not callable or undefined", () => {
-      const desc = toPropertyDescriptor({});
-      assertThrows(() => desc.set = null);
-    });
-
-    it("[[Set]] throws if a data property is defined", () => {
-      const desc = toPropertyDescriptor({ value: undefined });
-      assertThrows(() => desc.set = undefined);
-    });
-
-    it("[[Delete]] works", () => {
-      const desc = toPropertyDescriptor({ set: undefined });
-      delete desc.set;
-      assert(!("set" in desc));
-    });
-  });
-
-  describe("~value", () => {
-    it("[[DefineOwnProperty]] works", () => {
-      const desc = toPropertyDescriptor({});
-      Object.defineProperty(desc, "value", {});
-      assertStrictEquals(desc.value, undefined);
-    });
-
-    it("[[DefineOwnProperty]] throws for accessor properties", () => {
-      const desc = toPropertyDescriptor({});
-      assertThrows(() =>
-        Object.defineProperty(desc, "value", { get: undefined })
-      );
-    });
-
-    it("[[DefineOwnProperty]] throws if an accessor property is defined", () => {
-      const desc = toPropertyDescriptor({ get: undefined });
-      assertThrows(() => Object.defineProperty(desc, "value", {}));
-    });
-
-    it("[[Set]] works", () => {
-      const desc = toPropertyDescriptor({});
-      desc.value = "success";
-      assertStrictEquals(desc.value, "success");
-    });
-
-    it("[[Set]] throws if an accessor property is defined", () => {
-      const desc = toPropertyDescriptor({ get: undefined });
-      assertThrows(() => desc.value = null);
-    });
-
-    it("[[Delete]] works", () => {
-      const desc = toPropertyDescriptor({ value: undefined });
-      delete desc.value;
-      assert(!("value" in desc));
-    });
-  });
-
-  describe("~writable", () => {
-    it("[[DefineOwnProperty]] coerces to a boolean", () => {
-      const desc = toPropertyDescriptor({});
-      Object.defineProperty(desc, "writable", {});
-      assertStrictEquals(desc.writable, false);
-    });
-
-    it("[[DefineOwnProperty]] throws for accessor properties", () => {
-      const desc = toPropertyDescriptor({});
-      assertThrows(() =>
-        Object.defineProperty(desc, "writable", { get: undefined })
-      );
-    });
-
-    it("[[DefineOwnProperty]] throws if an accessor property is defined", () => {
-      const desc = toPropertyDescriptor({ get: undefined });
-      assertThrows(() => Object.defineProperty(desc, "writable", {}));
-    });
-
-    it("[[Set]] coerces to a boolean", () => {
-      const desc = toPropertyDescriptor({});
-      desc.writable = undefined;
-      assertStrictEquals(desc.writable, false);
-    });
-
-    it("[[Set]] throws if an accessor property is defined", () => {
-      const desc = toPropertyDescriptor({ get: undefined });
-      assertThrows(() => desc.writable = false);
-    });
-
-    it("[[Delete]] works", () => {
-      const desc = toPropertyDescriptor({ writable: false });
-      delete desc.writable;
-      assert(!("writable" in desc));
+      assertStrictEquals(toPropertyKey.name, "toPropertyKey");
     });
   });
 });
@@ -1344,20 +1074,20 @@ describe("type", () => {
   });
 });
 
-describe("Ξ•", () => {
-  it("[[Get]] is Ξ΅", () => {
-    assertStrictEquals(Ξ•, Number.EPSILON);
+describe("𝑒", () => {
+  it("[[Get]] is π‘’", () => {
+    assertStrictEquals(𝑒, Math.E);
   });
 });
 
-describe("Ξ ", () => {
-  it("[[Get]] is Ο€", () => {
-    assertStrictEquals(Ξ , Math.PI);
+describe("πœ€", () => {
+  it("[[Get]] is πœ€", () => {
+    assertStrictEquals(πœ€, Number.EPSILON);
   });
 });
 
-describe("ℇ", () => {
-  it("[[Get]] is β„‡", () => {
-    assertStrictEquals(ℇ, Math.E);
+describe("πœ‹", () => {
+  it("[[Get]] is πœ‹", () => {
+    assertStrictEquals(πœ‹, Math.PI);
   });
 });
This page took 0.292911 seconds and 4 git commands to generate.