race quit, transfer state, refactor

This commit is contained in:
Ilia Denisov
2026-02-07 01:59:11 +02:00
parent 43ba5eb07c
commit fc73cbf83a
27 changed files with 520 additions and 341 deletions
+31 -9
View File
@@ -1,6 +1,7 @@
package controller_test
import (
"fmt"
"slices"
"testing"
@@ -159,7 +160,7 @@ func TestBreakGroup(t *testing.T) {
assert.Nil(t, c.ShipGroup(3).FleetID)
}
func TestGiveawayGroup(t *testing.T) {
func TestTransferGroup(t *testing.T) {
c, g := newCache()
assert.NoError(t, c.CreateShips(Race_0_idx, ShipType_Cruiser, R0_Planet_0_num, 11)) // group #1 (0)
assert.NoError(t, c.CreateShips(Race_1_idx, ShipType_Cruiser, R1_Planet_1_num, 23)) // group #1 (1)
@@ -178,25 +179,25 @@ func TestGiveawayGroup(t *testing.T) {
assert.Len(t, slices.Collect(c.RaceShipGroups(Race_1_idx)), 1)
assert.ErrorContains(t,
g.GiveawayGroup("UnknownRace", Race_1.Name, 2, 0),
g.TransferGroup("UnknownRace", Race_1.Name, 2, 0),
e.GenericErrorText(e.ErrInputUnknownRace))
assert.ErrorContains(t,
g.GiveawayGroup(Race_0.Name, "UnknownRace", 2, 0),
g.TransferGroup(Race_0.Name, "UnknownRace", 2, 0),
e.GenericErrorText(e.ErrInputUnknownRace))
assert.ErrorContains(t,
g.GiveawayGroup(Race_0.Name, Race_0.Name, 2, 0),
g.TransferGroup(Race_0.Name, Race_0.Name, 2, 0),
e.GenericErrorText(e.ErrInputSameRace))
assert.ErrorContains(t,
g.GiveawayGroup(Race_0.Name, Race_1.Name, 555, 0),
g.TransferGroup(Race_0.Name, Race_1.Name, 555, 0),
e.GenericErrorText(e.ErrInputEntityNotExists))
assert.ErrorContains(t,
g.GiveawayGroup(Race_0.Name, Race_1.Name, 2, 18),
g.TransferGroup(Race_0.Name, Race_1.Name, 2, 18),
e.GenericErrorText(e.ErrBeakGroupNumberNotEnough))
assert.ErrorContains(t,
g.GiveawayGroup(Race_0.Name, Race_1.Name, 1, 0),
g.TransferGroup(Race_0.Name, Race_1.Name, 1, 0),
e.GenericErrorText(e.ErrGiveawayGroupShipsTypeNotEqual))
assert.NoError(t, g.GiveawayGroup(Race_0.Name, Race_1.Name, 2, 11)) // group #2 (3)
assert.NoError(t, g.TransferGroup(Race_0.Name, Race_1.Name, 2, 11)) // group #2 (3)
assert.Len(t, slices.Collect(c.RaceShipGroups(Race_0_idx)), 2)
assert.Len(t, slices.Collect(c.RaceShipGroups(Race_1_idx)), 2)
@@ -216,14 +217,31 @@ func TestGiveawayGroup(t *testing.T) {
assert.Equal(t, c.ShipGroup(2).Destination, c.ShipGroup(3).Destination)
assert.Equal(t, c.ShipGroup(2).StateInSpace, c.ShipGroup(3).StateInSpace)
assert.Equal(t, c.ShipGroup(2).StateUpgrade, c.ShipGroup(3).StateUpgrade)
assert.Equal(t, c.ShipGroup(2).StateTransfer, c.ShipGroup(3).StateTransfer)
assert.Equal(t, c.ShipGroup(3).OwnerID, Race_1_ID)
assert.Equal(t, c.ShipGroup(3).TypeID, c.MustShipClass(Race_1_idx, Race_0_Gunship).ID)
assert.Equal(t, c.ShipGroup(3).Number, uint(11))
assert.Nil(t, c.ShipGroup(3).FleetID)
assert.NoError(t, g.GiveawayGroup(Race_1.Name, Race_0.Name, 2, 11))
assert.NoError(t, g.TransferGroup(Race_1.Name, Race_0.Name, 2, 11))
assert.Len(t, slices.Collect(c.RaceShipGroups(Race_0_idx)), 3)
assert.Len(t, slices.Collect(c.RaceShipGroups(Race_1_idx)), 1)
assert.NoError(t, c.CreateShips(Race_0_idx, Race_0_Gunship, R0_Planet_0_num, 1))
assert.Len(t, slices.Collect(c.RaceShipGroups(Race_0_idx)), 4)
assert.Equal(t, game.StateInOrbit, c.ShipGroup(4).State())
assert.NoError(t, g.SendGroup(Race_0.Name, c.ShipGroup(4).Index, R0_Planet_2_num, 0))
assert.Equal(t, game.StateLaunched, c.ShipGroup(4).State())
assert.Equal(t, c.ShipGroup(4).OwnerID, Race_0_ID)
assert.NoError(t, g.TransferGroup(Race_0.Name, Race_1.Name, c.ShipGroup(4).Index, 0))
assert.Len(t, slices.Collect(c.RaceShipGroups(Race_0_idx)), 3)
assert.Len(t, slices.Collect(c.RaceShipGroups(Race_1_idx)), 2)
assert.Equal(t, game.StateTransfer, c.ShipGroup(4).State())
assert.Equal(t, c.ShipGroup(4).OwnerID, Race_1_ID)
assert.ErrorContains(t,
g.TransferGroup(Race_1.Name, Race_0.Name, c.ShipGroup(4).Index, 0),
e.GenericErrorText(e.ErrShipsBusy))
}
func TestLoadCargo(t *testing.T) {
@@ -540,3 +558,7 @@ func TestShipGroupDestroyItem(t *testing.T) {
assert.Equal(t, float64(c.ShipGroup(0).Number)*10, c.ShipGroup(0).Load.F())
}
}
func TestState(t *testing.T) {
assert.Equal(t, "In_Orbit", fmt.Sprintf("%s", game.StateInOrbit))
}