Files
mixmaker/backend/internal/domain/tournament_test.go
lemintare 1239fcee08
Some checks failed
CI / backend (push) Has been cancelled
CI / frontend (push) Has been cancelled
CI / compose (push) Has been cancelled
Initialize project with basic structure, including Docker configuration, backend and frontend setup, environment configuration, and essential files for development.
2026-07-19 00:17:31 +03:00

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])
}
}