rove/pkg/game/command_test.go

71 lines
1.8 KiB
Go
Raw Normal View History

package game
import (
"testing"
"github.com/mdiluz/rove/pkg/rove"
"github.com/mdiluz/rove/pkg/vector"
"github.com/stretchr/testify/assert"
)
func TestCommand_Move(t *testing.T) {
world := NewWorld(8)
a, err := world.SpawnRover()
assert.NoError(t, err)
pos := vector.Vector{
X: 1.0,
Y: 2.0,
}
err = world.WarpRover(a, pos)
assert.NoError(t, err, "Failed to set position for rover")
// Try the move command
moveCommand := Command{Command: rove.CommandType_move, Bearing: "N"}
assert.NoError(t, world.Enqueue(a, moveCommand), "Failed to execute move command")
2020-06-06 15:52:03 +01:00
// Tick the world
world.EnqueueAllIncoming()
2020-06-06 15:52:03 +01:00
world.ExecuteCommandQueues()
2020-06-26 18:22:37 +01:00
newPos, err := world.RoverPosition(a)
assert.NoError(t, err, "Failed to set position for rover")
pos.Add(vector.Vector{X: 0.0, Y: 1})
2020-06-26 18:22:37 +01:00
assert.Equal(t, pos, newPos, "Failed to correctly set position for rover")
}
2020-07-04 22:56:58 +01:00
func TestCommand_Recharge(t *testing.T) {
world := NewWorld(8)
a, err := world.SpawnRover()
assert.NoError(t, err)
pos := vector.Vector{
X: 1.0,
Y: 2.0,
}
err = world.WarpRover(a, pos)
assert.NoError(t, err, "Failed to set position for rover")
// Move to use up some charge
moveCommand := Command{Command: rove.CommandType_move, Bearing: "N"}
assert.NoError(t, world.Enqueue(a, moveCommand), "Failed to queue move command")
// Tick the world
world.EnqueueAllIncoming()
world.ExecuteCommandQueues()
rover, _ := world.GetRover(a)
assert.Equal(t, rover.MaximumCharge-1, rover.Charge)
chargeCommand := Command{Command: rove.CommandType_recharge}
2020-07-04 22:56:58 +01:00
assert.NoError(t, world.Enqueue(a, chargeCommand), "Failed to queue recharge command")
// Tick the world
world.EnqueueAllIncoming()
world.ExecuteCommandQueues()
rover, _ = world.GetRover(a)
assert.Equal(t, rover.MaximumCharge, rover.Charge)
}