37 lines
997 B
Go
37 lines
997 B
Go
package game
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestCommand_Move(t *testing.T) {
|
|
world := NewWorld(2, 8)
|
|
a, err := world.SpawnRover()
|
|
assert.NoError(t, err)
|
|
pos := Vector{
|
|
X: 1.0,
|
|
Y: 2.0,
|
|
}
|
|
|
|
attribs, err := world.RoverAttributes(a)
|
|
assert.NoError(t, err, "Failed to get rover attribs")
|
|
|
|
err = world.WarpRover(a, pos)
|
|
assert.NoError(t, err, "Failed to set position for rover")
|
|
|
|
bearing := North
|
|
duration := 1
|
|
// Try the move command
|
|
moveCommand := Command{Command: CommandMove, Bearing: bearing.String(), Duration: duration}
|
|
assert.NoError(t, world.Enqueue(a, moveCommand), "Failed to execute move command")
|
|
|
|
// Tick the world
|
|
world.ExecuteCommandQueues()
|
|
|
|
newatributes, err := world.RoverAttributes(a)
|
|
assert.NoError(t, err, "Failed to set position for rover")
|
|
pos.Add(Vector{0.0, duration * attribs.Speed}) // We should have moved duration*speed north
|
|
assert.Equal(t, pos, newatributes.Pos, "Failed to correctly set position for rover")
|
|
}
|