UNPKG

@dpkit/table

Version:

Data Package implementation in TypeScript.

58 lines 9.14 kB
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