MCPcopy Create free account
hub / github.com/dolthub/doltgresql / TestCsvReader

Function TestCsvReader

testing/dataloader/csvreader_test.go:75–215  ·  view source on GitHub ↗

TestCsvReader tests various cases of CSV data parsing.

(t *testing.T)

Source from the content-addressed store, hash-verified

73
74// TestCsvReader tests various cases of CSV data parsing.
75func TestCsvReader(t *testing.T) {
76 t.Run("basic CSV data", func(t *testing.T) {
77 csvReader, err := dataloader.NewCsvReader(newReader(basicCsvData))
78 require.NoError(t, err)
79
80 // Read the first row
81 row, err := csvReader.ReadSqlRow()
82 require.NoError(t, err)
83 assert.Equal(t, "1", row[0])
84 assert.Equal(t, "foo", row[1])
85 assert.Equal(t, "bar", row[2])
86
87 // Read the second row
88 row, err = csvReader.ReadSqlRow()
89 require.NoError(t, err)
90 assert.Equal(t, "2", row[0])
91 assert.Equal(t, " ", row[1])
92 assert.Equal(t, "bash", row[2])
93
94 // Read the EOF error
95 _, err = csvReader.ReadSqlRow()
96 require.Equal(t, io.EOF, err)
97 })
98
99 t.Run("wrong number of fields", func(t *testing.T) {
100 csvReader, err := dataloader.NewCsvReader(newReader(wrongNumberOfFieldsCsvData))
101 require.NoError(t, err)
102
103 // Read the first row
104 row, err := csvReader.ReadSqlRow()
105 require.NoError(t, err)
106 require.Equal(t, "1", row[0])
107 require.Equal(t, "foo", row[1])
108 require.Equal(t, "bar", row[2])
109 require.Equal(t, "baz", row[3])
110 require.Equal(t, "bash", row[4])
111
112 // Read the second row
113 _, err = csvReader.ReadSqlRow()
114 require.Error(t, err)
115 require.Equal(t, "record on line 3: wrong number of fields", err.Error())
116 })
117
118 t.Run("incomplete line, no newline ending", func(t *testing.T) {
119 csvReader, err := dataloader.NewCsvReader(newReader(partialLineErrorCsvData))
120 require.NoError(t, err)
121
122 // Read the first row
123 row, err := csvReader.ReadSqlRow()
124 require.NoError(t, err)
125 assert.Equal(t, "1", row[0])
126 assert.Equal(t, "foo", row[1])
127 assert.Equal(t, "bar", row[2])
128 assert.Equal(t, "baz", row[3])
129 assert.Equal(t, "bash", row[4])
130
131 // Read the second row
132 row, err = csvReader.ReadSqlRow()

Callers

nothing calls this directly

Calls 6

NewCsvReaderFunction · 0.92
newReaderFunction · 0.85
RunMethod · 0.80
ReadSqlRowMethod · 0.80
EqualMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected