test: FleetSpeedAndMass
This commit is contained in:
@@ -81,7 +81,6 @@ func (c *Cache) FleetState(fleetID uuid.UUID) FleetState {
|
||||
return *fs
|
||||
}
|
||||
|
||||
// TODO: Hello! Wanna know fleet's speed? Good. Implement & test this func first.
|
||||
func (c *Cache) FleetSpeedAndMass(fi int) (float64, float64) {
|
||||
c.validateFleetIndex(fi)
|
||||
speed := math.MaxFloat64
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package controller_test
|
||||
|
||||
import (
|
||||
"math"
|
||||
"slices"
|
||||
"testing"
|
||||
|
||||
@@ -132,3 +133,45 @@ func TestJoinFleets(t *testing.T) {
|
||||
g.JoinFleets(Race_0.Name, fleetOnPlanet2, fleetTargetTwo),
|
||||
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)
|
||||
}
|
||||
|
||||
@@ -304,7 +304,7 @@ func (c *Cache) LoadCargo(ri int, groupIndex uint, ct game.CargoType, ships uint
|
||||
sgi = nsgi
|
||||
}
|
||||
capacity := c.ShipGroup(sgi).CargoCapacity(st)
|
||||
freeShipGroupCargoLoad := capacity - c.ShipGroup(sgi).Load.F()
|
||||
freeShipGroupCargoLoad := capacity - float64(c.ShipGroup(sgi).Load)
|
||||
if freeShipGroupCargoLoad == 0 {
|
||||
return e.NewCargoLoadNoSpaceLeftError()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user