package bible import "testing" func TestResolveBook(t *testing.T) { cases := []struct{ in, want string }{ {"John", "John"}, {"Joh", "John"}, // English prefix {"J", "John"}, // Polish abbrev — NOT Joshua {"Łk", "Luke"}, {"1 Kor", "1 Corinthians"}, {"Jana", "John"}, {"Rodzaju", "Genesis"}, {"Mdr", "Wisdom"}, {"Pnp", "Song of Solomon"}, {"Dz", "The Acts"}, } for _, c := range cases { if got, ok := ResolveBook(c.in); !ok || got != c.want { t.Errorf("ResolveBook(%q)=%q,%v want %q", c.in, got, ok, c.want) } } if _, ok := ResolveBook("Nonsense"); ok { t.Error("ResolveBook(Nonsense) should fail") } } func TestBooksTableIntegrity(t *testing.T) { if len(canonOrder) != len(aliasSeed) { t.Fatalf("canonOrder has %d names, aliasSeed has %d", len(canonOrder), len(aliasSeed)) } seen := map[string]bool{} for _, name := range canonOrder { if seen[name] { t.Errorf("canonOrder duplicate %q", name) } seen[name] = true a, ok := aliasSeed[name] if !ok { t.Errorf("canonOrder name %q missing from aliasSeed", name) continue } if len(a) < 2 { t.Errorf("book %q has %d aliases, need >=2 (abbrev, pl-name)", name, len(a)) } } for name := range aliasSeed { if !seen[name] { t.Errorf("aliasSeed name %q missing from canonOrder", name) } } }