test: player base report

This commit is contained in:
Ilia Denisov
2026-02-06 19:53:28 +02:00
parent 93baafe2a0
commit ec8b494a5b
3 changed files with 44 additions and 4 deletions
-1
View File
@@ -263,7 +263,6 @@ func (c *Cache) FleetIndex(ID uuid.UUID) (int, bool) {
} }
} }
// TODO: rename / [fleetIndex]
func (c *Cache) MustFleetIndex(ID uuid.UUID) int { func (c *Cache) MustFleetIndex(ID uuid.UUID) int {
if v, ok := c.FleetIndex(ID); ok { if v, ok := c.FleetIndex(ID); ok {
return v return v
+1 -3
View File
@@ -109,19 +109,17 @@ func (c *Cache) ReportRace(ri int, rep *mr.Report, battles []*mr.BattleReport, b
rep.RaceID = r.ID rep.RaceID = r.ID
// votes based on population // votes based on population
// TODO: check vote values was previously calculated
rep.Votes = mr.F(r.Votes.F()) rep.Votes = mr.F(r.Votes.F())
// relations // relations
for i := range r.Relations { for i := range r.Relations {
rii := slices.IndexFunc(rep.Player, func(v mr.Player) bool { return v.ID == r.Relations[i].RaceID }) rii := slices.IndexFunc(rep.Player, func(v mr.Player) bool { return v.ID == r.Relations[i].RaceID })
if rii < 0 { if rii < 0 {
panic(fmt.Sprintf("relation race not found, id=%v", r.Relations[i].RaceID)) panic(fmt.Sprintf("opponent race for relation not found, id=%v", r.Relations[i].RaceID))
} }
rep.Player[rii].Relation = r.Relations[i].Relation.String() rep.Player[rii].Relation = r.Relations[i].Relation.String()
} }
// self-relation is undefined // self-relation is undefined
if i := slices.IndexFunc(rep.Player, func(v mr.Player) bool { return v.ID == r.ID }); i < 0 { if i := slices.IndexFunc(rep.Player, func(v mr.Player) bool { return v.ID == r.ID }); i < 0 {
panic(fmt.Sprintf("race not found in report, id=%v", r.ID)) panic(fmt.Sprintf("race not found in report, id=%v", r.ID))
} else { } else {
+43
View File
@@ -8,6 +8,49 @@ import (
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
func TestReportRace(t *testing.T) {
c, _ := newCache()
c.TurnCalculateVotes()
rep := c.InitReport(2)
assert.Equal(t, 2, int(rep.Turn))
c.ReportRace(Race_0_idx, rep, nil, nil)
assert.Equal(t, Race_0.Name, rep.Race)
assert.Equal(t, Race_0.ID, rep.RaceID)
assert.Equal(t, 0.1, float64(rep.Votes))
for i := range rep.Player {
p := &rep.Player[i]
switch p.ID {
case Race_0_ID:
assert.Equal(t, Race_0.Name, p.Name)
assert.Equal(t, 1.1, float64(p.Drive))
assert.Equal(t, 1.2, float64(p.Weapons))
assert.Equal(t, 1.3, float64(p.Shields))
assert.Equal(t, 1.4, float64(p.Cargo))
assert.Equal(t, 100., float64(p.Population))
assert.Equal(t, 100., float64(p.Industry))
assert.Equal(t, 2, int(p.Planets))
assert.Equal(t, 0.1, float64(p.Votes))
assert.Equal(t, "-", p.Relation)
case Race_1_ID:
assert.Equal(t, Race_1.Name, p.Name)
assert.Equal(t, 2.1, float64(p.Drive))
assert.Equal(t, 2.2, float64(p.Weapons))
assert.Equal(t, 2.3, float64(p.Shields))
assert.Equal(t, 2.4, float64(p.Cargo))
assert.Equal(t, 0., float64(p.Population))
assert.Equal(t, 0., float64(p.Industry))
assert.Equal(t, 1, int(p.Planets))
assert.Equal(t, 0., float64(p.Votes))
assert.Equal(t, "War", p.Relation)
}
}
}
func TestReportLocalShipClass(t *testing.T) { func TestReportLocalShipClass(t *testing.T) {
c, _ := newCache() c, _ := newCache()