alexatop/alexatop_test.go

79 lines
1.5 KiB
Go

package alexatop
import (
"testing"
)
func TestFetchAlexaTop1M(t *testing.T) {
urls, err := FetchAlexaTop1M()
if err != nil {
t.Fatalf("Expected no error, got %v", err)
}
if len(urls) < 700_000 {
t.Fatalf("Expected at least 700,000 URLs, got %d", len(urls))
}
}
func TestRandomSite(t *testing.T) {
site, err := RandomSite()
if err != nil {
t.Fatalf("Expected no error, got %v", err)
}
if site == "" {
t.Fatalf("Expected a valid URL, got an empty string")
}
}
func TestNthSite(t *testing.T) {
urls, err := FetchAlexaTop1M()
if err != nil {
t.Fatalf("Expected no error, got %v", err)
}
site, err := NthSite(99)
if err != nil {
t.Fatalf("Expected no error, got %v", err)
}
if site != urls[99] {
t.Fatalf("Expected %s, got %s", urls[99], site)
}
_, err = NthSite(len(urls))
if err == nil {
t.Fatalf("Expected error for out-of-range index, got none")
}
}
func TestRandomSites(t *testing.T) {
n := 5
randomSites, err := RandomSites(n)
if err != nil {
t.Fatalf("Expected no error, got %v", err)
}
if len(randomSites) != n {
t.Fatalf("Expected %d random sites, got %d", n, len(randomSites))
}
for _, site := range randomSites {
if site == "" {
t.Fatalf("Expected a valid URL, got an empty string")
}
}
}
func TestRandomSitesMoreThanAvailable(t *testing.T) {
urls, err := FetchAlexaTop1M()
if err != nil {
t.Fatalf("Expected no error, got %v", err)
}
_, err = RandomSites(len(urls) + 1)
if err == nil {
t.Fatalf("Expected error for requesting more sites than available, got none")
}
}