-
-
Notifications
You must be signed in to change notification settings - Fork 29
Expand file tree
/
Copy pathstringutil_test.go
More file actions
66 lines (59 loc) · 2.58 KB
/
stringutil_test.go
File metadata and controls
66 lines (59 loc) · 2.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package stringutil_test
import (
"testing"
"github.com/dorzzz/strutil/internal/stringutil"
"github.com/stretchr/testify/require"
)
func TestCommonPrefix(t *testing.T) {
requireEqual(t, [][2]interface{}{
{"", stringutil.CommonPrefix("", "")},
{"", stringutil.CommonPrefix("a", "")},
{"", stringutil.CommonPrefix("", "b")},
{"", stringutil.CommonPrefix("a", "b")},
{"a", stringutil.CommonPrefix("ab", "aab")},
{"a", stringutil.CommonPrefix("aab", "ab")},
{"aa", stringutil.CommonPrefix("aab", "aaab")},
{"aa", stringutil.CommonPrefix("aaab", "aab")},
{"忧郁的乌龟", stringutil.CommonPrefix("忧郁的乌龟", "忧郁的乌龟")},
{"忧郁的", stringutil.CommonPrefix("忧郁的", "忧郁的乌龟")},
{"忧郁的", stringutil.CommonPrefix("忧郁的乌龟", "忧郁的")},
{"", stringutil.CommonPrefix("忧郁的乌龟", "郁的乌龟")},
{"", stringutil.CommonPrefix("郁的乌龟", "忧郁的乌龟")},
{"\u2019", stringutil.CommonPrefix("\u2019a", "\u2019b")},
{"a\u2019bc", stringutil.CommonPrefix("a\u2019bcd", "a\u2019bce")},
{"abc", stringutil.CommonPrefix("abc\u2019d", "abc\u2020d")},
})
}
func TestUniqueSlice(t *testing.T) {
requireEqual(t, [][2]interface{}{
{0, len(stringutil.UniqueSlice(nil))},
{0, len(stringutil.UniqueSlice([]string{}))},
{[]string{"a"}, stringutil.UniqueSlice([]string{"a"})},
{[]string{"a", "b"}, stringutil.UniqueSlice([]string{"a", "b"})},
{[]string{"b", "a"}, stringutil.UniqueSlice([]string{"b", "a"})},
{[]string{"a"}, stringutil.UniqueSlice([]string{"a", "a"})},
{[]string{"b", "a"}, stringutil.UniqueSlice([]string{"b", "a", "a"})},
{[]string{"a", "b"}, stringutil.UniqueSlice([]string{"a", "a", "b"})},
{[]string{"a", "b"}, stringutil.UniqueSlice([]string{"a", "a", "a", "b"})},
{[]string{"b", "a"}, stringutil.UniqueSlice([]string{"b", "a", "a", "a"})},
{[]string{"a", "b"}, stringutil.UniqueSlice([]string{"a", "b", "b", "a"})},
{[]string{"a", "b"}, stringutil.UniqueSlice([]string{"a", "b", "a", "b"})},
})
}
func TestSliceContains(t *testing.T) {
requireEqual(t, [][2]interface{}{
{false, stringutil.SliceContains(nil, "")},
{false, stringutil.SliceContains(nil, "a")},
{false, stringutil.SliceContains([]string{}, "")},
{false, stringutil.SliceContains([]string{}, "a")},
{true, stringutil.SliceContains([]string{"a", "b"}, "a")},
{true, stringutil.SliceContains([]string{"b", "a"}, "a")},
{false, stringutil.SliceContains([]string{"b", "a"}, "c")},
})
}
func requireEqual(t *testing.T, inputs [][2]interface{}) {
t.Helper()
for _, input := range inputs {
require.Equal(t, input[0], input[1])
}
}