X-Git-Url: https://git.ladys.computer/Pisces/blobdiff_plain/d78461254503ec9dab25d0a7518538e9149618e2..83f6aae0d1b8181dc2b0c6ccdba9f2fe2fdba3e6:/numeric.test.js diff --git a/numeric.test.js b/numeric.test.js index 23dbd89..4d3d2cb 100644 --- a/numeric.test.js +++ b/numeric.test.js @@ -1,7 +1,7 @@ // ♓🌟 Piscēs ∷ numeric.test.js // ==================================================================== // -// Copyright © 2022 Lady [@ Lady’s Computer]. +// 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 @@ -23,13 +23,15 @@ import { POSITIVE_ZERO, sgn, toBigInt, + toExponentialNotation, + toFixedDecimalNotation, toFloat32, toIntegralNumber, toIntegralNumberOrInfinity, - toIntN, toNumber, toNumeric, - toUintN, + toSignedIntegralNumeric, + toUnsignedIntegralNumeric, } from "./numeric.js"; describe("NEGATIVE_ZERO", () => { @@ -141,6 +143,53 @@ describe("toBigInt", () => { }); }); +describe("toExponentialNotation", () => { + it("[[Call]] converts to exponential notation", () => { + assertStrictEquals(toExponentialNotation(231), "2.31e+2"); + }); + + it("[[Call]] works with big·ints", () => { + assertStrictEquals( + toExponentialNotation(9007199254740993n), + "9.007199254740993e+15", + ); + }); + + it("[[Call]] respects the specified number of fractional digits", () => { + assertStrictEquals( + toExponentialNotation(.00000000642, 3), + "6.420e-9", + ); + assertStrictEquals(toExponentialNotation(.00691, 1), "6.9e-3"); + assertStrictEquals(toExponentialNotation(.00685, 1), "6.9e-3"); + assertStrictEquals(toExponentialNotation(.004199, 2), "4.20e-3"); + assertStrictEquals( + toExponentialNotation(6420000000n, 3), + "6.420e+9", + ); + assertStrictEquals(toExponentialNotation(6910n, 1), "6.9e+3"); + assertStrictEquals(toExponentialNotation(6850n, 1), "6.9e+3"); + assertStrictEquals(toExponentialNotation(4199n, 2), "4.20e+3"); + }); +}); + +describe("toFixedDecimalNotation", () => { + it("[[Call]] converts to fixed decimal notation", () => { + assertStrictEquals(toFixedDecimalNotation(69.4199, 3), "69.420"); + }); + + it("[[Call]] works with big·ints", () => { + assertStrictEquals( + toFixedDecimalNotation(9007199254740993n), + "9007199254740993", + ); + assertStrictEquals( + toFixedDecimalNotation(9007199254740993n, 2), + "9007199254740993.00", + ); + }); +}); + describe("toFloat32", () => { it("[[Call]] returns the 32‐bit floating‐point representation", () => { assertStrictEquals( @@ -157,18 +206,18 @@ describe("toFloat32", () => { }); }); -describe("toIntN", () => { +describe("toSignedIntegralNumeric", () => { it("[[Call]] converts to an int·n", () => { - assertStrictEquals(toIntN(2, 7n), -1n); + assertStrictEquals(toSignedIntegralNumeric(2, 7n), -1n); }); it("[[Call]] works with numbers", () => { - assertStrictEquals(toIntN(2, 7), -1); + assertStrictEquals(toSignedIntegralNumeric(2, 7), -1); }); it("[[Call]] works with non‐integers", () => { - assertStrictEquals(toIntN(2, 7.21), -1); - assertStrictEquals(toIntN(2, Infinity), 0); + assertStrictEquals(toSignedIntegralNumeric(2, 7.21), -1); + assertStrictEquals(toSignedIntegralNumeric(2, Infinity), 0); }); }); @@ -257,17 +306,17 @@ describe("toNumeric", () => { }); }); -describe("toUintN", () => { +describe("toUnsignedIntegralNumeric", () => { it("[[Call]] converts to an int·n", () => { - assertStrictEquals(toUintN(2, 7n), 3n); + assertStrictEquals(toUnsignedIntegralNumeric(2, 7n), 3n); }); it("[[Call]] works with numbers", () => { - assertStrictEquals(toUintN(2, 7), 3); + assertStrictEquals(toUnsignedIntegralNumeric(2, 7), 3); }); it("[[Call]] works with non‐integers", () => { - assertStrictEquals(toUintN(2, 7.21), 3); - assertStrictEquals(toUintN(2, Infinity), 0); + assertStrictEquals(toUnsignedIntegralNumeric(2, 7.21), 3); + assertStrictEquals(toUnsignedIntegralNumeric(2, Infinity), 0); }); });