summaryrefslogtreecommitdiff
path: root/std/encoding/csv_stringify_test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'std/encoding/csv_stringify_test.ts')
-rw-r--r--std/encoding/csv_stringify_test.ts373
1 files changed, 0 insertions, 373 deletions
diff --git a/std/encoding/csv_stringify_test.ts b/std/encoding/csv_stringify_test.ts
deleted file mode 100644
index f8b7d81cd..000000000
--- a/std/encoding/csv_stringify_test.ts
+++ /dev/null
@@ -1,373 +0,0 @@
-// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.
-
-import { assertEquals, assertThrowsAsync } from "../testing/asserts.ts";
-
-import {
- Column,
- DataItem,
- NEWLINE,
- stringify,
- StringifyError,
- StringifyOptions,
-} from "./csv_stringify.ts";
-
-type StringifyTestCaseBase = {
- columns: Column[];
- data: DataItem[];
- name: string;
- options?: StringifyOptions;
-};
-
-type StringifyTestCaseError = StringifyTestCaseBase & {
- errorMessage?: string;
- // deno-lint-ignore no-explicit-any
- throwsError: new (...args: any[]) => Error;
-};
-
-type StringifyTestCase = StringifyTestCaseBase & { expected: string };
-
-const stringifyTestCases: (StringifyTestCase | StringifyTestCaseError)[] = [
- {
- columns: ["a"],
- data: [["foo"], ["bar"]],
- errorMessage: 'Property accessor is not of type "number"',
- name: "[CSV_stringify] Access array index using string",
- throwsError: StringifyError,
- },
- {
- columns: [0],
- data: [["foo"], ["bar"]],
- errorMessage: [
- "Separator cannot include the following strings:",
- ' - U+0022: Quotation mark (")',
- " - U+000D U+000A: Carriage Return + Line Feed (\\r\\n)",
- ].join("\n"),
- name: "[CSV_stringify] Double quote in separator",
- options: { separator: '"' },
- throwsError: StringifyError,
- },
- {
- columns: [0],
- data: [["foo"], ["bar"]],
- errorMessage: [
- "Separator cannot include the following strings:",
- ' - U+0022: Quotation mark (")',
- " - U+000D U+000A: Carriage Return + Line Feed (\\r\\n)",
- ].join("\n"),
- name: "[CSV_stringify] CRLF in separator",
- options: { separator: "\r\n" },
- throwsError: StringifyError,
- },
- {
- columns: [
- {
- fn: (obj) => obj.toUpperCase(),
- prop: "msg",
- },
- ],
- data: [{ msg: { value: "foo" } }, { msg: { value: "bar" } }],
- name: "[CSV_stringify] Transform function",
- throwsError: TypeError,
- },
- {
- columns: [],
- data: [],
- expected: NEWLINE,
- name: "[CSV_stringify] No data, no columns",
- },
- {
- columns: [],
- data: [],
- expected: ``,
- name: "[CSV_stringify] No data, no columns, no headers",
- options: { headers: false },
- },
- {
- columns: ["a"],
- data: [],
- expected: `a${NEWLINE}`,
- name: "[CSV_stringify] No data, columns",
- },
- {
- columns: ["a"],
- data: [],
- expected: ``,
- name: "[CSV_stringify] No data, columns, no headers",
- options: { headers: false },
- },
- {
- columns: [],
- data: [{ a: 1 }, { a: 2 }],
- expected: `${NEWLINE}${NEWLINE}${NEWLINE}`,
- name: "[CSV_stringify] Data, no columns",
- },
- {
- columns: [0, 1],
- data: [["foo", "bar"], ["baz", "qux"]],
- expected: `0\r1${NEWLINE}foo\rbar${NEWLINE}baz\rqux${NEWLINE}`,
- name: "[CSV_stringify] Separator: CR",
- options: { separator: "\r" },
- },
- {
- columns: [0, 1],
- data: [["foo", "bar"], ["baz", "qux"]],
- expected: `0\n1${NEWLINE}foo\nbar${NEWLINE}baz\nqux${NEWLINE}`,
- name: "[CSV_stringify] Separator: LF",
- options: { separator: "\n" },
- },
- {
- columns: [1],
- data: [{ 1: 1 }, { 1: 2 }],
- expected: `1${NEWLINE}1${NEWLINE}2${NEWLINE}`,
- name: "[CSV_stringify] Column: number accessor, Data: object",
- },
- {
- columns: [{ header: "Value", prop: "value" }],
- data: [{ value: "foo" }, { value: "bar" }],
- expected: `foo${NEWLINE}bar${NEWLINE}`,
- name: "[CSV_stringify] Explicit header value, no headers",
- options: { headers: false },
- },
- {
- columns: [1],
- data: [["key", "foo"], ["key", "bar"]],
- expected: `1${NEWLINE}foo${NEWLINE}bar${NEWLINE}`,
- name: "[CSV_stringify] Column: number accessor, Data: array",
- },
- {
- columns: [[1]],
- data: [{ 1: 1 }, { 1: 2 }],
- expected: `1${NEWLINE}1${NEWLINE}2${NEWLINE}`,
- name: "[CSV_stringify] Column: array number accessor, Data: object",
- },
- {
- columns: [[1]],
- data: [["key", "foo"], ["key", "bar"]],
- expected: `1${NEWLINE}foo${NEWLINE}bar${NEWLINE}`,
- name: "[CSV_stringify] Column: array number accessor, Data: array",
- },
- {
- columns: [[1, 1]],
- data: [["key", ["key", "foo"]], ["key", ["key", "bar"]]],
- expected: `1${NEWLINE}foo${NEWLINE}bar${NEWLINE}`,
- name: "[CSV_stringify] Column: array number accessor, Data: array",
- },
- {
- columns: ["value"],
- data: [{ value: "foo" }, { value: "bar" }],
- expected: `value${NEWLINE}foo${NEWLINE}bar${NEWLINE}`,
- name: "[CSV_stringify] Column: string accessor, Data: object",
- },
- {
- columns: [["value"]],
- data: [{ value: "foo" }, { value: "bar" }],
- expected: `value${NEWLINE}foo${NEWLINE}bar${NEWLINE}`,
- name: "[CSV_stringify] Column: array string accessor, Data: object",
- },
- {
- columns: [["msg", "value"]],
- data: [{ msg: { value: "foo" } }, { msg: { value: "bar" } }],
- expected: `value${NEWLINE}foo${NEWLINE}bar${NEWLINE}`,
- name: "[CSV_stringify] Column: array string accessor, Data: object",
- },
- {
- columns: [
- {
- header: "Value",
- prop: ["msg", "value"],
- },
- ],
- data: [{ msg: { value: "foo" } }, { msg: { value: "bar" } }],
- expected: `Value${NEWLINE}foo${NEWLINE}bar${NEWLINE}`,
- name: "[CSV_stringify] Explicit header",
- },
- {
- columns: [
- {
- fn: (str: string) => str.toUpperCase(),
- prop: ["msg", "value"],
- },
- ],
- data: [{ msg: { value: "foo" } }, { msg: { value: "bar" } }],
- expected: `value${NEWLINE}FOO${NEWLINE}BAR${NEWLINE}`,
- name: "[CSV_stringify] Transform function 1",
- },
- {
- columns: [
- {
- fn: (str: string) => Promise.resolve(str.toUpperCase()),
- prop: ["msg", "value"],
- },
- ],
- data: [{ msg: { value: "foo" } }, { msg: { value: "bar" } }],
- expected: `value${NEWLINE}FOO${NEWLINE}BAR${NEWLINE}`,
- name: "[CSV_stringify] Transform function 1 async",
- },
- {
- columns: [
- {
- fn: (obj: { value: string }) => obj.value,
- prop: "msg",
- },
- ],
- data: [{ msg: { value: "foo" } }, { msg: { value: "bar" } }],
- expected: `msg${NEWLINE}foo${NEWLINE}bar${NEWLINE}`,
- name: "[CSV_stringify] Transform function 2",
- },
- {
- columns: [
- {
- fn: (obj: { value: string }) => obj.value,
- header: "Value",
- prop: "msg",
- },
- ],
- data: [{ msg: { value: "foo" } }, { msg: { value: "bar" } }],
- expected: `Value${NEWLINE}foo${NEWLINE}bar${NEWLINE}`,
- name: "[CSV_stringify] Transform function 2, explicit header",
- },
- {
- columns: [0],
- data: [[{ value: "foo" }], [{ value: "bar" }]],
- expected:
- `0${NEWLINE}"{""value"":""foo""}"${NEWLINE}"{""value"":""bar""}"${NEWLINE}`,
- name: "[CSV_stringify] Targeted value: object",
- },
- {
- columns: [0],
- data: [
- [[{ value: "foo" }, { value: "bar" }]],
- [[{ value: "baz" }, { value: "qux" }]],
- ],
- expected:
- `0${NEWLINE}"[{""value"":""foo""},{""value"":""bar""}]"${NEWLINE}"[{""value"":""baz""},{""value"":""qux""}]"${NEWLINE}`,
- name: "[CSV_stringify] Targeted value: arary of objects",
- },
- {
- columns: [0],
- data: [[["foo", "bar"]], [["baz", "qux"]]],
- expected:
- `0${NEWLINE}"[""foo"",""bar""]"${NEWLINE}"[""baz"",""qux""]"${NEWLINE}`,
- name: "[CSV_stringify] Targeted value: array",
- },
- {
- columns: [0],
- data: [[["foo", "bar"]], [["baz", "qux"]]],
- expected:
- `0${NEWLINE}"[""foo"",""bar""]"${NEWLINE}"[""baz"",""qux""]"${NEWLINE}`,
- name: "[CSV_stringify] Targeted value: array, separator: tab",
- options: { separator: "\t" },
- },
- {
- columns: [0],
- data: [[], []],
- expected: `0${NEWLINE}${NEWLINE}${NEWLINE}`,
- name: "[CSV_stringify] Targeted value: undefined",
- },
- {
- columns: [0],
- data: [[null], [null]],
- expected: `0${NEWLINE}${NEWLINE}${NEWLINE}`,
- name: "[CSV_stringify] Targeted value: null",
- },
- {
- columns: [0],
- data: [[0xa], [0xb]],
- expected: `0${NEWLINE}10${NEWLINE}11${NEWLINE}`,
- name: "[CSV_stringify] Targeted value: hex number",
- },
- {
- columns: [0],
- data: [[BigInt("1")], [BigInt("2")]],
- expected: `0${NEWLINE}1${NEWLINE}2${NEWLINE}`,
- name: "[CSV_stringify] Targeted value: BigInt",
- },
- {
- columns: [0],
- data: [[true], [false]],
- expected: `0${NEWLINE}true${NEWLINE}false${NEWLINE}`,
- name: "[CSV_stringify] Targeted value: boolean",
- },
- {
- columns: [0],
- data: [["foo"], ["bar"]],
- expected: `0${NEWLINE}foo${NEWLINE}bar${NEWLINE}`,
- name: "[CSV_stringify] Targeted value: string",
- },
- {
- columns: [0],
- data: [[Symbol("foo")], [Symbol("bar")]],
- expected: `0${NEWLINE}Symbol(foo)${NEWLINE}Symbol(bar)${NEWLINE}`,
- name: "[CSV_stringify] Targeted value: symbol",
- },
- {
- columns: [0],
- data: [[(n: number) => n]],
- expected: `0${NEWLINE}(n) => n${NEWLINE}`,
- name: "[CSV_stringify] Targeted value: function",
- },
- {
- columns: [0],
- data: [['foo"']],
- expected: `0${NEWLINE}"foo"""${NEWLINE}`,
- name: "[CSV_stringify] Value with double quote",
- },
- {
- columns: [0],
- data: [["foo\r\n"]],
- expected: `0${NEWLINE}"foo\r\n"${NEWLINE}`,
- name: "[CSV_stringify] Value with CRLF",
- },
- {
- columns: [0],
- data: [["foo\r"]],
- expected: `0${NEWLINE}foo\r${NEWLINE}`,
- name: "[CSV_stringify] Value with CR",
- },
- {
- columns: [0],
- data: [["foo\n"]],
- expected: `0${NEWLINE}foo\n${NEWLINE}`,
- name: "[CSV_stringify] Value with LF",
- },
- {
- columns: [0],
- data: [["foo,"]],
- expected: `0${NEWLINE}"foo,"${NEWLINE}`,
- name: "[CSV_stringify] Value with comma",
- },
- {
- columns: [0],
- data: [["foo,"]],
- expected: `0${NEWLINE}foo,${NEWLINE}`,
- name: "[CSV_stringify] Value with comma, tab separator",
- options: { separator: "\t" },
- },
-];
-
-for (const tc of stringifyTestCases) {
- if ((tc as StringifyTestCaseError).throwsError) {
- const t = tc as StringifyTestCaseError;
- Deno.test({
- async fn() {
- await assertThrowsAsync(
- async () => {
- await stringify(t.data, t.columns, t.options);
- },
- t.throwsError,
- t.errorMessage,
- );
- },
- name: t.name,
- });
- } else {
- const t = tc as StringifyTestCase;
- Deno.test({
- async fn() {
- const actual = await stringify(t.data, t.columns, t.options);
- assertEquals(actual, t.expected);
- },
- name: t.name,
- });
- }
-}