package bible import "testing" func TestOFRef(t *testing.T) { cases := []struct { name string citation string system string want string }{ // Non-psalms pass through unchanged in every system. {"gospel-vulgate", "Matthew 4:12-23", "vulgate", "Matthew 4:12-23"}, {"gospel-drb", "Matthew 4:12-23", "drb", "Matthew 4:12-23"}, {"epistle-hebrew", "1 Corinthians 1:10-13,17", "hebrew", "1 Corinthians 1:10-13,17"}, // Psalm chapter shift for the Vulgate family (Hebrew -> Vulgate). {"ps27-vulgate", "Psalms 27:1,4,13-14", "vulgate", "Psalms 26:1,4,13-14"}, {"ps27-drb", "Psalms 27:1,4,13-14", "drb", "Psalms 27:1,4,13-14"}, // Ps 27 has no DRB title fold {"ps27-hebrew", "Psalms 27:1,4,13-14", "hebrew", "Psalms 27:1,4,13-14"}, // Verse-accurate Hebrew->Vulgate mapping, including the joined/split psalms. {"ps8-vulgate", "Psalms 8:2", "vulgate", "Psalms 8:2"}, // <=8 unchanged {"ps9-vulgate", "Psalms 9:2", "vulgate", "Psalms 9:2"}, // Heb 9 = Vulg 9 {"ps10-vulgate", "Psalms 10:1", "vulgate", "Psalms 9:22"}, // Heb 10:1 = Vulg 9:22 {"ps11-vulgate", "Psalms 11:1", "vulgate", "Psalms 10:1"}, // 11..113 -> h-1 {"ps115-vulgate", "Psalms 115:1", "vulgate", "Psalms 113:9"}, // Heb 115:1 = Vulg 113:9 {"ps116a-vulgate", "Psalms 116:1-9", "vulgate", "Psalms 114:1-9"}, {"ps116b-vulgate", "Psalms 116:12-13,17-18", "vulgate", "Psalms 115:3-4,8-9"}, {"ps147a-vulgate", "Psalms 147:1-11", "vulgate", "Psalms 146:1-11"}, {"ps147b-vulgate", "Psalms 147:12-13,19-20", "vulgate", "Psalms 147:1-2,8-9"}, {"ps148-vulgate", "Psalms 148:1", "vulgate", "Psalms 148:1"}, // >=148 unchanged // DRB title-fold verse shift: Ps 51 folds 2 title verses into verse 1. {"ps51-drb", "Psalms 51:3-4,12-13", "drb", "Psalms 51:1-2,10-11"}, {"ps51-vulgate", "Psalms 51:3-4", "vulgate", "Psalms 50:3-4"}, // Ps 63 folds 1 title verse. {"ps63-drb", "Psalms 63:2,3-4", "drb", "Psalms 63:1,2-3"}, // Tail normalization: sub-verse letters dropped, ";" -> ",". {"verseletter-2sam", "2 Samuel 6:12b-15,17-19", "vulgate", "2 Samuel 6:12-15,17-19"}, {"semicolon-acts", "The Acts 11:21b-26;13:1-3", "drb", "The Acts 11:21-26,13:1-3"}, {"multiletter-psalm-drb", "Psalms 98:1,2-3ab,3cd-4,5-6", "drb", "Psalms 98:1,2-3,3-4,5-6"}, {"multiletter-psalm-vulgate", "Psalms 98:1,2-3ab,3cd-4,5-6", "vulgate", "Psalms 97:1,2-3,3-4,5-6"}, } for _, c := range cases { t.Run(c.name, func(t *testing.T) { if got := OFRef(c.citation, c.system); got != c.want { t.Errorf("OFRef(%q, %q) = %q, want %q", c.citation, c.system, got, c.want) } }) } }