45 lines
1.0 KiB
Go
45 lines
1.0 KiB
Go
package handler
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestSanitizeLinkTagLabel(t *testing.T) {
|
|
cases := []struct {
|
|
in, want string
|
|
}{
|
|
{"碎片时间」。", "碎片时间"},
|
|
{"碎片时间」小", "碎片时间」小"},
|
|
{"碎片时间", "碎片时间"},
|
|
}
|
|
for _, c := range cases {
|
|
got := sanitizeLinkTagLabel(c.in)
|
|
if got != c.want {
|
|
t.Errorf("sanitizeLinkTagLabel(%q) = %q, want %q", c.in, got, c.want)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestLinkTagRegex_StopsBeforePunctuation(t *testing.T) {
|
|
s := `正文#碎片时间」。继续`
|
|
m := linkTagPlainTextRe.FindStringSubmatch(s)
|
|
if m == nil || len(m) < 2 {
|
|
t.Fatal("expected match")
|
|
}
|
|
if m[1] != "碎片时间" {
|
|
t.Fatalf("captured label = %q, want 碎片时间", m[1])
|
|
}
|
|
if strings.Contains(m[0], "。") {
|
|
t.Fatalf("match should not include 。: %q", m[0])
|
|
}
|
|
}
|
|
|
|
func TestLinkTagRegex_SpaceBreaksTag(t *testing.T) {
|
|
s := `#碎片时间」小 程序`
|
|
m := linkTagPlainTextRe.FindStringSubmatch(s)
|
|
if m == nil || m[1] != "碎片时间" {
|
|
t.Fatalf("got %v", m)
|
|
}
|
|
}
|