46 lines
1.2 KiB
Go
46 lines
1.2 KiB
Go
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])
|
|
}
|
|
}
|