@dpkit/table
Version:
Data Package implementation in TypeScript.
58 lines • 9.14 kB
JavaScript
import { DataFrame } from "nodejs-polars";
import { describe, expect, it } from "vitest";
import { processTable } from "../../table/index.js";
describe("parseIntegerField", () => {
it.each([
// Basic integer parsing
["1", 1, {}],
["2", 2, {}],
["1000", 1000, {}],
// Empty or invalid values
["", null, {}],
["2.1", null, {}],
["bad", null, {}],
["0.0003", null, {}],
["3.14", null, {}],
["1/2", null, {}],
// Group character handling
["1", 1, { groupChar: "," }],
["1,000", 1000, { groupChar: "," }],
["1,000,000", 1000000, { groupChar: "," }],
["1 000", 1000, { groupChar: " " }],
["1'000'000", 1000000, { groupChar: "'" }],
["1.000.000", 1000000, { groupChar: "." }],
// Bare number handling
["1", 1, { bareNumber: false }],
["1000", 1000, { bareNumber: false }],
["$1000", 1000, { bareNumber: false }],
["1000$", 1000, { bareNumber: false }],
["€1000", 1000, { bareNumber: false }],
["1000€", 1000, { bareNumber: false }],
["1,000", null, { bareNumber: false }],
["-12€", -12, { bareNumber: false }],
["€-12", -12, { bareNumber: false }],
// Leading zeros and whitespace
["000835", 835, {}],
["0", 0, {}],
["00", 0, {}],
["01", 1, {}],
//[" 01 ", 1, {}],
//[" 42 ", 42, {}],
// Combined cases
["$1,000,000", 1000000, { bareNumber: false, groupChar: "," }],
["1,000,000$", 1000000, { bareNumber: false, groupChar: "," }],
["€ 1.000.000", 1000000, { bareNumber: false, groupChar: "." }],
//[" -1,000 ", -1000, { groupChar: "," }],
["000,001", 1, { groupChar: "," }],
])("$0 -> $1 $2", async (cell, value, options) => {
const table = DataFrame({ name: [cell] }).lazy();
const schema = {
fields: [{ name: "name", type: "integer", ...options }],
};
const ldf = await processTable(table, { schema });
const df = await ldf.collect();
expect(df.getColumn("name").get(0)).toEqual(value);
expect(df.getColumn("name").get(0)).toEqual(value);
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdlci5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZmllbGQvdHlwZXMvaW50ZWdlci5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDekMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUVuRCxRQUFRLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxFQUFFO0lBQ2pDLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFDTix3QkFBd0I7UUFDeEIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNaLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDWixDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBRWxCLDBCQUEwQjtRQUMxQixDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ2QsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUNqQixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ2pCLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7UUFDcEIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUNsQixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBRWpCLDJCQUEyQjtRQUMzQixDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDNUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ25DLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxFQUFFLFNB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S0FBSyxDQUFDLENBQUE7UUFDbEQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3BELENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhRnJhbWUgfSBmcm9tIFwibm9kZWpzLXBvbGFyc1wiXG5pbXBvcnQgeyBkZXNjcmliZSwgZXhwZWN0LCBpdCB9IGZyb20gXCJ2aXRlc3RcIlxuaW1wb3J0IHsgcHJvY2Vzc1RhYmxlIH0gZnJvbSBcIi4uLy4uL3RhYmxlL2luZGV4LnRzXCJcblxuZGVzY3JpYmUoXCJwYXJzZUludGVnZXJGaWVsZFwiLCAoKSA9PiB7XG4gIGl0LmVhY2goW1xuICAgIC8vIEJhc2ljIGludGVnZXIgcGFyc2luZ1xuICAgIFtcIjFcIiwgMSwge31dLFxuICAgIFtcIjJcIiwgMiwge31dLFxuICAgIFtcIjEwMDBcIiwgMTAwMCwge31dLFxuXG4gICAgLy8gRW1wdHkgb3IgaW52YWxpZCB2YWx1ZXNcbiAgICBbXCJcIiwgbnVsbCwge31dLFxuICAgIFtcIjIuMVwiLCBudWxsLCB7fV0sXG4gICAgW1wiYmFkXCIsIG51bGwsIHt9XSxcbiAgICBbXCIwLjAwMDNcIiwgbnVsbCwge31dLFxuICAgIFtcIjMuMTRcIiwgbnVsbCwge31dLFxuICAgIFtcIjEvMlwiLCBudWxsLCB7fV0sXG5cbiAgICAvLyBHcm91cCBjaGFyYWN0ZXIgaGFuZGxpbmdcbiAgICBbXCIxXCIsIDEsIHsgZ3JvdXBDaGFyOiBcIixcIiB9XSxcbiAgICBbXCIxLDAwMFwiLCAxMDAwLCB7IGdyb3VwQ2hhcjogXCIsXCIgfV0sXG4gICAgW1wiMSwwMDAsMDAwXCIsIDEwMDAwMDAsIHsgZ3JvdXBDaGFyOiBcIixcIiB9XSxcbiAgICBbXCIxIDAwMFwiLCAxMDAwLCB7IGdyb3VwQ2hhcjogXCIgXCIgfV0sXG4gICAgW1wiMScwMDAnMDAwXCIsIDEwMDAwMDAsIHsgZ3JvdXBDaGFyOiBcIidcIiB9XSxcbiAgICBbXCIxLjAwMC4wMDBcIiwgMTAwMDAwMCwgeyBncm91cENoYXI6IFwiLlwiIH1dLFxuXG4gICAgLy8gQmFyZSBudW1iZXIgaGFuZGxpbmdcbiAgICBbXCIxXCIsIDEsIHsgYmFyZU51bWJlcjogZmFsc2UgfV0sXG4gICAgW1wiMTAwMFwiLCAxMDAwLCB7IGJhcmVOdW1iZXI6IGZhbHNlIH1dLFxuICAgIFtcIiQxMDAwXCIsIDEwMDAsIHsgYmFyZU51bWJlcjogZmFsc2UgfV0sXG4gICAgW1wiMTAwMCRcIiwgMTAwMCwgeyBiYXJlTnVtYmVyOiBmYWxzZSB9XSxcbiAgICBbXCLigqwxMDAwXCIsIDEwMDAsIHsgYmFyZU51bWJlcjogZmFsc2UgfV0sXG4gICAgW1wiMTAwMOKCrFwiLCAxMDAwLCB7IGJhcmVOdW1iZXI6IGZhbHNlIH1dLFxuICAgIFtcIjEsMDAwXCIsIG51bGwsIHsgYmFyZU51bWJlcjogZmFsc2UgfV0sXG4gICAgW1wiLTEy4oKsXCIsIC0xMiwgeyBiYXJlTnVtYmVyOiBmYWxzZSB9XSxcbiAgICBbXCLigqwtMTJcIiwgLTEyLCB7IGJhcmVOdW1iZXI6IGZhbHNlIH1dLFxuXG4gICAgLy8gTGVhZGluZyB6ZXJvcyBhbmQgd2hpdGVzcGFjZVxuICAgIFtcIjAwMDgzNVwiLCA4MzUsIHt9XSxcbiAgICBbXCIwXCIsIDAsIHt9XSxcbiAgICBbXCIwMFwiLCAwLCB7fV0sXG4gICAgW1wiMDFcIiwgMSwge31dLFxuICAgIC8vW1wiIDAxIFwiLCAxLCB7fV0sXG4gICAgLy9bXCIgIDQyICBcIiwgNDIsIHt9XSxcblxuICAgIC8vIENvbWJpbmVkIGNhc2VzXG4gICAgW1wiJDEsMDAwLDAwMFwiLCAxMDAwMDAwLCB7IGJhcmVOdW1iZXI6IGZhbHNlLCBncm91cENoYXI6IFwiLFwiIH1dLFxuICAgIFtcIjEsMDAwLDAwMCRcIiwgMTAwMDAwMCwgeyBiYXJlTnVtYmVyOiBmYWxzZSwgZ3JvdXBDaGFyOiBcIixcIiB9XSxcbiAgICBbXCLigqwgMS4wMDAuMDAwXCIsIDEwMDAwMDAsIHsgYmFyZU51bWJlcjogZmFsc2UsIGdyb3VwQ2hhcjogXCIuXCIgfV0sXG4gICAgLy9bXCIgLTEsMDAwIFwiLCAtMTAwMCwgeyBncm91cENoYXI6IFwiLFwiIH1dLFxuICAgIFtcIjAwMCwwMDFcIiwgMSwgeyBncm91cENoYXI6IFwiLFwiIH1dLFxuICBdKShcIiQwIC0+ICQxICQyXCIsIGFzeW5jIChjZWxsLCB2YWx1ZSwgb3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IHRhYmxlID0gRGF0YUZyYW1lKHsgbmFtZTogW2NlbGxdIH0pLmxhenkoKVxuICAgIGNvbnN0IHNjaGVtYSA9IHtcbiAgICAgIGZpZWxkczogW3sgbmFtZTogXCJuYW1lXCIsIHR5cGU6IFwiaW50ZWdlclwiIGFzIGNvbnN0LCAuLi5vcHRpb25zIH1dLFxuICAgIH1cblxuICAgIGNvbnN0IGxkZiA9IGF3YWl0IHByb2Nlc3NUYWJsZSh0YWJsZSwgeyBzY2hlbWEgfSlcbiAgICBjb25zdCBkZiA9IGF3YWl0IGxkZi5jb2xsZWN0KClcblxuICAgIGV4cGVjdChkZi5nZXRDb2x1bW4oXCJuYW1lXCIpLmdldCgwKSkudG9FcXVhbCh2YWx1ZSlcbiAgICBleHBlY3QoZGYuZ2V0Q29sdW1uKFwibmFtZVwiKS5nZXQoMCkpLnRvRXF1YWwodmFsdWUpXG4gIH0pXG59KVxuIl19