github.com/blend/go-sdk@v1.20240719.1/stringutil/split_csv_test.go (about) 1 /* 2 3 Copyright (c) 2024 - Present. Blend Labs, Inc. All rights reserved 4 Use of this source code is governed by a MIT license that can be found in the LICENSE file. 5 6 */ 7 8 package stringutil 9 10 import ( 11 "testing" 12 13 "github.com/blend/go-sdk/assert" 14 ) 15 16 func TestSplitCSV(t *testing.T) { 17 assert := assert.New(t) 18 19 assert.Empty(SplitCSV("")) 20 assert.Equal([]string{"foo"}, SplitCSV("foo")) 21 assert.Equal([]string{"foo", "bar"}, SplitCSV("foo,bar")) 22 assert.Equal([]string{"foo", " bar"}, SplitCSV("foo, bar")) 23 assert.Equal([]string{" foo ", " bar "}, SplitCSV(" foo , bar ")) 24 assert.Equal([]string{"foo", "bar", "baz"}, SplitCSV("foo,bar,baz")) 25 assert.Equal([]string{"foo", " bar"}, SplitCSV(`foo," bar"`)) 26 assert.Equal([]string{" foo ", " bar "}, SplitCSV(`" foo "," bar "`)) 27 assert.Equal([]string{"foo", "bar", "baz,buzz"}, SplitCSV(`foo,bar,"baz,buzz"`)) 28 assert.Equal([]string{"foo", "bar", "baz,'buzz'"}, SplitCSV(`foo,bar,"baz,'buzz'"`)) 29 assert.Equal([]string{"foo", "bar", "baz,'buzz"}, SplitCSV(`foo,bar,"baz,'buzz"`)) 30 // A double quote can be escaped in CSV by doubling it, e.g. `a"b` -> `"a""b"` 31 assert.Equal([]string{"foo", "bar", `baz,"buzz"`}, SplitCSV(`foo,bar,"baz,""buzz"""`)) 32 assert.Equal([]string{"foo", "bar", `baz"buzz"`}, SplitCSV(`foo,bar,"baz""buzz"""`)) 33 }