@dpkit/table
Version:
Data Package implementation in TypeScript.
29 lines • 5 kB
JavaScript
import { DataFrame } from "nodejs-polars";
import { describe, expect, it } from "vitest";
import { processTable } from "../../table/index.js";
describe("parseDateField", () => {
it.each([
// Default format
["2019-01-01", new Date(Date.UTC(2019, 0, 1)), {}],
["10th Jan 1969", null, {}],
["invalid", null, {}],
["", null, {}],
// Custom format
["21/11/2006", new Date(Date.UTC(2006, 10, 21)), { format: "%d/%m/%Y" }],
["21/11/06 16:30", null, { format: "%d/%m/%y" }],
["invalid", null, { format: "%d/%m/%y" }],
["", null, { format: "%d/%m/%y" }],
["2006/11/21", new Date(Date.UTC(2006, 10, 21)), { format: "%Y/%m/%d" }],
// Invalid format
["21/11/06", null, { format: "invalid" }],
])("%s -> %s %o", async (cell, expected, options) => {
const table = DataFrame({ name: [cell] }).lazy();
const schema = {
fields: [{ name: "name", type: "date", ...options }],
};
const ldf = await processTable(table, { schema });
const df = await ldf.collect();
expect(df.toRecords()[0]?.name).toEqual(expected);
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZmllbGQvdHlwZXMvZGF0ZS5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDekMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUVuRCxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFO0lBQzlCLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFDTixpQkFBaUI7UUFDakIsQ0FBQyxZQUFZLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2xELENBQUMsZUFBZSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7UUFDM0IsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUNyQixDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBRWQsZ0JBQWdCO1FBQ2hCLENBQUMsWUFBWSxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQ3hFLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQ2hELENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsQ0FBQztRQUN6QyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUM7UUFDbEMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUM7UUFFeEUsaUJBQWlCO1FBQ2pCLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQztLQUMxQyxDQUFDLENBQUMsYUFBYSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ2xELE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUNoRCxNQUFNLE1BQU0sR0FBRztZQUNiLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBZSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7U0FDOUQsQ0FBQTtRQUVELE1BQU0sR0FBRyxHQUFHLE1BQU0sWUFBWSxDQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFDakQsTUFBTSxFQUFFLEdBQUcsTUFBTSxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUE7UUFFOUIsTUFBTSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDbkQsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFGcmFtZSB9IGZyb20gXCJub2RlanMtcG9sYXJzXCJcbmltcG9ydCB7IGRlc2NyaWJlLCBleHBlY3QsIGl0IH0gZnJvbSBcInZpdGVzdFwiXG5pbXBvcnQgeyBwcm9jZXNzVGFibGUgfSBmcm9tIFwiLi4vLi4vdGFibGUvaW5kZXgudHNcIlxuXG5kZXNjcmliZShcInBhcnNlRGF0ZUZpZWxkXCIsICgpID0+IHtcbiAgaXQuZWFjaChbXG4gICAgLy8gRGVmYXVsdCBmb3JtYXRcbiAgICBbXCIyMDE5LTAxLTAxXCIsIG5ldyBEYXRlKERhdGUuVVRDKDIwMTksIDAsIDEpKSwge31dLFxuICAgIFtcIjEwdGggSmFuIDE5NjlcIiwgbnVsbCwge31dLFxuICAgIFtcImludmFsaWRcIiwgbnVsbCwge31dLFxuICAgIFtcIlwiLCBudWxsLCB7fV0sXG5cbiAgICAvLyBDdXN0b20gZm9ybWF0XG4gICAgW1wiMjEvMTEvMjAwNlwiLCBuZXcgRGF0ZShEYXRlLlVUQygyMDA2LCAxMCwgMjEpKSwgeyBmb3JtYXQ6IFwiJWQvJW0vJVlcIiB9XSxcbiAgICBbXCIyMS8xMS8wNiAxNjozMFwiLCBudWxsLCB7IGZvcm1hdDogXCIlZC8lbS8leVwiIH1dLFxuICAgIFtcImludmFsaWRcIiwgbnVsbCwgeyBmb3JtYXQ6IFwiJWQvJW0vJXlcIiB9XSxcbiAgICBbXCJcIiwgbnVsbCwgeyBmb3JtYXQ6IFwiJWQvJW0vJXlcIiB9XSxcbiAgICBbXCIyMDA2LzExLzIxXCIsIG5ldyBEYXRlKERhdGUuVVRDKDIwMDYsIDEwLCAyMSkpLCB7IGZvcm1hdDogXCIlWS8lbS8lZFwiIH1dLFxuXG4gICAgLy8gSW52YWxpZCBmb3JtYXRcbiAgICBbXCIyMS8xMS8wNlwiLCBudWxsLCB7IGZvcm1hdDogXCJpbnZhbGlkXCIgfV0sXG4gIF0pKFwiJXMgLT4gJXMgJW9cIiwgYXN5bmMgKGNlbGwsIGV4cGVjdGVkLCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3QgdGFibGUgPSBEYXRhRnJhbWUoeyBuYW1lOiBbY2VsbF0gfSkubGF6eSgpXG4gICAgY29uc3Qgc2NoZW1hID0ge1xuICAgICAgZmllbGRzOiBbeyBuYW1lOiBcIm5hbWVcIiwgdHlwZTogXCJkYXRlXCIgYXMgY29uc3QsIC4uLm9wdGlvbnMgfV0sXG4gICAgfVxuXG4gICAgY29uc3QgbGRmID0gYXdhaXQgcHJvY2Vzc1RhYmxlKHRhYmxlLCB7IHNjaGVtYSB9KVxuICAgIGNvbnN0IGRmID0gYXdhaXQgbGRmLmNvbGxlY3QoKVxuXG4gICAgZXhwZWN0KGRmLnRvUmVjb3JkcygpWzBdPy5uYW1lKS50b0VxdWFsKGV4cGVjdGVkKVxuICB9KVxufSlcbiJdfQ==