48 lines
1.4 KiB
Go
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)
|
|
}
|
|
})
|
|
}
|
|
}
|