From 65d89c6775f2b1ca05bed4810aec025a884825be Mon Sep 17 00:00:00 2001 From: Josh Gross Date: Thu, 16 Mar 2023 12:30:15 -0400 Subject: [PATCH] Validate that 0 and -0 coerce to "0" --- expressions/src/data/number.test.ts | 13 +++++++++++++ expressions/src/data/number.ts | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 expressions/src/data/number.test.ts diff --git a/expressions/src/data/number.test.ts b/expressions/src/data/number.test.ts new file mode 100644 index 0000000..c0e5453 --- /dev/null +++ b/expressions/src/data/number.test.ts @@ -0,0 +1,13 @@ +import {NumberData} from "./number"; + +describe("number", () => { + it("coerces to string", () => { + expect(new NumberData(-0).coerceString()).toEqual("0"); + expect(new NumberData(0).coerceString()).toEqual("0"); + expect(new NumberData(1).coerceString()).toEqual("1"); + expect(new NumberData(1.2).coerceString()).toEqual("1.2"); + + // Round to 15 digits precision + expect(new NumberData(1.2345678901234567).coerceString()).toEqual("1.234567890123457"); + }); +}); diff --git a/expressions/src/data/number.ts b/expressions/src/data/number.ts index 9a3dec4..095a1c1 100644 --- a/expressions/src/data/number.ts +++ b/expressions/src/data/number.ts @@ -8,7 +8,7 @@ export class NumberData implements ExpressionDataInterface { public primitive = true; coerceString(): string { - if (Object.is(this.value, -0)) { + if (this.value === 0) { return "0"; }