76 lines
3 KiB
Go
76 lines
3 KiB
Go
package main
|
|
|
|
import "testing"
|
|
|
|
func TestGenerateSystemIsDeterministic(t *testing.T) {
|
|
id := WayfarerSystemID{Galaxy: 1, Index: 42}
|
|
a := GenerateSystem(id)
|
|
b := GenerateSystem(id)
|
|
if a != b {
|
|
t.Fatalf("одна и та же система должна давать одинаковый результат: %+v vs %+v", a, b)
|
|
}
|
|
}
|
|
|
|
func TestGenerateSystemDiffersByID(t *testing.T) {
|
|
a := GenerateSystem(WayfarerSystemID{Galaxy: 0, Index: 0})
|
|
b := GenerateSystem(WayfarerSystemID{Galaxy: 0, Index: 1})
|
|
if a.Name == b.Name && a.X == b.X && a.Y == b.Y {
|
|
t.Errorf("разные системы не должны совпадать целиком по всем параметрам")
|
|
}
|
|
}
|
|
|
|
func TestGenerateSystemValueRanges(t *testing.T) {
|
|
for g := 0; g < WayfarerGalaxyCount; g++ {
|
|
for i := 0; i < WayfarerSystemsPerGalaxy; i++ {
|
|
s := GenerateSystem(WayfarerSystemID{Galaxy: g, Index: i})
|
|
if s.TechLevel < 0 || s.TechLevel > 15 {
|
|
t.Fatalf("система %v: техуровень вне диапазона: %d", s.ID, s.TechLevel)
|
|
}
|
|
if s.Industrial < 0 || s.Industrial > 1 {
|
|
t.Fatalf("система %v: индустриальность вне диапазона: %v", s.ID, s.Industrial)
|
|
}
|
|
if s.Wealth < 0 || s.Wealth > 1 {
|
|
t.Fatalf("система %v: богатство вне диапазона: %v", s.ID, s.Wealth)
|
|
}
|
|
if s.Government < 0 || int(s.Government) >= int(wayfarerGovernmentCount) {
|
|
t.Fatalf("система %v: неверное правительство: %v", s.ID, s.Government)
|
|
}
|
|
if s.X < 0 || s.X > wayfarerGalaxyMapSize || s.Y < 0 || s.Y > wayfarerGalaxyMapSize {
|
|
t.Fatalf("система %v: координаты вне карты галактики: (%v,%v)", s.ID, s.X, s.Y)
|
|
}
|
|
if s.Name == "" {
|
|
t.Fatalf("система %v: пустое название", s.ID)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestGenerateSystemNameVarietyIsReasonable(t *testing.T) {
|
|
names := map[string]bool{}
|
|
for i := 0; i < 200; i++ {
|
|
s := GenerateSystem(WayfarerSystemID{Galaxy: 0, Index: i})
|
|
names[s.Name] = true
|
|
}
|
|
if len(names) < 100 {
|
|
t.Errorf("ожидалось разумное разнообразие названий среди 200 систем, получено только %d уникальных", len(names))
|
|
}
|
|
}
|
|
|
|
func TestDistanceSymmetric(t *testing.T) {
|
|
a := GenerateSystem(WayfarerSystemID{Galaxy: 0, Index: 1})
|
|
b := GenerateSystem(WayfarerSystemID{Galaxy: 0, Index: 2})
|
|
if a.Distance(b) != b.Distance(a) {
|
|
t.Errorf("расстояние должно быть симметричным")
|
|
}
|
|
if a.Distance(a) != 0 {
|
|
t.Errorf("расстояние системы до самой себя должно быть 0")
|
|
}
|
|
}
|
|
|
|
func TestDangerFactorMatchesGovernment(t *testing.T) {
|
|
anarchy := WayfarerSystem{Government: GovAnarchy}
|
|
corporate := WayfarerSystem{Government: GovCorporateState}
|
|
if anarchy.DangerFactor() <= corporate.DangerFactor() {
|
|
t.Errorf("анархия должна быть опаснее корпоративного государства")
|
|
}
|
|
}
|