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