package game

import (
	"testing"

	"github.com/stretchr/testify/assert"
)

func TestCommand_Move(t *testing.T) {
	world := NewWorld()
	a := world.SpawnRover()
	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 := 0.0
	duration := 1.0
	// Try the move command
	moveCommand := world.CommandMove(a, bearing, duration)
	assert.NoError(t, world.Execute(moveCommand), "Failed to execute move command")

	newpos, err := world.RoverPosition(a)
	assert.NoError(t, err, "Failed to set position for rover")
	pos.Add(Vector{0.0, float64(duration) * attribs.Speed}) // We should have moved duration*speed north
	assert.Equal(t, pos, newpos, "Failed to correctly set position for rover")
}