52 lines
1.1 KiB
Go
52 lines
1.1 KiB
Go
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(p func(*game.Param), g 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)
|
|
}
|