Files
csv-parser/csv-parser_test.go
T

69 lines
1.7 KiB
Go
Raw Normal View History

2022-03-25 11:31:15 +01:00
package csvparser
import(
"testing"
)
func TestParse(t *testing.T) {
var parser CsvParser
var CsvTestValues = [...]string {
"field1 field2 field3", // standard CSV
" field1 field2 field3 ", // Space or multiple spaces as delimiters
" field1 field2 field3 ", // Spaces + tabs as delimiters
" \"field1\" field2 field3 ", // Enclosed fields
" \"field1\" field2 [field3] ", // Enclosed fields
}
var CsvExpectedValues = [...]string {
"field1",
"field2",
"field3",
}
parser.Init()
for _, v := range CsvTestValues {
err := parser.Parse(v)
if err != nil {
t.Error("Parse error:", err, " in ", v)
}
if len(parser.Fields) != len(CsvExpectedValues) {
t.Error("Extracted field number does not match expected", parser.Fields)
}
for i,val := range CsvExpectedValues {
if parser.Fields[i] != val {
2022-03-25 11:47:51 +01:00
t.Error("Field values do not match", i, " expected ", val, " got ", parser.Fields[i])
2022-03-25 11:31:15 +01:00
}
}
}
}
func TestParseWithEscape(t *testing.T) {
var parser CsvParser
var CsvTestValues = [...]string {
2022-03-25 11:47:51 +01:00
"\"\\\"field1 and more\" field2 [\\[field3] ", // Enclosed fields
2022-03-25 11:31:15 +01:00
}
var CsvExpectedValues = [...]string {
2022-03-25 11:47:51 +01:00
"\\\"field1 and more",
2022-03-25 11:31:15 +01:00
"field2",
2022-03-25 11:47:51 +01:00
"\\[field3",
2022-03-25 11:31:15 +01:00
}
parser.Init()
for _, v := range CsvTestValues {
err := parser.Parse(v)
if err != nil {
t.Error("Parse error:", err, " in ", v)
}
if len(parser.Fields) != len(CsvExpectedValues) {
t.Error("Extracted field number does not match expected", parser.Fields)
}
for i,val := range CsvExpectedValues {
if parser.Fields[i] != val {
2022-03-25 11:47:51 +01:00
t.Error("Field values do not match", i, " expected ", val, " got ", parser.Fields[i])
2022-03-25 11:31:15 +01:00
}
}
}
}