refactor: duplicate identifier error
This commit is contained in:
@@ -189,7 +189,7 @@ func (c *Cache) createFleet(ri int, name string) (int, error) {
|
|||||||
return 0, e.NewEntityTypeNameValidationError("%q", n)
|
return 0, e.NewEntityTypeNameValidationError("%q", n)
|
||||||
}
|
}
|
||||||
if _, ok := c.fleetIndex(ri, n); ok {
|
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 := slices.Clone(c.g.Fleets)
|
||||||
fleets = append(fleets, game.Fleet{
|
fleets = append(fleets, game.Fleet{
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ func (c *Cache) ScienceCreate(ri int, name string, drive, weapons, shileds, carg
|
|||||||
return e.NewEntityTypeNameValidationError("%q", n)
|
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 {
|
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 {
|
if drive < 0 {
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ func TestScienceCreate(t *testing.T) {
|
|||||||
e.GenericErrorText(e.ErrInputEntityTypeNameInvalid))
|
e.GenericErrorText(e.ErrInputEntityTypeNameInvalid))
|
||||||
assert.ErrorContains(t,
|
assert.ErrorContains(t,
|
||||||
g.ScienceCreate(Race_0.Name, first, 0.4, 0, 0.6, 0),
|
g.ScienceCreate(Race_0.Name, first, 0.4, 0, 0.6, 0),
|
||||||
e.GenericErrorText(e.ErrInputEntityTypeNameDuplicate))
|
e.GenericErrorText(e.ErrInputNewEntityDuplicateIdentifier))
|
||||||
assert.ErrorContains(t,
|
assert.ErrorContains(t,
|
||||||
g.ScienceCreate(Race_0.Name, second, -0.1, 0, 1.1, 0),
|
g.ScienceCreate(Race_0.Name, second, -0.1, 0, 1.1, 0),
|
||||||
e.GenericErrorText(e.ErrInputDriveValue))
|
e.GenericErrorText(e.ErrInputDriveValue))
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ func (c *Cache) ShipClassCreate(ri int, typeName string, drive float64, ammo int
|
|||||||
return e.NewEntityTypeNameValidationError("%q", n)
|
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 {
|
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{
|
c.g.Race[ri].ShipTypes = append(c.g.Race[ri].ShipTypes, game.ShipType{
|
||||||
ID: uuid.New(),
|
ID: uuid.New(),
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ func TestShipClassCreate(t *testing.T) {
|
|||||||
|
|
||||||
assert.ErrorContains(t,
|
assert.ErrorContains(t,
|
||||||
g.ShipClassCreate(Race_0.Name, Race_0_Gunship, 1, 0, 0, 0, 0),
|
g.ShipClassCreate(Race_0.Name, Race_0_Gunship, 1, 0, 0, 0, 0),
|
||||||
e.GenericErrorText(e.ErrInputEntityTypeNameDuplicate))
|
e.GenericErrorText(e.ErrInputNewEntityDuplicateIdentifier))
|
||||||
assert.ErrorContains(t,
|
assert.ErrorContains(t,
|
||||||
g.ShipClassCreate(UnknownRace, "Drone", 1, 0, 0, 0, 0),
|
g.ShipClassCreate(UnknownRace, "Drone", 1, 0, 0, 0, 0),
|
||||||
e.GenericErrorText(e.ErrInputUnknownRace))
|
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)
|
err := g.ShipClassCreate(race, tc.name+strconv.Itoa(i), tc.d, tc.a, tc.w, tc.s, tc.c)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
err = g.ShipClassCreate(race, tc.name+strconv.Itoa(i), tc.d, tc.a, tc.w, tc.s, tc.c)
|
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 {
|
} else {
|
||||||
err := g.ShipClassCreate(race, tc.name, tc.d, tc.a, tc.w, tc.s, tc.c)
|
err := g.ShipClassCreate(race, tc.name, tc.d, tc.a, tc.w, tc.s, tc.c)
|
||||||
assert.ErrorContains(t, err, tc.err)
|
assert.ErrorContains(t, err, tc.err)
|
||||||
|
|||||||
@@ -383,6 +383,11 @@ func (c *Cache) ShipGroupBreak(ri int, groupID, newID uuid.UUID, quantity uint)
|
|||||||
if !ok {
|
if !ok {
|
||||||
return e.NewEntityNotExistsError("group %s", groupID)
|
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 {
|
if state := c.ShipGroup(sgi).State(); state != game.StateInOrbit {
|
||||||
return e.NewShipsBusyError()
|
return e.NewShipsBusyError()
|
||||||
|
|||||||
@@ -116,6 +116,9 @@ func TestShipGroupBreak(t *testing.T) {
|
|||||||
assert.ErrorContains(t,
|
assert.ErrorContains(t,
|
||||||
g.ShipGroupBreak(Race_0.Name, uuid.New(), uuid.New(), 1),
|
g.ShipGroupBreak(Race_0.Name, uuid.New(), uuid.New(), 1),
|
||||||
e.GenericErrorText(e.ErrInputEntityNotExists))
|
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,
|
assert.ErrorContains(t,
|
||||||
g.ShipGroupBreak(Race_0.Name, c.ShipGroup(0).ID, uuid.New(), 17),
|
g.ShipGroupBreak(Race_0.Name, c.ShipGroup(0).ID, uuid.New(), 17),
|
||||||
e.GenericErrorText(e.ErrBeakGroupNumberNotEnough))
|
e.GenericErrorText(e.ErrBeakGroupNumberNotEnough))
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ const (
|
|||||||
ErrInputUnknownRelation
|
ErrInputUnknownRelation
|
||||||
ErrInputSameRace
|
ErrInputSameRace
|
||||||
ErrInputEntityTypeNameInvalid
|
ErrInputEntityTypeNameInvalid
|
||||||
ErrInputEntityTypeNameDuplicate
|
ErrInputNewEntityDuplicateIdentifier
|
||||||
ErrInputEntityTypeNameEquality
|
ErrInputEntityTypeNameEquality
|
||||||
ErrInputEntityNotExists
|
ErrInputEntityNotExists
|
||||||
ErrInputEntityNotOwned
|
ErrInputEntityNotOwned
|
||||||
@@ -83,8 +83,8 @@ func GenericErrorText(code int) string {
|
|||||||
return "Race name must be different from your own"
|
return "Race name must be different from your own"
|
||||||
case ErrInputEntityTypeNameInvalid:
|
case ErrInputEntityTypeNameInvalid:
|
||||||
return "Name has invalid length or symbols"
|
return "Name has invalid length or symbols"
|
||||||
case ErrInputEntityTypeNameDuplicate:
|
case ErrInputNewEntityDuplicateIdentifier:
|
||||||
return "Name already exists"
|
return "Entity already exists"
|
||||||
case ErrInputEntityTypeNameEquality:
|
case ErrInputEntityTypeNameEquality:
|
||||||
return "Names should differ"
|
return "Names should differ"
|
||||||
case ErrInputEntityNotExists:
|
case ErrInputEntityNotExists:
|
||||||
|
|||||||
@@ -16,8 +16,8 @@ func NewEntityTypeNameValidationError(arg ...any) error {
|
|||||||
return newGenericError(ErrInputEntityTypeNameInvalid, arg...)
|
return newGenericError(ErrInputEntityTypeNameInvalid, arg...)
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewEntityTypeNameDuplicateError(arg ...any) error {
|
func NewEntityDuplicateIdentifierError(arg ...any) error {
|
||||||
return newGenericError(ErrInputEntityTypeNameDuplicate, arg...)
|
return newGenericError(ErrInputNewEntityDuplicateIdentifier, arg...)
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewEntityTypeNameEqualityError(arg ...any) error {
|
func NewEntityTypeNameEqualityError(arg ...any) error {
|
||||||
|
|||||||
Reference in New Issue
Block a user