package generator_test import ( "regexp" "testing" g "galaxy/game/internal/generator" "github.com/stretchr/testify/assert" ) func TestPlanetRandomName(t *testing.T) { re, err := regexp.Compile(`^([a-zA-Z]+)-(\d{4})-(\d{4})$`) assert.NoError(t, err) if err != nil { return } for _, pc := range []g.PlanetClass{g.PlanetClassHW, g.PlanetClassDW, g.PlanetClassGiant, g.PlanetClassBig, g.PlanetClassNormal, g.PlanetClassRich, g.PlanetClassAsterioid} { t.Run(string(pc), func(t *testing.T) { name := g.NewPlanet(pc, g.Coordinate{0, 0}, 0, 0).RandomName() // `RandomName` formats `-<4-digit>-<4-digit>`, // where each suffix is an independent `rand.Intn(1000)`. // We assert the wire format and the class prefix; an // earlier revision also asserted `g[2] != g[3]`, which // flaked on the legitimate ~0.1% collision (a property // the function does not — and need not — guarantee: // `generate_game.go` already tolerates duplicate names // across planets). groups := re.FindStringSubmatch(name) assert.NotNilf(t, groups, "cannot parse: %q", name) if groups == nil { return } assert.Equalf(t, 4, len(groups), "regexp groups") assert.Equal(t, string(pc), groups[1]) }) } }