@dpkit/table
Version:
Data Package implementation in TypeScript.
33 lines • 5.49 kB
JavaScript
import { DataFrame } from "nodejs-polars";
import { describe, expect, it } from "vitest";
import { processTable } from "../table/index.js";
describe("parseField", () => {
describe("missing values", () => {
it.each([
// Schema-level
["", null, {}],
["", "", { schemaLevel: [] }],
["-", null, { schemaLevel: ["-"] }],
["x", null, { schemaLevel: ["x"] }],
// Field-level
["", null, {}],
["-", null, { fieldLevel: ["-"] }],
["-", "-", { fieldLevel: [""] }],
["n/a", null, { fieldLevel: ["n/a"] }],
// Schema-level and field-level
["-", null, { schemaLevel: ["x"], fieldLevel: ["-"] }],
["-", "-", { schemaLevel: ["-"], fieldLevel: ["x"] }],
// @ts-ignore
])("$0 -> $1 $2", async (cell, value, { fieldLevel, schemaLevel }) => {
const table = DataFrame({ name: [cell] }).lazy();
const schema = {
missingValues: schemaLevel,
fields: [{ name: "name", type: "string", missingValues: fieldLevel }],
};
const ldf = await processTable(table, { schema });
const df = await ldf.collect();
expect(df.getColumn("name").get(0)).toEqual(value);
});
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2Uuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2ZpZWxkL3BhcnNlLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRWhELFFBQVEsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFO0lBQzFCLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7UUFDOUIsRUFBRSxDQUFDLElBQUksQ0FBQztZQUNOLGVBQWU7WUFDZixDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ2QsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQzdCLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbkMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUVuQyxjQUFjO1lBQ2QsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNkLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbEMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNoQyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBRXRDLCtCQUErQjtZQUMvQixDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RELENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckQsYUFBYTtTQUNkLENBQUMsQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRTtZQUNuRSxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7WUFDaEQsTUFBTSxNQUFNLEdBQVc7Z0JBQ3JCLGFBQWEsRUFBRSxXQUFXO2dCQUMxQixNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLENBQUM7YUFDdEUsQ0FBQTtZQUVELE1BQU0sR0FBRyxHQUFHLE1BQU0sWUFBWSxDQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUE7WUFDakQsTUFBTSxFQUFFLEdBQUcsTUFBTSxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUE7WUFFOUIsTUFBTSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3BELENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU2NoZW1hIH0gZnJvbSBcIkBkcGtpdC9jb3JlXCJcbmltcG9ydCB7IERhdGFGcmFtZSB9IGZyb20gXCJub2RlanMtcG9sYXJzXCJcbmltcG9ydCB7IGRlc2NyaWJlLCBleHBlY3QsIGl0IH0gZnJvbSBcInZpdGVzdFwiXG5pbXBvcnQgeyBwcm9jZXNzVGFibGUgfSBmcm9tIFwiLi4vdGFibGUvaW5kZXgudHNcIlxuXG5kZXNjcmliZShcInBhcnNlRmllbGRcIiwgKCkgPT4ge1xuICBkZXNjcmliZShcIm1pc3NpbmcgdmFsdWVzXCIsICgpID0+IHtcbiAgICBpdC5lYWNoKFtcbiAgICAgIC8vIFNjaGVtYS1sZXZlbFxuICAgICAgW1wiXCIsIG51bGwsIHt9XSxcbiAgICAgIFtcIlwiLCBcIlwiLCB7IHNjaGVtYUxldmVsOiBbXSB9XSxcbiAgICAgIFtcIi1cIiwgbnVsbCwgeyBzY2hlbWFMZXZlbDogW1wiLVwiXSB9XSxcbiAgICAgIFtcInhcIiwgbnVsbCwgeyBzY2hlbWFMZXZlbDogW1wieFwiXSB9XSxcblxuICAgICAgLy8gRmllbGQtbGV2ZWxcbiAgICAgIFtcIlwiLCBudWxsLCB7fV0sXG4gICAgICBbXCItXCIsIG51bGwsIHsgZmllbGRMZXZlbDogW1wiLVwiXSB9XSxcbiAgICAgIFtcIi1cIiwgXCItXCIsIHsgZmllbGRMZXZlbDogW1wiXCJdIH1dLFxuICAgICAgW1wibi9hXCIsIG51bGwsIHsgZmllbGRMZXZlbDogW1wibi9hXCJdIH1dLFxuXG4gICAgICAvLyBTY2hlbWEtbGV2ZWwgYW5kIGZpZWxkLWxldmVsXG4gICAgICBbXCItXCIsIG51bGwsIHsgc2NoZW1hTGV2ZWw6IFtcInhcIl0sIGZpZWxkTGV2ZWw6IFtcIi1cIl0gfV0sXG4gICAgICBbXCItXCIsIFwiLVwiLCB7IHNjaGVtYUxldmVsOiBbXCItXCJdLCBmaWVsZExldmVsOiBbXCJ4XCJdIH1dLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgIF0pKFwiJDAgLT4gJDEgJDJcIiwgYXN5bmMgKGNlbGwsIHZhbHVlLCB7IGZpZWxkTGV2ZWwsIHNjaGVtYUxldmVsIH0pID0+IHtcbiAgICAgIGNvbnN0IHRhYmxlID0gRGF0YUZyYW1lKHsgbmFtZTogW2NlbGxdIH0pLmxhenkoKVxuICAgICAgY29uc3Qgc2NoZW1hOiBTY2hlbWEgPSB7XG4gICAgICAgIG1pc3NpbmdWYWx1ZXM6IHNjaGVtYUxldmVsLFxuICAgICAgICBmaWVsZHM6IFt7IG5hbWU6IFwibmFtZVwiLCB0eXBlOiBcInN0cmluZ1wiLCBtaXNzaW5nVmFsdWVzOiBmaWVsZExldmVsIH1dLFxuICAgICAgfVxuXG4gICAgICBjb25zdCBsZGYgPSBhd2FpdCBwcm9jZXNzVGFibGUodGFibGUsIHsgc2NoZW1hIH0pXG4gICAgICBjb25zdCBkZiA9IGF3YWl0IGxkZi5jb2xsZWN0KClcblxuICAgICAgZXhwZWN0KGRmLmdldENvbHVtbihcIm5hbWVcIikuZ2V0KDApKS50b0VxdWFsKHZhbHVlKVxuICAgIH0pXG4gIH0pXG59KVxuIl19