Reject move commands in non-cardinal directions
This commit is contained in:
parent
0e731df1a3
commit
c2e3c9f090
4 changed files with 23 additions and 9 deletions
|
@ -55,8 +55,8 @@ func (d Bearing) ShortString() string {
|
|||
return bearingStrings[d].Short
|
||||
}
|
||||
|
||||
// FromString gets the Direction from a string
|
||||
func FromString(s string) (Bearing, error) {
|
||||
// BearingFromString gets the Direction from a string
|
||||
func BearingFromString(s string) (Bearing, error) {
|
||||
for i, d := range bearingStrings {
|
||||
if strings.EqualFold(d.Long, s) || strings.EqualFold(d.Short, s) {
|
||||
return Bearing(i), nil
|
||||
|
@ -80,3 +80,15 @@ var bearingVectors = []Vector{
|
|||
func (d Bearing) Vector() Vector {
|
||||
return bearingVectors[d]
|
||||
}
|
||||
|
||||
// IsCardinal returns if this is a cardinal (NESW)
|
||||
func (d Bearing) IsCardinal() bool {
|
||||
switch d {
|
||||
case North:
|
||||
case East:
|
||||
case South:
|
||||
case West:
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
|
|
@ -13,19 +13,19 @@ func TestDirection(t *testing.T) {
|
|||
assert.Equal(t, "N", dir.ShortString())
|
||||
assert.Equal(t, Vector{X: 0, Y: 1}, dir.Vector())
|
||||
|
||||
dir, err := FromString("N")
|
||||
dir, err := BearingFromString("N")
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, North, dir)
|
||||
|
||||
dir, err = FromString("n")
|
||||
dir, err = BearingFromString("n")
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, North, dir)
|
||||
|
||||
dir, err = FromString("north")
|
||||
dir, err = BearingFromString("north")
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, North, dir)
|
||||
|
||||
dir, err = FromString("NorthWest")
|
||||
dir, err = BearingFromString("NorthWest")
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, NorthWest, dir)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue