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
68 lines
1.6 KiB
Go
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)
|
|
}
|
|
}
|