summaryrefslogtreecommitdiff
path: root/std/encoding/csv_test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'std/encoding/csv_test.ts')
-rw-r--r--std/encoding/csv_test.ts84
1 files changed, 47 insertions, 37 deletions
diff --git a/std/encoding/csv_test.ts b/std/encoding/csv_test.ts
index 07a8e0965..aab9e86b1 100644
--- a/std/encoding/csv_test.ts
+++ b/std/encoding/csv_test.ts
@@ -4,7 +4,7 @@
// https://github.com/golang/go/blob/master/LICENSE
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
-import { assertEquals, assert } from "../testing/asserts.ts";
+import { assertEquals, assertThrowsAsync } from "../testing/asserts.ts";
import {
readMatrix,
parse,
@@ -12,6 +12,7 @@ import {
ERR_QUOTE,
ERR_INVALID_DELIM,
ERR_FIELD_COUNT,
+ ParseError,
} from "./csv.ts";
import { StringReader } from "../io/readers.ts";
import { BufReader } from "../io/bufio.ts";
@@ -133,8 +134,7 @@ field"`,
{
Name: "BadDoubleQuotes",
Input: `a""b,c`,
- Error: ERR_BARE_QUOTE,
- // Error: &ParseError{StartLine: 1, Line: 1, Column: 1, Err: ErrBareQuote},
+ Error: new ParseError(1, 1, 1, ERR_BARE_QUOTE),
},
{
Name: "TrimQuote",
@@ -145,33 +145,31 @@ field"`,
{
Name: "BadBareQuote",
Input: `a "word","b"`,
- Error: ERR_BARE_QUOTE,
- // &ParseError{StartLine: 1, Line: 1, Column: 2, Err: ErrBareQuote}
+ Error: new ParseError(1, 1, 2, ERR_BARE_QUOTE),
},
{
Name: "BadTrailingQuote",
Input: `"a word",b"`,
- Error: ERR_BARE_QUOTE,
+ Error: new ParseError(1, 1, 10, ERR_BARE_QUOTE),
},
{
Name: "ExtraneousQuote",
Input: `"a "word","b"`,
- Error: ERR_QUOTE,
+ Error: new ParseError(1, 1, 3, ERR_QUOTE),
},
{
Name: "BadFieldCount",
Input: "a,b,c\nd,e",
- Error: ERR_FIELD_COUNT,
+ Error: new ParseError(2, 2, null, ERR_FIELD_COUNT),
UseFieldsPerRecord: true,
FieldsPerRecord: 0,
},
{
Name: "BadFieldCount1",
Input: `a,b,c`,
- // Error: &ParseError{StartLine: 1, Line: 1, Err: ErrFieldCount},
UseFieldsPerRecord: true,
FieldsPerRecord: 2,
- Error: ERR_FIELD_COUNT,
+ Error: new ParseError(1, 1, null, ERR_FIELD_COUNT),
},
{
Name: "FieldCount",
@@ -265,14 +263,12 @@ x,,,
{
Name: "StartLine1", // Issue 19019
Input: 'a,"b\nc"d,e',
- Error: ERR_QUOTE,
- // Error: &ParseError{StartLine: 1, Line: 2, Column: 1, Err: ErrQuote},
+ Error: new ParseError(1, 2, 1, ERR_QUOTE),
},
{
Name: "StartLine2",
- Input: 'a,b\n"d\n\n,e',
- Error: ERR_QUOTE,
- // Error: &ParseError{StartLine: 2, Line: 5, Column: 0, Err: ErrQuote},
+ Input: 'a,b\n\"d\n\n,e',
+ Error: new ParseError(2, 5, 0, ERR_QUOTE),
},
{
Name: "CRLFInQuotedField", // Issue 21201
@@ -297,8 +293,7 @@ x,,,
{
Name: "QuotedTrailingCRCR",
Input: '"field"\r\r',
- Error: ERR_QUOTE,
- // Error: &ParseError{StartLine: 1, Line: 1, Column: 6, Err: ErrQuote},
+ Error: new ParseError(1, 1, 6, ERR_QUOTE),
},
{
Name: "FieldCR",
@@ -389,8 +384,7 @@ x,,,
{
Name: "QuoteWithTrailingCRLF",
Input: '"foo"bar"\r\n',
- Error: ERR_QUOTE,
- // Error: &ParseError{StartLine: 1, Line: 1, Column: 4, Err: ErrQuote},
+ Error: new ParseError(1, 1, 4, ERR_QUOTE),
},
{
Name: "LazyQuoteWithTrailingCRLF",
@@ -411,8 +405,7 @@ x,,,
{
Name: "OddQuotes",
Input: `"""""""`,
- Error: ERR_QUOTE,
- // Error:" &ParseError{StartLine: 1, Line: 1, Column: 7, Err: ErrQuote}",
+ Error: new ParseError(1, 1, 7, ERR_QUOTE),
},
{
Name: "LazyOddQuotes",
@@ -423,33 +416,33 @@ x,,,
{
Name: "BadComma1",
Comma: "\n",
- Error: ERR_INVALID_DELIM,
+ Error: new Error(ERR_INVALID_DELIM),
},
{
Name: "BadComma2",
Comma: "\r",
- Error: ERR_INVALID_DELIM,
+ Error: new Error(ERR_INVALID_DELIM),
},
{
Name: "BadComma3",
Comma: '"',
- Error: ERR_INVALID_DELIM,
+ Error: new Error(ERR_INVALID_DELIM),
},
{
Name: "BadComment1",
Comment: "\n",
- Error: ERR_INVALID_DELIM,
+ Error: new Error(ERR_INVALID_DELIM),
},
{
Name: "BadComment2",
Comment: "\r",
- Error: ERR_INVALID_DELIM,
+ Error: new Error(ERR_INVALID_DELIM),
},
{
Name: "BadCommaComment",
Comma: "X",
Comment: "X",
- Error: ERR_INVALID_DELIM,
+ Error: new Error(ERR_INVALID_DELIM),
},
];
for (const t of testCases) {
@@ -457,8 +450,8 @@ for (const t of testCases) {
name: `[CSV] ${t.Name}`,
async fn(): Promise<void> {
let comma = ",";
- let comment;
- let fieldsPerRec;
+ let comment: string | undefined;
+ let fieldsPerRec: number | undefined;
let trim = false;
let lazyquote = false;
if (t.Comma) {
@@ -478,9 +471,8 @@ for (const t of testCases) {
}
let actual;
if (t.Error) {
- let err;
- try {
- actual = await readMatrix(
+ const err = await assertThrowsAsync(async () => {
+ await readMatrix(
new BufReader(new StringReader(t.Input ?? "")),
{
comma: comma,
@@ -490,11 +482,9 @@ for (const t of testCases) {
lazyQuotes: lazyquote,
},
);
- } catch (e) {
- err = e;
- }
- assert(err);
- assertEquals(err.message, t.Error);
+ });
+
+ assertEquals(err, t.Error);
} else {
actual = await readMatrix(
new BufReader(new StringReader(t.Input ?? "")),
@@ -625,3 +615,23 @@ for (const testCase of parseTestCases) {
},
});
}
+
+Deno.test({
+ name: "[CSV] ParseError.message",
+ fn(): void {
+ assertEquals(
+ new ParseError(2, 2, null, ERR_FIELD_COUNT).message,
+ `record on line 2: ${ERR_FIELD_COUNT}`,
+ );
+
+ assertEquals(
+ new ParseError(1, 2, 1, ERR_QUOTE).message,
+ `record on line 1; parse error on line 2, column 1: ${ERR_QUOTE}`,
+ );
+
+ assertEquals(
+ new ParseError(1, 1, 7, ERR_QUOTE).message,
+ `parse error on line 1, column 7: ${ERR_QUOTE}`,
+ );
+ },
+});