|
|
@@ -0,0 +1,72 @@
|
|
|
+import csv from "../csv";
|
|
|
+
|
|
|
+test("CSV escape test", () => {
|
|
|
+ expect(csv.escapeCsvField("e,e")).toBe('"e,e"');
|
|
|
+ expect(csv.escapeCsvField("e\ne")).toBe('"e\ne"');
|
|
|
+ expect(csv.escapeCsvField("e\re")).toBe('"e\re"');
|
|
|
+ expect(csv.escapeCsvField('e"e')).toBe('"e""e"');
|
|
|
+});
|
|
|
+
|
|
|
+test("CSV escape test _ separator", () => {
|
|
|
+ const o = { separator: ";" };
|
|
|
+ expect(csv.escapeCsvField("e,e", o)).toBe("e,e");
|
|
|
+ expect(csv.escapeCsvField("e;e", o)).toBe('"e;e"');
|
|
|
+ expect(csv.escapeCsvField("e\ne", o)).toBe('"e\ne"');
|
|
|
+ expect(csv.escapeCsvField("e\re", o)).toBe('"e\re"');
|
|
|
+ expect(csv.escapeCsvField('e"e', o)).toBe('"e""e"');
|
|
|
+});
|
|
|
+
|
|
|
+test("CSV escape test _ delimiter", () => {
|
|
|
+ const o = { delimiter: "'" };
|
|
|
+ expect(csv.escapeCsvField("e,e", o)).toBe("'e,e'");
|
|
|
+ expect(csv.escapeCsvField("e;e", o)).toBe("e;e");
|
|
|
+ expect(csv.escapeCsvField("e\ne", o)).toBe("'e\ne'");
|
|
|
+ expect(csv.escapeCsvField("e\re", o)).toBe("'e\re'");
|
|
|
+ expect(csv.escapeCsvField('e"e', o)).toBe('e"e');
|
|
|
+ expect(csv.escapeCsvField("e'e", o)).toBe("'e''e'");
|
|
|
+});
|
|
|
+
|
|
|
+test("standard CSV parsing", () => {
|
|
|
+ const input = `1,2,3,4
|
|
|
+1,2,3,4
|
|
|
+`;
|
|
|
+ const output = [
|
|
|
+ ["1", "2", "3", "4"],
|
|
|
+ ["1", "2", "3", "4"],
|
|
|
+ ];
|
|
|
+ expect(csv.toArray(input)).toStrictEqual(output);
|
|
|
+});
|
|
|
+test("multiline CSV parsing", () => {
|
|
|
+ const output = csv.toArray(`1,2,3,"4\r\n 1",2,3,4
|
|
|
+`);
|
|
|
+ const expected = [["1", "2", "3", "4\r\n 1", "2", "3", "4"]];
|
|
|
+
|
|
|
+ expect(output).toStrictEqual(expected);
|
|
|
+});
|
|
|
+test("CSV using separator in string parsing", () => {
|
|
|
+ const output = csv.toArray(`1,2,3,"4,5"
|
|
|
+1,2,3,4
|
|
|
+`);
|
|
|
+ const expected = [
|
|
|
+ ["1", "2", "3", "4,5"],
|
|
|
+ ["1", "2", "3", "4"],
|
|
|
+ ];
|
|
|
+
|
|
|
+ expect(output).toStrictEqual(expected);
|
|
|
+});
|
|
|
+
|
|
|
+test("CSV without ending carrige return", () => {
|
|
|
+ const output = csv.toArray(`1,2,3`);
|
|
|
+ const expected = [["1", "2", "3"]];
|
|
|
+
|
|
|
+ expect(output).toStrictEqual(expected);
|
|
|
+
|
|
|
+ expect(csv.toArray(``)).toStrictEqual([]);
|
|
|
+});
|
|
|
+test("CSV with blanck last line", () => {
|
|
|
+ const output = csv.toArray(`1,2,3
|
|
|
+ `);
|
|
|
+ const expected = [["1", "2", "3"]];
|
|
|
+
|
|
|
+ expect(output).toStrictEqual(expected);
|
|
|
+});
|