github.com/blend/go-sdk@v1.20240719.1/stringutil/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 TestCSV(t *testing.T) { 17 assert := assert.New(t) 18 19 assert.Equal("", CSV(nil)) 20 assert.Equal("", CSV([]string{})) 21 assert.Equal("foo", CSV([]string{"foo"})) 22 assert.Equal("foo,bar", CSV([]string{"foo", "bar"})) 23 assert.Equal("foo,bar,baz", CSV([]string{"foo", "bar", "baz"})) 24 assert.Equal(`foo," bar"`, CSV([]string{"foo", " bar"})) 25 assert.Equal(`" foo "," bar "`, CSV([]string{" foo ", " bar "})) 26 assert.Equal(`foo,bar,"baz,buzz"`, CSV([]string{"foo", "bar", "baz,buzz"})) 27 assert.Equal(`foo,bar,"baz,'buzz'"`, CSV([]string{"foo", "bar", "baz,'buzz'"})) 28 assert.Equal(`foo,bar,"baz,'buzz"`, CSV([]string{"foo", "bar", "baz,'buzz"})) 29 // A double quote can be escaped in CSV by doubling it, e.g. `a"b` -> `"a""b"` 30 assert.Equal(`foo,bar,"baz,""buzz"""`, CSV([]string{"foo", "bar", `baz,"buzz"`})) 31 assert.Equal(`foo,bar,"baz""buzz"""`, CSV([]string{"foo", "bar", `baz"buzz"`})) 32 }