-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathslice_test.go
89 lines (76 loc) · 2.36 KB
/
slice_test.go
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package slice_test
import (
"fmt"
"strings"
"testing"
"github.com/starfork/go-slice"
)
func TestContains(t *testing.T) {
noAuth := slice.New([]string{"/v1/passport/", "/v1/public/"})
path := "/v1/passport/login"
rs := noAuth.Contains(path, func(key string) bool {
fmt.Println(path, key)
return strings.Contains(path, key)
})
fmt.Println(rs)
//rs1 := noAuth.Contains("/v1/passport/")
//fmt.Println(rs1)
}
func TestAsSlice(t *testing.T) {
str := ""
s := slice.New(strings.Split(str, ","))
fmt.Println(s)
if !s.Contains("abc") {
s = append(s, "abc")
}
if !s.Contains("abc") {
s = append(s, "abc")
}
ns := slice.New(strings.Split(strings.Join(s, ","), ","))
fmt.Println(ns)
if !ns.Contains("def") {
ns = append(ns, "def")
}
if !ns.Contains("def") {
ns = append(ns, "def")
}
fmt.Println(len(ns))
fmt.Println(strings.Join(ns, ","))
}
func TestIntersect(t *testing.T) {
a := slice.New([]string{"/v1/passport/", "/v1/public/"})
b := slice.New([]string{"/v1/passport/", "/v1/public/1"})
fmt.Println(a.Intersect(b))
}
func TestDiff(t *testing.T) {
a := slice.New([]string{"/v1/passport/", "/v1/public/", "/v1/public/2"})
b := slice.New([]string{"/v1/passport/", "/v1/public/1"})
fmt.Println(a.Diff(b))
}
func TestUnion(t *testing.T) {
a := slice.New([]string{"/v1/passport/", "/v1/public/", "/v1/public/2"})
b := slice.New([]string{"/v1/passport/", "/v1/public/1"})
fmt.Println(a.Union(b))
}
func TestOne(t *testing.T) {
a := slice.New([]string{"/v1/passport/", "/v1/public/", "/v1/public/2", "/v1/public/4"})
fmt.Println(a.One(5))
}
func TestCalc(t *testing.T) {
a := slice.New([]string{}) //老权限
//删除2,新增7,8之后
b := slice.New([]string{"/v1/estate/estates$$GET", "/v1/service/display/services$$GET", "/v1/service/evaluate$$GET", "/v1/service/service$$PUT", "/v1/user/auth/rule$$PUT", "/v1/user/log/login$$GET", "/v1/user/friends$$GET", "/v1/user/auth/roles$$GET", "/v1/user/certifications$$GET"})
inter := a.Intersect(b)
fmt.Printf("交集:%+v", inter)
//需要删除的
fmt.Printf("需要删除的节点:%+v", a.Diff(inter))
add := b.Diff(inter)
fmt.Printf("需要增加的节点:%+v", add)
for k, v := range add {
fmt.Printf("add-v,%d,%+v\n", k, v)
}
}
func TestUnique(t *testing.T) {
a := slice.New([]string{"/v1/passport/", "/v1/public/", "/v1/public/2", "/v1/public/", "/v1/public/", "/v1/public/2"})
fmt.Println(a.Unique())
}