package domain import "testing" func TestSingleEliminationAdvancement(t *testing.T) { tr, err := NewTournament("cup", "event", "Night Cup", []string{"a", "b", "c", "d"}) if err != nil { t.Fatal(err) } tr.Rounds[0][0].WinnerTeamID = "a" if err := tr.Advance(0, 0); err != nil { t.Fatal(err) } tr.Rounds[0][1].WinnerTeamID = "d" if err := tr.Advance(0, 1); err != nil { t.Fatal(err) } if got := tr.Rounds[1][0]; got.TeamAID != "a" || got.TeamBID != "d" { t.Fatalf("unexpected final: %+v", got) } tr.Rounds[1][0].WinnerTeamID = "d" if err := tr.Advance(1, 0); err != nil { t.Fatal(err) } if tr.WinnerTeamID != "d" { t.Fatalf("winner = %q", tr.WinnerTeamID) } } func TestTournamentCreatesByeForNonPowerOfTwo(t *testing.T) { tr, err := NewTournament("cup", "event", "Cup", []string{"a", "b", "c"}) if err != nil { t.Fatal(err) } if len(tr.Rounds) != 2 || len(tr.Rounds[0]) != 2 { t.Fatalf("unexpected bracket shape: %+v", tr.Rounds) } bye := tr.Rounds[0][1] if bye.TeamAID != "b" || bye.TeamBID != "" || bye.WinnerTeamID != "b" { t.Fatalf("unexpected bye: %+v", bye) } if tr.Rounds[1][0].TeamBID != "b" { t.Fatalf("bye was not advanced: %+v", tr.Rounds[1][0]) } }