commands A, W

This commit is contained in:
Ilia Denisov
2025-09-30 20:44:10 +03:00
parent 128d6862a7
commit 04fc96dc8f
6 changed files with 179 additions and 51 deletions
+59 -15
View File
@@ -1,26 +1,70 @@
package game_test
import (
"fmt"
"testing"
"github.com/iliadenisov/galaxy/pkg/game"
"github.com/iliadenisov/galaxy/pkg/util"
mg "github.com/iliadenisov/galaxy/pkg/model/game"
"github.com/stretchr/testify/assert"
)
func TestRelation(t *testing.T) {
root, cleanup := util.CreateWorkDir(t)
defer cleanup()
players := 20
races := make([]string, players)
for i := range players {
races[i] = fmt.Sprintf("race_%02d", i)
}
_, err := game.ComposeGame(func(p *game.Param) { p.StoragePath = root }, races)
assert.NoError(t, err)
func TestDeclarePeaceAndWarSingle(t *testing.T) {
g(t, func(f func(*game.Param), g func() mg.Game) {
hostRace := "race_05"
opponentRace := "race_01"
err = game.DeclarePeace(func(p *game.Param) { p.StoragePath = root }, "race_05", "race_01")
assert.NoError(t, err)
// TODO: check relation state changed
r, err := g().Relation(hostRace, opponentRace)
assert.NoError(t, err)
assert.Equal(t, mg.RelationWar, r.Relation)
assert.NoError(t, game.DeclarePeace(f, hostRace, opponentRace))
r, err = g().Relation(hostRace, opponentRace)
assert.NoError(t, err)
assert.Equal(t, mg.RelationPeace, r.Relation)
assert.NoError(t, game.DeclareWar(f, hostRace, opponentRace))
r, err = g().Relation(hostRace, opponentRace)
assert.NoError(t, err)
assert.Equal(t, mg.RelationWar, r.Relation)
})
}
func TestDeclarePeaceAndWarAll(t *testing.T) {
g(t, func(f func(*game.Param), g func() mg.Game) {
hostRace := "race_07"
for i := range testRaceCount {
opponentRace := raceNum(i)
if opponentRace == hostRace {
continue
}
r, err := g().Relation(hostRace, opponentRace)
assert.NoError(t, err)
assert.Equal(t, mg.RelationWar, r.Relation)
}
assert.NoError(t, game.DeclarePeace(f, hostRace, hostRace))
for i := range testRaceCount {
opponentRace := raceNum(i)
if opponentRace == hostRace {
continue
}
r, err := g().Relation(hostRace, opponentRace)
assert.NoError(t, err)
assert.Equal(t, mg.RelationPeace, r.Relation)
}
assert.NoError(t, game.DeclareWar(f, hostRace, hostRace))
for i := range testRaceCount {
opponentRace := raceNum(i)
if opponentRace == hostRace {
continue
}
r, err := g().Relation(hostRace, opponentRace)
assert.NoError(t, err)
assert.Equal(t, mg.RelationWar, r.Relation)
}
})
}