test: FleetSpeedAndMass

This commit is contained in:
IliaDenisov
2026-02-06 19:52:47 +03:00
parent 3dd0440832
commit 93baafe2a0
3 changed files with 44 additions and 2 deletions
-1
View File
@@ -81,7 +81,6 @@ func (c *Cache) FleetState(fleetID uuid.UUID) FleetState {
return *fs return *fs
} }
// TODO: Hello! Wanna know fleet's speed? Good. Implement & test this func first.
func (c *Cache) FleetSpeedAndMass(fi int) (float64, float64) { func (c *Cache) FleetSpeedAndMass(fi int) (float64, float64) {
c.validateFleetIndex(fi) c.validateFleetIndex(fi)
speed := math.MaxFloat64 speed := math.MaxFloat64
+43
View File
@@ -1,6 +1,7 @@
package controller_test package controller_test
import ( import (
"math"
"slices" "slices"
"testing" "testing"
@@ -132,3 +133,45 @@ func TestJoinFleets(t *testing.T) {
g.JoinFleets(Race_0.Name, fleetOnPlanet2, fleetTargetTwo), g.JoinFleets(Race_0.Name, fleetOnPlanet2, fleetTargetTwo),
e.GenericErrorText(e.ErrShipsNotOnSamePlanet)) e.GenericErrorText(e.ErrShipsNotOnSamePlanet))
} }
func TestFleetSpeedAndMass(t *testing.T) {
c, g := newCache()
c.MustPlanet(R0_Planet_0_num).Material = 100.
c.MustPlanet(R0_Planet_0_num).Capital = 100.
fleet := "Fleet"
var speed, mass float64
assert.NoError(t, c.CreateShips(Race_0_idx, Race_0_Gunship, R0_Planet_0_num, 3)) // 1
s := c.ShipGroup(0).Speed(c.MustShipClass(Race_0_idx, Race_0_Gunship))
m := c.ShipGroup(0).FullMass(c.MustShipClass(Race_0_idx, Race_0_Gunship))
assert.NoError(t, c.CreateShips(Race_0_idx, Race_0_Freighter, R0_Planet_0_num, 5)) // 2
assert.NoError(t, g.LoadCargo(Race_0.Name, 2, "MAT", 10., 0))
assert.NoError(t, c.CreateShips(Race_0_idx, Race_0_Freighter, R0_Planet_0_num, 7)) // 3
assert.NoError(t, g.LoadCargo(Race_0.Name, 3, "CAP", 10., 0))
assert.NoError(t, g.JoinShipGroupToFleet(Race_0.Name, fleet, 1, 0))
fleetIndex := 0
speed, mass = c.FleetSpeedAndMass(fleetIndex)
assert.Equal(t, s, speed)
assert.Equal(t, m, mass)
s = math.Min(s, c.ShipGroup(1).Speed(c.MustShipClass(Race_0_idx, Race_0_Freighter)))
m += c.ShipGroup(1).FullMass(c.MustShipClass(Race_0_idx, Race_0_Freighter))
assert.NoError(t, g.JoinShipGroupToFleet(Race_0.Name, fleet, 2, 0))
speed, mass = c.FleetSpeedAndMass(fleetIndex)
assert.Equal(t, s, speed)
assert.Equal(t, m, mass)
s = math.Min(s, c.ShipGroup(2).Speed(c.MustShipClass(Race_0_idx, Race_0_Freighter)))
m += c.ShipGroup(2).FullMass(c.MustShipClass(Race_0_idx, Race_0_Freighter))
assert.NoError(t, g.JoinShipGroupToFleet(Race_0.Name, fleet, 3, 0))
speed, mass = c.FleetSpeedAndMass(fleetIndex)
assert.Equal(t, s, speed)
assert.Equal(t, m, mass)
}
+1 -1
View File
@@ -304,7 +304,7 @@ func (c *Cache) LoadCargo(ri int, groupIndex uint, ct game.CargoType, ships uint
sgi = nsgi sgi = nsgi
} }
capacity := c.ShipGroup(sgi).CargoCapacity(st) capacity := c.ShipGroup(sgi).CargoCapacity(st)
freeShipGroupCargoLoad := capacity - c.ShipGroup(sgi).Load.F() freeShipGroupCargoLoad := capacity - float64(c.ShipGroup(sgi).Load)
if freeShipGroupCargoLoad == 0 { if freeShipGroupCargoLoad == 0 {
return e.NewCargoLoadNoSpaceLeftError() return e.NewCargoLoadNoSpaceLeftError()
} }