42 lines
1.1 KiB
Go
42 lines
1.1 KiB
Go
package sensitive
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestFoldAndMatch(t *testing.T) {
|
|
m := Build([]Entry{{ID: 1, Word: FoldWord("赌博")}})
|
|
matches, masked, ok := ScanText(m, "今晚赌博")
|
|
if !ok || len(matches) != 1 || masked == "今晚赌博" {
|
|
t.Fatalf("match %+v masked=%q ok=%v", matches, masked, ok)
|
|
}
|
|
if masked != "今晚***" {
|
|
t.Fatalf("masked=%q", masked)
|
|
}
|
|
matches, _, ok = ScanText(m, "今晚赌 博啊")
|
|
if !ok || len(matches) != 1 {
|
|
t.Fatalf("spaced %+v", matches)
|
|
}
|
|
matches, _, ok = ScanText(m, "赌\u200b博")
|
|
if !ok || len(matches) != 1 {
|
|
t.Fatalf("zwsp %+v", matches)
|
|
}
|
|
m2 := Build([]Entry{{ID: 2, Word: FoldWord("casino")}})
|
|
matches, _, ok = ScanText(m2, "Casino")
|
|
if !ok || len(matches) != 1 {
|
|
t.Fatalf("case %+v", matches)
|
|
}
|
|
matches, _, _ = ScanText(m, "你好")
|
|
if len(matches) != 0 {
|
|
t.Fatalf("no hit %+v", matches)
|
|
}
|
|
}
|
|
|
|
func TestAssInClass(t *testing.T) {
|
|
m := Build([]Entry{{ID: 1, Word: FoldWord("ass")}})
|
|
matches, _, ok := ScanText(m, "class")
|
|
if !ok || len(matches) != 1 {
|
|
t.Fatalf("expected substring hit %+v", matches)
|
|
}
|
|
}
|