-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgofilter_test.go
126 lines (104 loc) · 2.56 KB
/
gofilter_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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
package gofilter
import (
"fmt"
"runtime/debug"
"testing"
. "github.com/smartystreets/goconvey/convey"
)
type Point struct {
X int
Y int
}
func TestPrintStack(t *testing.T) {
defer func() {
if err := recover(); err != nil {
bin := string(debug.Stack())
fmt.Println("TestPrintStack")
fmt.Println(bin)
}
}()
value := 111
zero := 0
value = value / zero
}
func TestCopy(t *testing.T) {
defer fmt.Println("defer1")
defer fmt.Println("defer2")
points := []Point{}
for i := 0; i < 5; i++ {
defer func() { fmt.Println("i:%v", i) }()
}
for i := 0; i < 5; i++ {
if i%2 == 0 {
defer fmt.Println("append i:%v", i)
}
points = append(points, Point{X: i, Y: i * i})
}
{
defer fmt.Println("defer3")
defer fmt.Println("defer4")
newP := Point{X: 6, Y: 6 * 6}
i := 0
points = append(points, newP)
copy(points[i+1:len(points)], points[i:len(points)-1])
points[i] = newP
fmt.Println("TestCopy1:%v", points)
}
defer fmt.Println("defer5")
fmt.Println("TestCopy2:%v", points)
}
func TestStringSet(t *testing.T) {
set := StringSet{}
set.Add([]byte("abc"))
set.Add([]byte("efg"))
b1 := set.Contains([]byte("abc"))
b2 := set.Contains([]byte("xd"))
Convey("gofilter test", t, func() {
Convey("TestStringSet", func() {
So(b1, ShouldEqual, true)
So(b2, ShouldEqual, false)
})
})
}
func TestTrieFilter(t *testing.T) {
filter := TrieFilter{}
filter.SetFilter(true)
filter.LoadMaskFile("maskWord.txt")
filter.AddKey("abc")
filter.AddKey("efg")
i, r := filter.Replace([]byte("zzeeabcdefgeffgabc"), byte('*'))
allr := filter.FindAll([]byte("zzeeabcdefgeffgabc"))
Convey("gofilter test", t, func() {
Convey("TestTrieFilter", func() {
So(i, ShouldEqual, 3)
So(string(r), ShouldEqual, "zzee*d*effg*")
So(len(allr), ShouldEqual, 3)
})
})
}
func TestTrieFilterLoad(t *testing.T) {
filter := TrieFilter{}
filter.SetFilter(true)
filter.LoadMaskFile("maskWord.txt")
i, r := filter.Replace([]byte("zzeeab毛泽东cdef占领中环geffgabc"), byte('*'))
Convey("gofilter test", t, func() {
Convey("TestTrieFilterLoad", func() {
So(i, ShouldEqual, 2)
So(string(r), ShouldEqual, "zzeeab*cdef*geffgabc")
})
})
}
func TestTrieFilterFile(t *testing.T) {
LoadMaskWordFile("maskWord.txt")
LoadMaskNameFile("maskSpecial.txt")
t1 := "Subject: TestSelectRandomAttribute"
p1 := ReplaceBadWord(t1)
t2 := "zzeeab毛泽东cdef占领中环geffgabc"
p2 := ReplaceBadWord(t2)
Convey("gofilter test", t, func() {
Convey("TestTrieFilterFile", func() {
So(t1, ShouldEqual, p1)
So(p2, ShouldEqual, "zzeeab*cdef*geffgabc")
})
})
}