cmd: merge ship types

This commit is contained in:
Ilia Denisov
2025-10-02 23:22:44 +03:00
parent cafdd10bab
commit 33efa86065
5 changed files with 109 additions and 0 deletions
+16
View File
@@ -18,6 +18,22 @@ func createShipType(r Repo, g game.Game, race, typeName string, d, w, s, c float
return r.SaveState(g)
}
func MergeShipType(configure func(*Param), race, source, target string) (err error) {
control(configure, func(c *ctrl) {
c.execute(func(r Repo, g game.Game) {
err = mergeShipType(r, g, race, source, target)
})
})
return
}
func mergeShipType(r Repo, g game.Game, race, source, target string) error {
if err := g.MergeShipType(race, source, target); err != nil {
return err
}
return r.SaveState(g)
}
func DeleteShipType(configure func(*Param), race, typeName string) (err error) {
control(configure, func(c *ctrl) {
c.execute(func(r Repo, g game.Game) {
+24
View File
@@ -91,3 +91,27 @@ func TestCreateShipTypeValidation(t *testing.T) {
}
})
}
func TestMergeShipType(t *testing.T) {
race := "race_01"
g(t, func(p func(*game.Param), g func() mg.Game) {
err := game.CreateShipType(p, race, "Drone", 1, 0, 0, 0, 0)
assert.NoError(t, err)
err = game.CreateShipType(p, race, "Spy", 1, 0, 0, 0, 0)
assert.NoError(t, err)
err = game.CreateShipType(p, race, "Cruiser", 15, 15, 15, 0, 1)
assert.NoError(t, err)
err = game.MergeShipType(p, race, "Sky", "Drone")
assert.ErrorContains(t, err, e.GenericErrorText(e.ErrInputEntityNotExists))
err = game.MergeShipType(p, race, "Spy", "Freighter")
assert.ErrorContains(t, err, e.GenericErrorText(e.ErrInputEntityNotExists))
err = game.MergeShipType(p, race, "Spy", "Drone")
assert.NoError(t, err)
st, err := g().ShipTypes(race)
assert.NoError(t, err)
assert.Len(t, st, 2)
err = game.MergeShipType(p, race, "Drone", "Cruiser")
assert.ErrorContains(t, err, e.GenericErrorText(e.ErrMergeShipTypeNotEqual))
// TODO: test group/production changed
})
}