Files
galaxy-game/pkg/generator/generator_test.go
T
2025-09-23 23:33:47 +03:00

48 lines
1.4 KiB
Go

package generator_test
import (
"fmt"
"testing"
"github.com/iliadenisov/galaxy/pkg/generator"
"github.com/stretchr/testify/assert"
)
func TestGenerator(t *testing.T) {
for players := 10; players <= 50; players++ {
var s generator.MapSetting
m, err := generator.Generate(func(ms *generator.MapSetting) {
ms.Players = uint32(players)
s = *ms
})
if err != nil {
t.Errorf("generate: %s", err)
break
}
assert.Equal(t, players, len(m.HomePlanets), "hw count")
for i := range m.HomePlanets {
assert.Equal(t, int(s.DWCount), len(m.HomePlanets[i].DW), "hw #%d: dw count", i)
for dw := range m.HomePlanets[i].DW {
d := m.ShortDistance(m.HomePlanets[i].HW.Position, m.HomePlanets[i].DW[dw].Position)
assert.LessOrEqualf(t, float64(s.DWMinDistance), d, "HW[%.04f,%04f] - DW[%.04f,%04f]",
m.HomePlanets[i].HW.Position.X, m.HomePlanets[i].HW.Position.Y, m.HomePlanets[i].DW[dw].Position.X, m.HomePlanets[i].DW[dw].Position.Y)
assert.GreaterOrEqualf(t, float64(s.DWMaxDistance), d, "HW[%.04f,%04f] - DW[%.04f,%04f]",
m.HomePlanets[i].HW.Position.X, m.HomePlanets[i].HW.Position.Y, m.HomePlanets[i].DW[dw].Position.X, m.HomePlanets[i].DW[dw].Position.Y)
}
}
}
}
func BenchmarkGenerator(b *testing.B) {
i := 0
for b.Loop() {
i++
b.Run(fmt.Sprintf("instance #%02d", i), func(b *testing.B) {
_, err := generator.Generate()
if err != nil {
b.Error(err)
}
})
}
}