]> Lady’s Gitweb - Pisces/blobdiff - numeric.test.js
Add toIntegralNumber to numeric.js
[Pisces] / numeric.test.js
index ea99bc97910346aa1ff67e96b57e8d66cadee5a7..dfb806301bbf7a3587cce3bc98b308664787b055 100644 (file)
@@ -19,16 +19,31 @@ import {
   clz32,
   max,
   min,
   clz32,
   max,
   min,
+  NEGATIVE_ZERO,
+  POSITIVE_ZERO,
   sgn,
   toBigInt,
   toFloat32,
   toIntegerOrInfinity,
   sgn,
   toBigInt,
   toFloat32,
   toIntegerOrInfinity,
+  toIntegralNumber,
   toIntN,
   toNumber,
   toNumeric,
   toUintN,
 } from "./numeric.js";
 
   toIntN,
   toNumber,
   toNumeric,
   toUintN,
 } from "./numeric.js";
 
+describe("NEGATIVE_ZERO", () => {
+  it("[[Get]] is negative zero", () => {
+    assertStrictEquals(NEGATIVE_ZERO, -0);
+  });
+});
+
+describe("POSITIVE_ZERO", () => {
+  it("[[Get]] is positive zero", () => {
+    assertStrictEquals(POSITIVE_ZERO, 0);
+  });
+});
+
 describe("abs", () => {
   it("[[Call]] returns the absolute value", () => {
     assertStrictEquals(abs(-1), 1);
 describe("abs", () => {
   it("[[Call]] returns the absolute value", () => {
     assertStrictEquals(abs(-1), 1);
@@ -150,6 +165,11 @@ describe("toIntN", () => {
   it("[[Call]] works with numbers", () => {
     assertStrictEquals(toIntN(2, 7), -1);
   });
   it("[[Call]] works with numbers", () => {
     assertStrictEquals(toIntN(2, 7), -1);
   });
+
+  it("[[Call]] works with non‐integers", () => {
+    assertStrictEquals(toIntN(2, 7.21), -1);
+    assertStrictEquals(toIntN(2, Infinity), 0);
+  });
 });
 
 describe("toIntegerOrInfinity", () => {
 });
 
 describe("toIntegerOrInfinity", () => {
@@ -170,7 +190,37 @@ describe("toIntegerOrInfinity", () => {
   });
 
   it("[[Call]] returns negative infinity for negative infinity", () => {
   });
 
   it("[[Call]] returns negative infinity for negative infinity", () => {
-    assertStrictEquals(toIntegerOrInfinity(Infinity), Infinity);
+    assertStrictEquals(toIntegerOrInfinity(-Infinity), -Infinity);
+  });
+
+  it("[[Call]] works with big·ints", () => {
+    assertStrictEquals(toIntegerOrInfinity(2n), 2);
+  });
+});
+
+describe("toIntegralNumber", () => {
+  it("[[Call]] converts nan to zero", () => {
+    assertStrictEquals(toIntegralNumber(NaN), 0);
+  });
+
+  it("[[Call]] converts negative zero to positive zero", () => {
+    assertStrictEquals(toIntegralNumber(-0), 0);
+  });
+
+  it("[[Call]] drops the fractional part of negative numbers", () => {
+    assertStrictEquals(toIntegralNumber(-1.79), -1);
+  });
+
+  it("[[Call]] returns zero for infinity", () => {
+    assertStrictEquals(toIntegralNumber(Infinity), 0);
+  });
+
+  it("[[Call]] returns zero for negative infinity", () => {
+    assertStrictEquals(toIntegralNumber(-Infinity), 0);
+  });
+
+  it("[[Call]] works with big·ints", () => {
+    assertStrictEquals(toIntegralNumber(2n), 2);
   });
 });
 
   });
 });
 
@@ -212,4 +262,9 @@ describe("toUintN", () => {
   it("[[Call]] works with numbers", () => {
     assertStrictEquals(toUintN(2, 7), 3);
   });
   it("[[Call]] works with numbers", () => {
     assertStrictEquals(toUintN(2, 7), 3);
   });
+
+  it("[[Call]] works with non‐integers", () => {
+    assertStrictEquals(toUintN(2, 7.21), 3);
+    assertStrictEquals(toUintN(2, Infinity), 0);
+  });
 });
 });
This page took 0.022683 seconds and 4 git commands to generate.