cmd: add/remove route

This commit is contained in:
Ilia Denisov
2026-01-06 07:16:27 +02:00
parent 5f3a416abd
commit 0b8c53cedf
5 changed files with 218 additions and 2 deletions
+91
View File
@@ -0,0 +1,91 @@
package game_test
import (
"testing"
e "github.com/iliadenisov/galaxy/internal/error"
"github.com/iliadenisov/galaxy/internal/model/game"
"github.com/stretchr/testify/assert"
)
func TestSetRoute(t *testing.T) {
g := newGame()
assert.NotContains(t, g.MustPlanetByNumber(0).Route, game.RouteMaterial)
assert.NotContains(t, g.MustPlanetByNumber(0).Route, game.RouteCapital)
assert.NotContains(t, g.MustPlanetByNumber(0).Route, game.RouteColonist)
assert.NotContains(t, g.MustPlanetByNumber(0).Route, game.RouteEmpty)
assert.NoError(t, g.SetRoute(Race_0.Name, "COL", 0, 2))
assert.NotContains(t, g.MustPlanetByNumber(0).Route, game.RouteMaterial)
assert.NotContains(t, g.MustPlanetByNumber(0).Route, game.RouteCapital)
assert.Contains(t, g.MustPlanetByNumber(0).Route, game.RouteColonist)
assert.NotContains(t, g.MustPlanetByNumber(0).Route, game.RouteEmpty)
assert.NoError(t, g.SetRoute(Race_0.Name, "MAT", 0, 2))
assert.Contains(t, g.MustPlanetByNumber(0).Route, game.RouteMaterial)
assert.NotContains(t, g.MustPlanetByNumber(0).Route, game.RouteCapital)
assert.Contains(t, g.MustPlanetByNumber(0).Route, game.RouteColonist)
assert.NotContains(t, g.MustPlanetByNumber(0).Route, game.RouteEmpty)
assert.NoError(t, g.SetRoute(Race_0.Name, "CAP", 0, 2))
assert.Contains(t, g.MustPlanetByNumber(0).Route, game.RouteMaterial)
assert.Contains(t, g.MustPlanetByNumber(0).Route, game.RouteCapital)
assert.Contains(t, g.MustPlanetByNumber(0).Route, game.RouteColonist)
assert.NotContains(t, g.MustPlanetByNumber(0).Route, game.RouteEmpty)
assert.NoError(t, g.SetRoute(Race_0.Name, "EMP", 0, 2))
assert.Contains(t, g.MustPlanetByNumber(0).Route, game.RouteMaterial)
assert.Contains(t, g.MustPlanetByNumber(0).Route, game.RouteCapital)
assert.Contains(t, g.MustPlanetByNumber(0).Route, game.RouteColonist)
assert.Contains(t, g.MustPlanetByNumber(0).Route, game.RouteEmpty)
assert.ErrorContains(t,
g.SetRoute("UnknownRace", "COL", 0, 2),
e.GenericErrorText(e.ErrInputUnknownRace))
assert.ErrorContains(t,
g.SetRoute(Race_0.Name, "IND", 0, 2),
e.GenericErrorText(e.ErrInputCargoTypeInvalid))
assert.ErrorContains(t,
g.SetRoute(Race_0.Name, "COL", 500, 2),
e.GenericErrorText(e.ErrInputEntityNotExists))
assert.ErrorContains(t,
g.SetRoute(Race_0.Name, "COL", 1, 2),
e.GenericErrorText(e.ErrInputEntityNotOwned))
assert.ErrorContains(t,
g.SetRoute(Race_0.Name, "COL", 0, 3),
e.GenericErrorText(e.ErrSendUnreachableDestination))
}
func TestRemoveRoute(t *testing.T) {
g := newGame()
assert.NoError(t, g.SetRoute(Race_0.Name, "COL", 0, 2))
assert.NoError(t, g.SetRoute(Race_0.Name, "CAP", 0, 2))
assert.NoError(t, g.SetRoute(Race_0.Name, "EMP", 2, 0))
assert.Contains(t, g.MustPlanetByNumber(0).Route, game.RouteColonist)
assert.Contains(t, g.MustPlanetByNumber(0).Route, game.RouteCapital)
assert.Contains(t, g.MustPlanetByNumber(2).Route, game.RouteEmpty)
assert.NoError(t, g.RemoveRoute(Race_0.Name, "COL", 0))
assert.NotContains(t, g.MustPlanetByNumber(0).Route, game.RouteColonist)
assert.Contains(t, g.MustPlanetByNumber(0).Route, game.RouteCapital)
assert.NoError(t, g.RemoveRoute(Race_0.Name, "EMP", 2))
assert.NotContains(t, g.MustPlanetByNumber(2).Route, game.RouteEmpty)
assert.ErrorContains(t,
g.RemoveRoute("UnknownRace", "COL", 0),
e.GenericErrorText(e.ErrInputUnknownRace))
assert.ErrorContains(t,
g.RemoveRoute(Race_0.Name, "IND", 0),
e.GenericErrorText(e.ErrInputCargoTypeInvalid))
assert.ErrorContains(t,
g.RemoveRoute(Race_0.Name, "COL", 500),
e.GenericErrorText(e.ErrInputEntityNotExists))
assert.ErrorContains(t,
g.RemoveRoute(Race_0.Name, "COL", 1),
e.GenericErrorText(e.ErrInputEntityNotOwned))
}