refactor: game funcs moved to controller

This commit is contained in:
Ilia Denisov
2026-01-15 14:42:04 +02:00
parent fe8a8d4150
commit 16aba8435d
47 changed files with 1023 additions and 3093 deletions
+10 -30
View File
@@ -5,40 +5,19 @@ import (
"testing"
"github.com/iliadenisov/galaxy/internal/controller"
"github.com/iliadenisov/galaxy/internal/game"
e "github.com/iliadenisov/galaxy/internal/error"
"github.com/iliadenisov/galaxy/internal/game"
mg "github.com/iliadenisov/galaxy/internal/model/game"
"github.com/stretchr/testify/assert"
)
func TestCreateScience(t *testing.T) {
race := "race_01"
typeName := "First Step"
g(t, func(p func(*controller.Param), g func() *mg.Game) {
err := game.DeleteScience(p, race, typeName)
assert.ErrorContains(t, err, e.GenericErrorText(e.ErrInputEntityNotExists))
err = game.CreateScience(p, unknownRaceName, " "+typeName+" ", 1, 0, 0, 0) // TODO: test on dead race
c(t, func(p func(*controller.Param), g func() *controller.Controller) {
err := g().CreateScience(unknownRaceName, " "+typeName+" ", 1, 0, 0, 0)
assert.ErrorContains(t, err, e.GenericErrorText(e.ErrInputUnknownRace))
err = game.CreateScience(p, race, " "+typeName+" ", 1, 0, 0, 0)
assert.NoError(t, err)
sc, err := g().Sciences(race)
assert.NoError(t, err)
assert.Len(t, sc, 1)
assert.Equal(t, sc[0].Name, typeName)
assert.Equal(t, sc[0].Drive, 1.)
assert.Equal(t, sc[0].Weapons, 0.)
assert.Equal(t, sc[0].Shields, 0.)
assert.Equal(t, sc[0].Cargo, 0.)
// TODO: test delete with existing ship group
// TODO: test delete with planet production busy with science
err = game.DeleteScience(p, unknownRaceName, typeName) // TODO: test with actial rip race
err = g().DeleteScience(unknownRaceName, typeName)
assert.ErrorContains(t, err, e.GenericErrorText(e.ErrInputUnknownRace))
err = game.DeleteScience(p, race, typeName)
assert.NoError(t, err)
sc, err = g().Sciences(race)
assert.NoError(t, err)
assert.Len(t, sc, 0)
})
}
@@ -74,13 +53,14 @@ func TestCreateScienceValidation(t *testing.T) {
{typeName, 0, 0, 0, -1, e.GenericErrorText(e.ErrInputCargoValue)},
{typeName, 0, 1, 1, -1, e.GenericErrorText(e.ErrInputCargoValue)},
}
g(t, func(p func(*controller.Param), g func() *mg.Game) {
c(t, func(p func(*controller.Param), g func() *controller.Controller) {
for i, tc := range table {
if tc.err == "" {
err := game.CreateScience(p, race, tc.name+strconv.Itoa(i), tc.d, tc.w, tc.s, tc.c)
assert.NoError(t, err)
err = game.CreateScience(p, race, tc.name+strconv.Itoa(i), tc.d, tc.w, tc.s, tc.c)
assert.ErrorContains(t, err, e.GenericErrorText(e.ErrInputEntityTypeNameDuplicate))
n := tc.name + strconv.Itoa(i)
err := game.CreateScience(p, race, n, tc.d, tc.w, tc.s, tc.c)
assert.NoError(t, err, "for name=%q", n)
err = game.CreateScience(p, race, n, tc.d, tc.w, tc.s, tc.c)
assert.ErrorContains(t, err, e.GenericErrorText(e.ErrInputEntityTypeNameDuplicate), "for name=%q", n)
} else {
err := game.CreateScience(p, race, tc.name, tc.d, tc.w, tc.s, tc.c)
assert.ErrorContains(t, err, tc.err)