92 lines
3.4 KiB
Go
92 lines
3.4 KiB
Go
package controller_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) {
|
|
c, g := newCache()
|
|
|
|
assert.NotContains(t, c.MustPlanet(0).Route, game.RouteMaterial)
|
|
assert.NotContains(t, c.MustPlanet(0).Route, game.RouteCapital)
|
|
assert.NotContains(t, c.MustPlanet(0).Route, game.RouteColonist)
|
|
assert.NotContains(t, c.MustPlanet(0).Route, game.RouteEmpty)
|
|
|
|
assert.NoError(t, g.SetRoute(Race_0.Name, "COL", 0, 2))
|
|
assert.NotContains(t, c.MustPlanet(0).Route, game.RouteMaterial)
|
|
assert.NotContains(t, c.MustPlanet(0).Route, game.RouteCapital)
|
|
assert.Contains(t, c.MustPlanet(0).Route, game.RouteColonist)
|
|
assert.NotContains(t, c.MustPlanet(0).Route, game.RouteEmpty)
|
|
|
|
assert.NoError(t, g.SetRoute(Race_0.Name, "MAT", 0, 2))
|
|
assert.Contains(t, c.MustPlanet(0).Route, game.RouteMaterial)
|
|
assert.NotContains(t, c.MustPlanet(0).Route, game.RouteCapital)
|
|
assert.Contains(t, c.MustPlanet(0).Route, game.RouteColonist)
|
|
assert.NotContains(t, c.MustPlanet(0).Route, game.RouteEmpty)
|
|
|
|
assert.NoError(t, g.SetRoute(Race_0.Name, "CAP", 0, 2))
|
|
assert.Contains(t, c.MustPlanet(0).Route, game.RouteMaterial)
|
|
assert.Contains(t, c.MustPlanet(0).Route, game.RouteCapital)
|
|
assert.Contains(t, c.MustPlanet(0).Route, game.RouteColonist)
|
|
assert.NotContains(t, c.MustPlanet(0).Route, game.RouteEmpty)
|
|
|
|
assert.NoError(t, g.SetRoute(Race_0.Name, "EMP", 0, 2))
|
|
assert.Contains(t, c.MustPlanet(0).Route, game.RouteMaterial)
|
|
assert.Contains(t, c.MustPlanet(0).Route, game.RouteCapital)
|
|
assert.Contains(t, c.MustPlanet(0).Route, game.RouteColonist)
|
|
assert.Contains(t, c.MustPlanet(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) {
|
|
c, g := newCache()
|
|
|
|
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, c.MustPlanet(0).Route, game.RouteColonist)
|
|
assert.Contains(t, c.MustPlanet(0).Route, game.RouteCapital)
|
|
assert.Contains(t, c.MustPlanet(2).Route, game.RouteEmpty)
|
|
|
|
assert.NoError(t, g.RemoveRoute(Race_0.Name, "COL", 0))
|
|
assert.NotContains(t, c.MustPlanet(0).Route, game.RouteColonist)
|
|
assert.Contains(t, c.MustPlanet(0).Route, game.RouteCapital)
|
|
|
|
assert.NoError(t, g.RemoveRoute(Race_0.Name, "EMP", 2))
|
|
assert.NotContains(t, c.MustPlanet(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))
|
|
}
|