spark-server/internal/pkg/sensitive/sensitive_test.go
2026-09-29 16:37:36 +08:00

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)
}
}