refactor: duplicate identifier error

This commit is contained in:
Ilia Denisov
2026-02-11 09:46:24 +02:00
parent 6e84cc3c51
commit 5697d0ad57
9 changed files with 19 additions and 11 deletions
+1 -1
View File
@@ -189,7 +189,7 @@ func (c *Cache) createFleet(ri int, name string) (int, error) {
return 0, e.NewEntityTypeNameValidationError("%q", n)
}
if _, ok := c.fleetIndex(ri, n); ok {
return 0, e.NewEntityTypeNameDuplicateError("fleet %q", n)
return 0, e.NewEntityDuplicateIdentifierError("fleet %q", n)
}
fleets := slices.Clone(c.g.Fleets)
fleets = append(fleets, game.Fleet{
+1 -1
View File
@@ -17,7 +17,7 @@ func (c *Cache) ScienceCreate(ri int, name string, drive, weapons, shileds, carg
return e.NewEntityTypeNameValidationError("%q", n)
}
if sc := slices.IndexFunc(c.g.Race[ri].Sciences, func(s game.Science) bool { return s.Name == n }); sc >= 0 {
return e.NewEntityTypeNameDuplicateError("science %q", c.g.Race[ri].Sciences[sc].Name)
return e.NewEntityDuplicateIdentifierError("science %q", c.g.Race[ri].Sciences[sc].Name)
}
if drive < 0 {
+1 -1
View File
@@ -37,7 +37,7 @@ func TestScienceCreate(t *testing.T) {
e.GenericErrorText(e.ErrInputEntityTypeNameInvalid))
assert.ErrorContains(t,
g.ScienceCreate(Race_0.Name, first, 0.4, 0, 0.6, 0),
e.GenericErrorText(e.ErrInputEntityTypeNameDuplicate))
e.GenericErrorText(e.ErrInputNewEntityDuplicateIdentifier))
assert.ErrorContains(t,
g.ScienceCreate(Race_0.Name, second, -0.1, 0, 1.1, 0),
e.GenericErrorText(e.ErrInputDriveValue))
+1 -1
View File
@@ -21,7 +21,7 @@ func (c *Cache) ShipClassCreate(ri int, typeName string, drive float64, ammo int
return e.NewEntityTypeNameValidationError("%q", n)
}
if st := slices.IndexFunc(c.g.Race[ri].ShipTypes, func(st game.ShipType) bool { return st.Name == typeName }); st >= 0 {
return e.NewEntityTypeNameDuplicateError("ship type %q", c.g.Race[ri].ShipTypes[st].Name)
return e.NewEntityDuplicateIdentifierError("ship class %q", c.g.Race[ri].ShipTypes[st].Name)
}
c.g.Race[ri].ShipTypes = append(c.g.Race[ri].ShipTypes, game.ShipType{
ID: uuid.New(),
+2 -2
View File
@@ -24,7 +24,7 @@ func TestShipClassCreate(t *testing.T) {
assert.ErrorContains(t,
g.ShipClassCreate(Race_0.Name, Race_0_Gunship, 1, 0, 0, 0, 0),
e.GenericErrorText(e.ErrInputEntityTypeNameDuplicate))
e.GenericErrorText(e.ErrInputNewEntityDuplicateIdentifier))
assert.ErrorContains(t,
g.ShipClassCreate(UnknownRace, "Drone", 1, 0, 0, 0, 0),
e.GenericErrorText(e.ErrInputUnknownRace))
@@ -80,7 +80,7 @@ func TestCreateShipTypeValidation(t *testing.T) {
err := g.ShipClassCreate(race, tc.name+strconv.Itoa(i), tc.d, tc.a, tc.w, tc.s, tc.c)
assert.NoError(t, err)
err = g.ShipClassCreate(race, tc.name+strconv.Itoa(i), tc.d, tc.a, tc.w, tc.s, tc.c)
assert.ErrorContains(t, err, e.GenericErrorText(e.ErrInputEntityTypeNameDuplicate))
assert.ErrorContains(t, err, e.GenericErrorText(e.ErrInputNewEntityDuplicateIdentifier))
} else {
err := g.ShipClassCreate(race, tc.name, tc.d, tc.a, tc.w, tc.s, tc.c)
assert.ErrorContains(t, err, tc.err)
+5
View File
@@ -383,6 +383,11 @@ func (c *Cache) ShipGroupBreak(ri int, groupID, newID uuid.UUID, quantity uint)
if !ok {
return e.NewEntityNotExistsError("group %s", groupID)
}
for sgi := range c.g.ShipGroups {
if c.g.ShipGroups[sgi].ID == newID {
return e.NewEntityDuplicateIdentifierError("group %s", newID)
}
}
if state := c.ShipGroup(sgi).State(); state != game.StateInOrbit {
return e.NewShipsBusyError()
+3
View File
@@ -116,6 +116,9 @@ func TestShipGroupBreak(t *testing.T) {
assert.ErrorContains(t,
g.ShipGroupBreak(Race_0.Name, uuid.New(), uuid.New(), 1),
e.GenericErrorText(e.ErrInputEntityNotExists))
assert.ErrorContains(t,
g.ShipGroupBreak(Race_0.Name, c.ShipGroup(0).ID, c.ShipGroup(0).ID, 1),
e.GenericErrorText(e.ErrInputNewEntityDuplicateIdentifier))
assert.ErrorContains(t,
g.ShipGroupBreak(Race_0.Name, c.ShipGroup(0).ID, uuid.New(), 17),
e.GenericErrorText(e.ErrBeakGroupNumberNotEnough))
+3 -3
View File
@@ -35,7 +35,7 @@ const (
ErrInputUnknownRelation
ErrInputSameRace
ErrInputEntityTypeNameInvalid
ErrInputEntityTypeNameDuplicate
ErrInputNewEntityDuplicateIdentifier
ErrInputEntityTypeNameEquality
ErrInputEntityNotExists
ErrInputEntityNotOwned
@@ -83,8 +83,8 @@ func GenericErrorText(code int) string {
return "Race name must be different from your own"
case ErrInputEntityTypeNameInvalid:
return "Name has invalid length or symbols"
case ErrInputEntityTypeNameDuplicate:
return "Name already exists"
case ErrInputNewEntityDuplicateIdentifier:
return "Entity already exists"
case ErrInputEntityTypeNameEquality:
return "Names should differ"
case ErrInputEntityNotExists:
+2 -2
View File
@@ -16,8 +16,8 @@ func NewEntityTypeNameValidationError(arg ...any) error {
return newGenericError(ErrInputEntityTypeNameInvalid, arg...)
}
func NewEntityTypeNameDuplicateError(arg ...any) error {
return newGenericError(ErrInputEntityTypeNameDuplicate, arg...)
func NewEntityDuplicateIdentifierError(arg ...any) error {
return newGenericError(ErrInputNewEntityDuplicateIdentifier, arg...)
}
func NewEntityTypeNameEqualityError(arg ...any) error {