chore: refresh gramsrv public release
This commit is contained in:
parent
75cebe8dbf
commit
70b6820474
1274 changed files with 378751 additions and 59919 deletions
58
internal/domain/webpage_test.go
Normal file
58
internal/domain/webpage_test.go
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
package domain
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestNormalizeWebPageURL(t *testing.T) {
|
||||
cases := []struct {
|
||||
name string
|
||||
in string
|
||||
want string
|
||||
ok bool
|
||||
}{
|
||||
{"lowercase-host-drop-fragment", "https://Example.COM/Path?q=1#frag", "https://example.com/Path?q=1", true},
|
||||
{"strip-default-http-port", "http://example.com:80/x", "http://example.com/x", true},
|
||||
{"strip-default-https-port", "https://example.com:443", "https://example.com", true},
|
||||
{"keep-nondefault-port", "http://example.com:8080/x", "http://example.com:8080/x", true},
|
||||
{"keep-query-case", "https://e.com/a?B=C", "https://e.com/a?B=C", true},
|
||||
{"reject-scheme", "ftp://example.com/x", "", false},
|
||||
{"reject-userinfo", "https://user:pass@example.com/x", "", false},
|
||||
{"reject-no-host", "https:///path", "", false},
|
||||
{"reject-plain-text", "not a url", "", false},
|
||||
{"reject-empty", " ", "", false},
|
||||
}
|
||||
for _, tc := range cases {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
got, ok := NormalizeWebPageURL(tc.in)
|
||||
if ok != tc.ok || got != tc.want {
|
||||
t.Fatalf("NormalizeWebPageURL(%q) = (%q,%v), want (%q,%v)", tc.in, got, ok, tc.want, tc.ok)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestWebPageURLHashStableAndPositive(t *testing.T) {
|
||||
const u = "https://example.com/article"
|
||||
h1 := WebPageURLHash(u)
|
||||
h2 := WebPageURLHash(u)
|
||||
if h1 != h2 {
|
||||
t.Fatalf("hash not deterministic: %d != %d", h1, h2)
|
||||
}
|
||||
if h1 < 0 {
|
||||
t.Fatalf("hash must be non-negative (used as TL id), got %d", h1)
|
||||
}
|
||||
if WebPageURLHash("https://other.example/x") == h1 {
|
||||
t.Fatalf("distinct URLs collided")
|
||||
}
|
||||
}
|
||||
|
||||
// TestNormalizeThenHashDedupes 验证规范化后等价的 URL 哈希一致(去重键稳定)。
|
||||
func TestNormalizeThenHashDedupes(t *testing.T) {
|
||||
a, _ := NormalizeWebPageURL("https://Example.com:443/x")
|
||||
b, _ := NormalizeWebPageURL("https://example.com/x")
|
||||
if a != b {
|
||||
t.Fatalf("normalized forms differ: %q vs %q", a, b)
|
||||
}
|
||||
if WebPageURLHash(a) != WebPageURLHash(b) {
|
||||
t.Fatalf("equivalent URLs hashed differently")
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue