From a9d2e19a8349e4805af76a9b6297c0e74301883f Mon Sep 17 00:00:00 2001 From: mkfreeman Date: Fri, 3 Feb 2023 11:37:11 -0500 Subject: [PATCH 1/2] Add isValidInteger checks --- src/table.js | 3 +++ test/table-test.js | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/src/table.js b/src/table.js index 62911b32..40b68700 100644 --- a/src/table.js +++ b/src/table.js @@ -517,6 +517,7 @@ function descendingDefined(a, b) { // Functions for checking type validity const isValidNumber = (value) => typeof value === "number" && !Number.isNaN(value); +const isValidInteger = (value) => Number.isInteger(value) && !Number.isNaN(value); const isValidString = (value) => typeof value === "string"; const isValidBoolean = (value) => typeof value === "boolean"; const isValidBigint = (value) => typeof value === "bigint"; @@ -537,6 +538,8 @@ export function getTypeValidator(colType) { return isValidBoolean; case "number": return isValidNumber; + case "integer": + return isValidInteger; case "date": return isValidDate; case "buffer": diff --git a/test/table-test.js b/test/table-test.js index 2eb76e87..1ce75f34 100644 --- a/test/table-test.js +++ b/test/table-test.js @@ -826,6 +826,7 @@ describe("getTypeValidator filters accurately", () => { {label: "boolean", value: true}, {label: "array", value: [1, 2, 3]}, {label: "number", value: 10}, + {label: "integer", value: 10n}, {label: "date", value: new Date(1)}, // eslint-disable-next-line no-undef {label: "bigint", value: BigInt(10)}, @@ -849,6 +850,14 @@ describe("getTypeValidator filters accurately", () => { assert.deepStrictEqual(source.filter(d => isValid(d.value)), [{label: "number", value: 10}]); }); + it("filters integers", () => { + const isValid = getTypeValidator("integer"); + assert.deepStrictEqual( + source.filter((d) => isValid(d.value)), + [{label: "integer", value: 10n}] + ); + }); + it("filters booleans", () => { const isValid = getTypeValidator("boolean"); assert.deepStrictEqual(source.filter(d => isValid(d.value)), [{label: "boolean", value: true}]); From 581c5a134ddb98741687aa6ae79b363a9d5f2537 Mon Sep 17 00:00:00 2001 From: mkfreeman Date: Fri, 3 Feb 2023 11:45:12 -0500 Subject: [PATCH 2/2] Update tests --- test/table-test.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/test/table-test.js b/test/table-test.js index 1ce75f34..44ccd65f 100644 --- a/test/table-test.js +++ b/test/table-test.js @@ -825,8 +825,8 @@ describe("getTypeValidator filters accurately", () => { {label: "buffer", value: new ArrayBuffer()}, {label: "boolean", value: true}, {label: "array", value: [1, 2, 3]}, - {label: "number", value: 10}, - {label: "integer", value: 10n}, + {label: "number", value: 10.1}, + {label: "integer", value: 10}, {label: "date", value: new Date(1)}, // eslint-disable-next-line no-undef {label: "bigint", value: BigInt(10)}, @@ -847,14 +847,14 @@ describe("getTypeValidator filters accurately", () => { it("filters numbers", () => { const isValid = getTypeValidator("number"); - assert.deepStrictEqual(source.filter(d => isValid(d.value)), [{label: "number", value: 10}]); + assert.deepStrictEqual(source.filter(d => isValid(d.value)), [{label: "number", value: 10.1}, {label: "integer", value: 10}]); }); it("filters integers", () => { const isValid = getTypeValidator("integer"); assert.deepStrictEqual( source.filter((d) => isValid(d.value)), - [{label: "integer", value: 10n}] + [{label: "integer", value: 10}] ); }); @@ -899,7 +899,8 @@ describe("getTypeValidator filters accurately", () => { {label: "buffer", value: new ArrayBuffer()}, {label: "boolean", value: true}, {label: "array", value: [1, 2, 3]}, - {label: "number", value: 10}, + {label: "number", value: 10.1}, + {label: "integer", value: 10}, {label: "date", value: new Date(1)}, // eslint-disable-next-line no-undef {label: "bigint", value: BigInt(10)},