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..44ccd65f 100644 --- a/test/table-test.js +++ b/test/table-test.js @@ -825,7 +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: "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)}, @@ -846,7 +847,15 @@ 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: 10}] + ); }); it("filters booleans", () => { @@ -890,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)},