package index
import "testing"
func TestLandsOnWalksOpenLandingsToAPlainBranch(t *testing.T) {
ls := []LandingSummary{
{ID: "a", Branch: "a", Target: "trunk", State: "open"},
{ID: "b", Branch: "b", Target: "a", State: "open"},
{ID: "c", Branch: "c", Target: "b", State: "open"},
{ID: "d", Branch: "d", Target: "trunk", State: "accepted"},
}
dest, through, ok := LandsOn(ls, "c")
if !ok || dest != "trunk" || len(through) != 3 || through[0] != "c" || through[2] != "a" {
t.Fatalf("LandsOn(c) = %q %v %v", dest, through, ok)
}
if dest, through, ok := LandsOn(ls, "d"); !ok || dest != "d" || len(through) != 0 {
t.Fatalf("a settled landing's branch is plain: %q %v %v", dest, through, ok)
}
if dest, _, ok := LandsOn(ls, "trunk"); !ok || dest != "trunk" {
t.Fatalf("LandsOn(trunk) = %q %v", dest, ok)
}
ls[0].Target = "c" // a -> c -> b -> a
if _, _, ok := LandsOn(ls, "b"); ok {
t.Fatal("a cycle reads as ok")
}
}