1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
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)
}
}
}
|