@dpkit/table
Version:
Data Package implementation in TypeScript.
30 lines • 3.9 kB
JavaScript
import { DataFrame } from "nodejs-polars";
import { describe, expect, it } from "vitest";
import { processTable } from "../../table/index.js";
describe("parseYearField", () => {
it.each([
// Tests ported from frictionless-py (string values only)
["2000", 2000],
["-2000", null],
["20000", null],
["3.14", null],
["", null],
// Additional tests for completeness
["0000", 0],
["9999", 9999],
//[" 2023 ", 2023],
//[" 1984 ", 1984],
["bad", null],
["12345", null],
["123", null],
])("%s -> %s", async (cell, value) => {
const table = DataFrame({ name: [cell] }).lazy();
const schema = {
fields: [{ name: "name", type: "year" }],
};
const ldf = await processTable(table, { schema });
const df = await ldf.collect();
expect(df.getColumn("name").get(0)).toEqual(value);
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWVhci5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZmllbGQvdHlwZXMveWVhci5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDekMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUVuRCxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFO0lBQzlCLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFDTix5REFBeUQ7UUFDekQsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO1FBQ2QsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDO1FBQ2YsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDO1FBQ2YsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO1FBQ2QsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDO1FBRVYsb0NBQW9DO1FBQ3BDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNYLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQztRQUNkLG1CQUFtQjtRQUNuQixxQkFBcUI7UUFDckIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDO1FBQ2IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDO1FBQ2YsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDO0tBQ2QsQ0FBQyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQ25DLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUNoRCxNQUFNLE1BQU0sR0FBRztZQUNiLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBZSxFQUFFLENBQUM7U0FDbEQsQ0FBQTtRQUVELE1BQU0sR0FBRyxHQUFHLE1BQU0sWUFBWSxDQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFDakQsTUFBTSxFQUFFLEdBQUcsTUFBTSxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUE7UUFFOUIsTUFBTSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3BELENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhRnJhbWUgfSBmcm9tIFwibm9kZWpzLXBvbGFyc1wiXG5pbXBvcnQgeyBkZXNjcmliZSwgZXhwZWN0LCBpdCB9IGZyb20gXCJ2aXRlc3RcIlxuaW1wb3J0IHsgcHJvY2Vzc1RhYmxlIH0gZnJvbSBcIi4uLy4uL3RhYmxlL2luZGV4LnRzXCJcblxuZGVzY3JpYmUoXCJwYXJzZVllYXJGaWVsZFwiLCAoKSA9PiB7XG4gIGl0LmVhY2goW1xuICAgIC8vIFRlc3RzIHBvcnRlZCBmcm9tIGZyaWN0aW9ubGVzcy1weSAoc3RyaW5nIHZhbHVlcyBvbmx5KVxuICAgIFtcIjIwMDBcIiwgMjAwMF0sXG4gICAgW1wiLTIwMDBcIiwgbnVsbF0sXG4gICAgW1wiMjAwMDBcIiwgbnVsbF0sXG4gICAgW1wiMy4xNFwiLCBudWxsXSxcbiAgICBbXCJcIiwgbnVsbF0sXG5cbiAgICAvLyBBZGRpdGlvbmFsIHRlc3RzIGZvciBjb21wbGV0ZW5lc3NcbiAgICBbXCIwMDAwXCIsIDBdLFxuICAgIFtcIjk5OTlcIiwgOTk5OV0sXG4gICAgLy9bXCIgMjAyMyBcIiwgMjAyM10sXG4gICAgLy9bXCIgIDE5ODQgIFwiLCAxOTg0XSxcbiAgICBbXCJiYWRcIiwgbnVsbF0sXG4gICAgW1wiMTIzNDVcIiwgbnVsbF0sXG4gICAgW1wiMTIzXCIsIG51bGxdLFxuICBdKShcIiVzIC0+ICVzXCIsIGFzeW5jIChjZWxsLCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IHRhYmxlID0gRGF0YUZyYW1lKHsgbmFtZTogW2NlbGxdIH0pLmxhenkoKVxuICAgIGNvbnN0IHNjaGVtYSA9IHtcbiAgICAgIGZpZWxkczogW3sgbmFtZTogXCJuYW1lXCIsIHR5cGU6IFwieWVhclwiIGFzIGNvbnN0IH1dLFxuICAgIH1cblxuICAgIGNvbnN0IGxkZiA9IGF3YWl0IHByb2Nlc3NUYWJsZSh0YWJsZSwgeyBzY2hlbWEgfSlcbiAgICBjb25zdCBkZiA9IGF3YWl0IGxkZi5jb2xsZWN0KClcblxuICAgIGV4cGVjdChkZi5nZXRDb2x1bW4oXCJuYW1lXCIpLmdldCgwKSkudG9FcXVhbCh2YWx1ZSlcbiAgfSlcbn0pXG4iXX0=