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]) } } } }