Skip to content

Commit 3bbf353

Browse files
authored
Add validity check for integers (#348)
* Add isValidInteger checks * Update tests
1 parent fa1b356 commit 3bbf353

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
lines changed

src/table.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -517,6 +517,7 @@ function descendingDefined(a, b) {
517517

518518
// Functions for checking type validity
519519
const isValidNumber = (value) => typeof value === "number" && !Number.isNaN(value);
520+
const isValidInteger = (value) => Number.isInteger(value) && !Number.isNaN(value);
520521
const isValidString = (value) => typeof value === "string";
521522
const isValidBoolean = (value) => typeof value === "boolean";
522523
const isValidBigint = (value) => typeof value === "bigint";
@@ -537,6 +538,8 @@ export function getTypeValidator(colType) {
537538
return isValidBoolean;
538539
case "number":
539540
return isValidNumber;
541+
case "integer":
542+
return isValidInteger;
540543
case "date":
541544
return isValidDate;
542545
case "buffer":

test/table-test.js

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -825,7 +825,8 @@ describe("getTypeValidator filters accurately", () => {
825825
{label: "buffer", value: new ArrayBuffer()},
826826
{label: "boolean", value: true},
827827
{label: "array", value: [1, 2, 3]},
828-
{label: "number", value: 10},
828+
{label: "number", value: 10.1},
829+
{label: "integer", value: 10},
829830
{label: "date", value: new Date(1)},
830831
// eslint-disable-next-line no-undef
831832
{label: "bigint", value: BigInt(10)},
@@ -846,7 +847,15 @@ describe("getTypeValidator filters accurately", () => {
846847

847848
it("filters numbers", () => {
848849
const isValid = getTypeValidator("number");
849-
assert.deepStrictEqual(source.filter(d => isValid(d.value)), [{label: "number", value: 10}]);
850+
assert.deepStrictEqual(source.filter(d => isValid(d.value)), [{label: "number", value: 10.1}, {label: "integer", value: 10}]);
851+
});
852+
853+
it("filters integers", () => {
854+
const isValid = getTypeValidator("integer");
855+
assert.deepStrictEqual(
856+
source.filter((d) => isValid(d.value)),
857+
[{label: "integer", value: 10}]
858+
);
850859
});
851860

852861
it("filters booleans", () => {
@@ -890,7 +899,8 @@ describe("getTypeValidator filters accurately", () => {
890899
{label: "buffer", value: new ArrayBuffer()},
891900
{label: "boolean", value: true},
892901
{label: "array", value: [1, 2, 3]},
893-
{label: "number", value: 10},
902+
{label: "number", value: 10.1},
903+
{label: "integer", value: 10},
894904
{label: "date", value: new Date(1)},
895905
// eslint-disable-next-line no-undef
896906
{label: "bigint", value: BigInt(10)},

0 commit comments

Comments
 (0)