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)) }