From f40f7123d43b6f3731c3fa4937be851a35e76053 Mon Sep 17 00:00:00 2001 From: Marc Di Luzio Date: Fri, 10 Jul 2020 18:24:54 +0100 Subject: [PATCH] Move bearing into maths --- cmd/rove/main.go | 4 ++-- pkg/{bearing => maths}/bearing.go | 8 +++----- pkg/{bearing => maths}/bearing_test.go | 5 ++--- pkg/rove/world.go | 7 +++---- pkg/rove/world_test.go | 15 +++++++-------- 5 files changed, 17 insertions(+), 22 deletions(-) rename pkg/{bearing => maths}/bearing.go (92%) rename pkg/{bearing => maths}/bearing_test.go (83%) diff --git a/cmd/rove/main.go b/cmd/rove/main.go index af48a61..cf239bf 100644 --- a/cmd/rove/main.go +++ b/cmd/rove/main.go @@ -11,7 +11,7 @@ import ( "time" "github.com/mdiluz/rove/pkg/atlas" - "github.com/mdiluz/rove/pkg/bearing" + "github.com/mdiluz/rove/pkg/maths" "github.com/mdiluz/rove/pkg/objects" "github.com/mdiluz/rove/pkg/roveapi" "github.com/mdiluz/rove/pkg/version" @@ -216,7 +216,7 @@ func InnerMain(command string, args ...string) error { i++ if len(args) == i { return fmt.Errorf("move command must be passed bearing") - } else if _, err := bearing.FromString(args[i]); err != nil { + } else if _, err := maths.FromString(args[i]); err != nil { return err } commands = append(commands, diff --git a/pkg/bearing/bearing.go b/pkg/maths/bearing.go similarity index 92% rename from pkg/bearing/bearing.go rename to pkg/maths/bearing.go index 2eec3ba..220855b 100644 --- a/pkg/bearing/bearing.go +++ b/pkg/maths/bearing.go @@ -1,10 +1,8 @@ -package bearing +package maths import ( "fmt" "strings" - - "github.com/mdiluz/rove/pkg/maths" ) // Bearing describes a compass direction @@ -67,7 +65,7 @@ func FromString(s string) (Bearing, error) { return -1, fmt.Errorf("unknown bearing: %s", s) } -var bearingVectors = []maths.Vector{ +var bearingVectors = []Vector{ {X: 0, Y: 1}, // N {X: 1, Y: 1}, // NE {X: 1, Y: 0}, // E @@ -79,6 +77,6 @@ var bearingVectors = []maths.Vector{ } // Vector converts a Direction to a Vector -func (d Bearing) Vector() maths.Vector { +func (d Bearing) Vector() Vector { return bearingVectors[d] } diff --git a/pkg/bearing/bearing_test.go b/pkg/maths/bearing_test.go similarity index 83% rename from pkg/bearing/bearing_test.go rename to pkg/maths/bearing_test.go index 5bb36bc..bb97043 100644 --- a/pkg/bearing/bearing_test.go +++ b/pkg/maths/bearing_test.go @@ -1,9 +1,8 @@ -package bearing +package maths import ( "testing" - "github.com/mdiluz/rove/pkg/maths" "github.com/stretchr/testify/assert" ) @@ -12,7 +11,7 @@ func TestDirection(t *testing.T) { assert.Equal(t, "North", dir.String()) assert.Equal(t, "N", dir.ShortString()) - assert.Equal(t, maths.Vector{X: 0, Y: 1}, dir.Vector()) + assert.Equal(t, Vector{X: 0, Y: 1}, dir.Vector()) dir, err := FromString("N") assert.NoError(t, err) diff --git a/pkg/rove/world.go b/pkg/rove/world.go index eb2ef85..559073e 100644 --- a/pkg/rove/world.go +++ b/pkg/rove/world.go @@ -10,7 +10,6 @@ import ( "github.com/google/uuid" "github.com/mdiluz/rove/pkg/atlas" - "github.com/mdiluz/rove/pkg/bearing" "github.com/mdiluz/rove/pkg/maths" "github.com/mdiluz/rove/pkg/objects" "github.com/mdiluz/rove/pkg/roveapi" @@ -279,7 +278,7 @@ func (w *World) WarpRover(rover string, pos maths.Vector) error { } // MoveRover attempts to move a rover in a specific direction -func (w *World) MoveRover(rover string, b bearing.Bearing) (maths.Vector, error) { +func (w *World) MoveRover(rover string, b maths.Bearing) (maths.Vector, error) { w.worldMutex.Lock() defer w.worldMutex.Unlock() @@ -428,7 +427,7 @@ func (w *World) Enqueue(rover string, commands ...Command) error { for _, c := range commands { switch c.Command { case roveapi.CommandType_move: - if _, err := bearing.FromString(c.Bearing); err != nil { + if _, err := maths.FromString(c.Bearing); err != nil { return fmt.Errorf("unknown bearing: %s", c.Bearing) } case roveapi.CommandType_broadcast: @@ -507,7 +506,7 @@ func (w *World) ExecuteCommand(c *Command, rover string) (err error) { switch c.Command { case roveapi.CommandType_move: - if dir, err := bearing.FromString(c.Bearing); err != nil { + if dir, err := maths.FromString(c.Bearing); err != nil { return err } else if _, err := w.MoveRover(rover, dir); err != nil { return err diff --git a/pkg/rove/world_test.go b/pkg/rove/world_test.go index 89ea9c7..78e9160 100644 --- a/pkg/rove/world_test.go +++ b/pkg/rove/world_test.go @@ -4,7 +4,6 @@ import ( "testing" "github.com/mdiluz/rove/pkg/atlas" - "github.com/mdiluz/rove/pkg/bearing" "github.com/mdiluz/rove/pkg/maths" "github.com/mdiluz/rove/pkg/objects" "github.com/mdiluz/rove/pkg/roveapi" @@ -80,7 +79,7 @@ func TestWorld_GetSetMovePosition(t *testing.T) { assert.NoError(t, err, "Failed to set position for rover") assert.Equal(t, pos, newPos, "Failed to correctly set position for rover") - b := bearing.North + b := maths.North newPos, err = world.MoveRover(a, b) assert.NoError(t, err, "Failed to set position for rover") pos.Add(maths.Vector{X: 0, Y: 1}) @@ -228,7 +227,7 @@ func TestWorld_RoverDamage(t *testing.T) { world.Atlas.SetObject(maths.Vector{X: 0.0, Y: 1.0}, objects.Object{Type: objects.LargeRock}) - vec, err := world.MoveRover(a, bearing.North) + vec, err := world.MoveRover(a, maths.North) assert.NoError(t, err, "Failed to move rover") assert.Equal(t, pos, vec, "Rover managed to move into large rock") @@ -266,7 +265,7 @@ func TestWorld_RoverRepair(t *testing.T) { world.Atlas.SetObject(maths.Vector{X: 0.0, Y: 1.0}, objects.Object{Type: objects.LargeRock}) // Try and bump into the rock - vec, err := world.MoveRover(a, bearing.North) + vec, err := world.MoveRover(a, maths.North) assert.NoError(t, err, "Failed to move rover") assert.Equal(t, pos, vec, "Rover managed to move into large rock") @@ -313,13 +312,13 @@ func TestWorld_Charge(t *testing.T) { assert.NoError(t, err, "Failed to get position for rover") // Ensure the path ahead is empty - world.Atlas.SetTile(initialPos.Added(bearing.North.Vector()), atlas.TileRock) - world.Atlas.SetObject(initialPos.Added(bearing.North.Vector()), objects.Object{Type: objects.None}) + world.Atlas.SetTile(initialPos.Added(maths.North.Vector()), atlas.TileRock) + world.Atlas.SetObject(initialPos.Added(maths.North.Vector()), objects.Object{Type: objects.None}) // Try and move north (along unblocked path) - newPos, err := world.MoveRover(a, bearing.North) + newPos, err := world.MoveRover(a, maths.North) assert.NoError(t, err, "Failed to set position for rover") - assert.Equal(t, initialPos.Added(bearing.North.Vector()), newPos, "Failed to correctly move position for rover") + assert.Equal(t, initialPos.Added(maths.North.Vector()), newPos, "Failed to correctly move position for rover") // Ensure rover lost charge rover, err := world.GetRover(a)