csv-parser/csv-parser_test.go

69 lines
1.7 KiB
Go

package csvparser
import(
"testing"
)
func TestParse(t *testing.T) {
var parser Parser
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 {
t.Error("Field values do not match", i, " expected ", val, " got ", parser.Fields[i])
}
}
}
}
func TestParseWithEscape(t *testing.T) {
var parser Parser
var CsvTestValues = [...]string {
"\"\\\"field1 and more\" field2 [\\[field3] ", // Enclosed fields
}
var CsvExpectedValues = [...]string {
"\\\"field1 and more",
"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 {
t.Error("Field values do not match", i, " expected ", val, " got ", parser.Fields[i])
}
}
}
}