X-Git-Url: https://git.ladys.computer/Pisces/blobdiff_plain/5b8f999fb29590d65fb09cf89c46ad986ef7c377..6e6d4e3261c1c943fe44fa9e381bcf8bf1441fd6:/numeric.test.js?ds=inline diff --git a/numeric.test.js b/numeric.test.js index dfb8063..27776cd 100644 --- a/numeric.test.js +++ b/numeric.test.js @@ -23,9 +23,11 @@ import { POSITIVE_ZERO, sgn, toBigInt, + toExponentialNotation, + toFixedDecimalNotation, toFloat32, - toIntegerOrInfinity, toIntegralNumber, + toIntegralNumberOrInfinity, toIntN, toNumber, toNumeric, @@ -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( @@ -172,55 +221,58 @@ describe("toIntN", () => { }); }); -describe("toIntegerOrInfinity", () => { +describe("toIntegralNumber", () => { it("[[Call]] converts nan to zero", () => { - assertStrictEquals(toIntegerOrInfinity(NaN), 0); + assertStrictEquals(toIntegralNumber(NaN), 0); }); it("[[Call]] converts negative zero to positive zero", () => { - assertStrictEquals(toIntegerOrInfinity(-0), 0); + assertStrictEquals(toIntegralNumber(-0), 0); }); it("[[Call]] drops the fractional part of negative numbers", () => { - assertStrictEquals(toIntegerOrInfinity(-1.79), -1); + assertStrictEquals(toIntegralNumber(-1.79), -1); }); - it("[[Call]] returns infinity for infinity", () => { - assertStrictEquals(toIntegerOrInfinity(Infinity), Infinity); + it("[[Call]] returns zero for infinity", () => { + assertStrictEquals(toIntegralNumber(Infinity), 0); }); - it("[[Call]] returns negative infinity for negative infinity", () => { - assertStrictEquals(toIntegerOrInfinity(-Infinity), -Infinity); + it("[[Call]] returns zero for negative infinity", () => { + assertStrictEquals(toIntegralNumber(-Infinity), 0); }); it("[[Call]] works with big·ints", () => { - assertStrictEquals(toIntegerOrInfinity(2n), 2); + assertStrictEquals(toIntegralNumber(2n), 2); }); }); -describe("toIntegralNumber", () => { +describe("toIntegralNumberOrInfinity", () => { it("[[Call]] converts nan to zero", () => { - assertStrictEquals(toIntegralNumber(NaN), 0); + assertStrictEquals(toIntegralNumberOrInfinity(NaN), 0); }); it("[[Call]] converts negative zero to positive zero", () => { - assertStrictEquals(toIntegralNumber(-0), 0); + assertStrictEquals(toIntegralNumberOrInfinity(-0), 0); }); it("[[Call]] drops the fractional part of negative numbers", () => { - assertStrictEquals(toIntegralNumber(-1.79), -1); + assertStrictEquals(toIntegralNumberOrInfinity(-1.79), -1); }); - it("[[Call]] returns zero for infinity", () => { - assertStrictEquals(toIntegralNumber(Infinity), 0); + it("[[Call]] returns infinity for infinity", () => { + assertStrictEquals(toIntegralNumberOrInfinity(Infinity), Infinity); }); - it("[[Call]] returns zero for negative infinity", () => { - assertStrictEquals(toIntegralNumber(-Infinity), 0); + it("[[Call]] returns negative infinity for negative infinity", () => { + assertStrictEquals( + toIntegralNumberOrInfinity(-Infinity), + -Infinity, + ); }); it("[[Call]] works with big·ints", () => { - assertStrictEquals(toIntegralNumber(2n), 2); + assertStrictEquals(toIntegralNumberOrInfinity(2n), 2); }); });