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  }