test: unknown and extict races for commands
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
package controller_test
|
||||
|
||||
import (
|
||||
"slices"
|
||||
"testing"
|
||||
|
||||
e "github.com/iliadenisov/galaxy/internal/error"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestCreateShipClass(t *testing.T) {
|
||||
c, g := newCache()
|
||||
|
||||
assert.NoError(t, g.CreateShipType(Race_0.Name, "Random", 1, 3, 5, 4, 2))
|
||||
ships := slices.Collect(c.ListShipTypes(Race_0_idx))
|
||||
assert.Len(t, ships, 4)
|
||||
st := ships[3]
|
||||
assert.Equal(t, 1., float64(st.Drive))
|
||||
assert.Equal(t, 3, int(st.Armament))
|
||||
assert.Equal(t, 5., float64(st.Weapons))
|
||||
assert.Equal(t, 4., float64(st.Shields))
|
||||
assert.Equal(t, 2., float64(st.Cargo))
|
||||
|
||||
assert.ErrorContains(t,
|
||||
g.CreateShipType(Race_0.Name, Race_0_Gunship, 1, 0, 0, 0, 0),
|
||||
e.GenericErrorText(e.ErrInputEntityTypeNameDuplicate))
|
||||
assert.ErrorContains(t,
|
||||
g.CreateShipType(UnknownRace, "Drone", 1, 0, 0, 0, 0),
|
||||
e.GenericErrorText(e.ErrInputUnknownRace))
|
||||
assert.ErrorContains(t,
|
||||
g.CreateShipType(Race_Extinct.Name, "Drone", 1, 0, 0, 0, 0),
|
||||
e.GenericErrorText(e.ErrRaceExinct))
|
||||
assert.ErrorContains(t,
|
||||
g.CreateShipType(Race_0.Name, BadEntityName, 1, 0, 0, 0, 0),
|
||||
e.GenericErrorText(e.ErrInputEntityTypeNameInvalid))
|
||||
}
|
||||
|
||||
func TestMergeShipClass(t *testing.T) {
|
||||
c, g := newCache()
|
||||
|
||||
assert.Len(t, c.ShipTypes(Race_0_idx), 3)
|
||||
|
||||
assert.NoError(t, g.CreateShipType(Race_0.Name, "Drone", 1, 0, 0, 0, 0))
|
||||
assert.Len(t, c.ShipTypes(Race_0_idx), 4)
|
||||
assert.NoError(t, g.CreateShipType(Race_0.Name, "Spy", 1, 0, 0, 0, 0))
|
||||
assert.Len(t, c.ShipTypes(Race_0_idx), 5)
|
||||
assert.NoError(t, g.CreateShipType(Race_0.Name, "Surfer", 15, 15, 15, 0, 1))
|
||||
assert.Len(t, c.ShipTypes(Race_0_idx), 6)
|
||||
|
||||
assert.ErrorContains(t,
|
||||
g.MergeShipType(Race_0.Name, "Sky", "Drone"),
|
||||
e.GenericErrorText(e.ErrInputEntityNotExists))
|
||||
assert.ErrorContains(t,
|
||||
g.MergeShipType(Race_0.Name, "Spy", "Elephant"),
|
||||
e.GenericErrorText(e.ErrInputEntityNotExists))
|
||||
assert.ErrorContains(t,
|
||||
g.MergeShipType(Race_Extinct.Name, "Spy", "Drone"),
|
||||
e.GenericErrorText(e.ErrRaceExinct))
|
||||
assert.ErrorContains(t,
|
||||
g.MergeShipType(Race_0.Name, "Spy", "Spy"),
|
||||
e.GenericErrorText(e.ErrInputEntityTypeNameEquality))
|
||||
|
||||
assert.NoError(t, g.MergeShipType(Race_0.Name, "Spy", "Drone"))
|
||||
assert.Len(t, c.ShipTypes(Race_0_idx), 5)
|
||||
|
||||
assert.ErrorContains(t,
|
||||
g.MergeShipType(Race_0.Name, "Drone", "Surfer"),
|
||||
e.GenericErrorText(e.ErrMergeShipTypeNotEqual))
|
||||
}
|
||||
|
||||
func TestDeleteShipClass(t *testing.T) {
|
||||
c, g := newCache()
|
||||
|
||||
assert.NoError(t, c.CreateShips(Race_0_idx, Race_0_Gunship, R0_Planet_0_num, 1))
|
||||
assert.NoError(t, g.CreateShipType(Race_0.Name, "Drone", 1, 0, 0, 0, 0))
|
||||
g.PlanetProduction(Race_0.Name, int(R0_Planet_0_num), "SHIP", "Drone")
|
||||
|
||||
assert.ErrorContains(t,
|
||||
g.DeleteShipType(UnknownRace, Race_0_Freighter),
|
||||
e.GenericErrorText(e.ErrInputUnknownRace))
|
||||
assert.ErrorContains(t,
|
||||
g.DeleteShipType(Race_Extinct.Name, Race_0_Freighter),
|
||||
e.GenericErrorText(e.ErrRaceExinct))
|
||||
assert.ErrorContains(t,
|
||||
g.DeleteShipType(Race_0.Name, "Elephant"),
|
||||
e.GenericErrorText(e.ErrInputEntityNotExists))
|
||||
assert.ErrorContains(t,
|
||||
g.DeleteShipType(Race_0.Name, "Drone"),
|
||||
e.GenericErrorText(e.ErrDeleteShipTypePlanetProduction))
|
||||
|
||||
assert.NoError(t, g.DeleteShipType(Race_0.Name, Race_0_Freighter))
|
||||
|
||||
assert.ErrorContains(t,
|
||||
g.DeleteShipType(Race_0.Name, Race_0_Gunship),
|
||||
e.GenericErrorText(e.ErrDeleteShipTypeExistingGroup))
|
||||
}
|
||||
Reference in New Issue
Block a user