Files
kage/clone/frontier_test.go
wehub-resource-sync 9c9576b5b9
ci / test (macos-latest) (push) Has been cancelled
ci / test (ubuntu-latest) (push) Has been cancelled
ci / lint (push) Has been cancelled
ci / govulncheck (push) Has been cancelled
ci / tidy (push) Has been cancelled
ci / webview (push) Has been cancelled
ci / windows-gui (push) Has been cancelled
release / check (push) Has been cancelled
release / release (push) Has been cancelled
Docs / build (push) Has been cancelled
Docs / deploy-pages (push) Has been cancelled
Docs / deploy-cloudflare (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-14 10:24:05 +08:00

68 lines
1.6 KiB
Go

package clone
import (
"path/filepath"
"testing"
)
func TestFrontierOfferDedups(t *testing.T) {
f := newFrontier()
if !f.offer("a") {
t.Fatal("first offer of a should be new")
}
if f.offer("a") {
t.Fatal("second offer of a should be a duplicate")
}
if !f.offer("b") {
t.Fatal("first offer of b should be new")
}
}
func TestFrontierVisited(t *testing.T) {
f := newFrontier()
if f.isVisited("x") {
t.Fatal("x should not be visited yet")
}
f.markVisited("x")
if !f.isVisited("x") {
t.Fatal("x should be visited after markVisited")
}
if f.visitedCount() != 1 {
t.Fatalf("visitedCount = %d, want 1", f.visitedCount())
}
}
func TestFrontierSaveLoadRoundTrip(t *testing.T) {
dir := t.TempDir()
path := filepath.Join(dir, "sub", "state.json")
f := newFrontier()
f.markVisited("https://example.com/")
f.markVisited("https://example.com/about")
if err := f.save(path); err != nil {
t.Fatalf("save: %v", err)
}
g := newFrontier()
if err := g.load(path); err != nil {
t.Fatalf("load: %v", err)
}
if g.visitedCount() != 2 {
t.Fatalf("loaded visitedCount = %d, want 2", g.visitedCount())
}
if !g.isVisited("https://example.com/about") {
t.Fatal("about should be visited after load")
}
// A loaded visited URL is also seen, so it is not re-offered.
if g.offer("https://example.com/about") {
t.Fatal("a loaded URL should not be offered again")
}
}
func TestFrontierLoadMissingIsNotError(t *testing.T) {
f := newFrontier()
if err := f.load(filepath.Join(t.TempDir(), "nope.json")); err != nil {
t.Fatalf("loading a missing file should be a no-op, got %v", err)
}
}