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  }