test: FleetSpeedAndMass
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
}
|
||||||
|
|||||||
@@ -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()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user