package game_test import ( "fmt" "testing" "github.com/iliadenisov/galaxy/pkg/game" mg "github.com/iliadenisov/galaxy/pkg/model/game" "github.com/iliadenisov/galaxy/pkg/util" "github.com/stretchr/testify/assert" ) const ( testRaceCount = 20 ) func raceNum(i int) string { return fmt.Sprintf("race_%02d", i) } func TestComposeGame(t *testing.T) { g(t, func(p func(*game.Param), g func() mg.Game) { _, err := game.GenerateGame(p, []string{"r1", "r2"}) assert.Error(t, err) assert.ErrorContains(t, err, "state for turn 0 already saved") }) } func g(t *testing.T, f func(func(*game.Param), func() mg.Game)) { root, cleanup := util.CreateWorkDir(t) defer cleanup() races := make([]string, testRaceCount) for i := range testRaceCount { races[i] = raceNum(i) } p := func(p *game.Param) { p.StoragePath = root } _, err := game.GenerateGame(p, races) if err != nil { assert.FailNow(t, "g: ComposeGame", err) return } g := func() mg.Game { g, err := game.LoadState(p) if err != nil { assert.FailNow(t, "g: LoadState", err) return mg.Game{} } return g } f(p, g) }