bitbucket.org/number571/tendermint@v0.8.14/libs/strings/string_test.go (about) 1 package strings 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 ) 8 9 func TestSplitAndTrimEmpty(t *testing.T) { 10 testCases := []struct { 11 s string 12 sep string 13 cutset string 14 expected []string 15 }{ 16 {"a,b,c", ",", " ", []string{"a", "b", "c"}}, 17 {" a , b , c ", ",", " ", []string{"a", "b", "c"}}, 18 {" a, b, c ", ",", " ", []string{"a", "b", "c"}}, 19 {" a, ", ",", " ", []string{"a"}}, 20 {" ", ",", " ", []string{}}, 21 } 22 23 for _, tc := range testCases { 24 require.Equal(t, tc.expected, SplitAndTrimEmpty(tc.s, tc.sep, tc.cutset), "%s", tc.s) 25 } 26 } 27 28 func TestStringInSlice(t *testing.T) { 29 require.True(t, StringInSlice("a", []string{"a", "b", "c"})) 30 require.False(t, StringInSlice("d", []string{"a", "b", "c"})) 31 require.True(t, StringInSlice("", []string{""})) 32 require.False(t, StringInSlice("", []string{})) 33 } 34 35 func TestIsASCIIText(t *testing.T) { 36 notASCIIText := []string{ 37 "", "\xC2", "\xC2\xA2", "\xFF", "\x80", "\xF0", "\n", "\t", 38 } 39 for _, v := range notASCIIText { 40 require.False(t, IsASCIIText(v), "%q is not ascii-text", v) 41 } 42 asciiText := []string{ 43 " ", ".", "x", "$", "_", "abcdefg;", "-", "0x00", "0", "123", 44 } 45 for _, v := range asciiText { 46 require.True(t, IsASCIIText(v), "%q is ascii-text", v) 47 } 48 } 49 50 func TestASCIITrim(t *testing.T) { 51 require.Equal(t, ASCIITrim(" "), "") 52 require.Equal(t, ASCIITrim(" a"), "a") 53 require.Equal(t, ASCIITrim("a "), "a") 54 require.Equal(t, ASCIITrim(" a "), "a") 55 require.Panics(t, func() { ASCIITrim("\xC2\xA2") }) 56 } 57 58 func TestStringSliceEqual(t *testing.T) { 59 tests := []struct { 60 a []string 61 b []string 62 want bool 63 }{ 64 {[]string{"hello", "world"}, []string{"hello", "world"}, true}, 65 {[]string{"test"}, []string{"test"}, true}, 66 {[]string{"test1"}, []string{"test2"}, false}, 67 {[]string{"hello", "world."}, []string{"hello", "world!"}, false}, 68 {[]string{"only 1 word"}, []string{"two", "words!"}, false}, 69 {[]string{"two", "words!"}, []string{"only 1 word"}, false}, 70 } 71 for i, tt := range tests { 72 require.Equal(t, tt.want, StringSliceEqual(tt.a, tt.b), 73 "StringSliceEqual failed on test %d", i) 74 } 75 }