package controller_test import ( "slices" "testing" "github.com/iliadenisov/galaxy/internal/model/game" "github.com/stretchr/testify/assert" ) func TestListMoveableGroupIds(t *testing.T) { c, g := newCache() // 1: idx = 0 / [v] Non-Fleet group assert.NoError(t, c.CreateShips(Race_0_idx, Race_0_Freighter, R0_Planet_0_num, 10)) // 2: idx = 1 / [v] In-Fleet group assert.NoError(t, c.CreateShips(Race_0_idx, Race_0_Gunship, R0_Planet_0_num, 1)) // 3: idx = 2 / [v] In-Fleet group assert.NoError(t, c.CreateShips(Race_0_idx, Race_0_Freighter, R0_Planet_0_num, 10)) assert.NoError(t, g.JoinShipGroupToFleet(Race_0.Name, "Fleet", 2, 0)) assert.NoError(t, g.JoinShipGroupToFleet(Race_0.Name, "Fleet", 3, 0)) // 4: idx = 3 / [v] In_Space assert.NoError(t, c.CreateShips(Race_0_idx, Race_0_Freighter, R0_Planet_0_num, 7)) c.ShipGroup(3).StateInSpace = &game.InSpace{ Origin: 2, Range: 31.337, } // 5: idx = 4 / [x] In_Upgrage assert.NoError(t, c.CreateShips(Race_0_idx, Race_0_Freighter, R0_Planet_0_num, 7)) c.ShipGroup(4).StateUpgrade = &game.InUpgrade{ UpgradeTech: []game.UpgradePreference{}, } // 6: idx = 5 / [v] Just launched group assert.NoError(t, c.CreateShips(Race_0_idx, Race_0_Freighter, R0_Planet_0_num, 10)) assert.NoError(t, g.SendGroup(Race_0.Name, 6, R0_Planet_2_num, 0)) movableGroups := slices.Collect(c.ListMoveableGroupIds()) assert.Len(t, movableGroups, 5) for _, i := range movableGroups { sg := c.ShipGroup(i) assert.NotEqual(t, game.StateUpgrade, sg.State()) assert.NotEqual(t, game.StateTransfer, sg.State()) // TODO: Transfer state movable or not? } }