farmbot_os/test/celery_script/commands/move_absolute_test.exs

37 lines
1.3 KiB
Elixir

defmodule Farmbot.CeleryScript.Command.MoveAbsoluteTest do
use ExUnit.Case, async: false
alias Farmbot.CeleryScript.Ast
alias Farmbot.CeleryScript.Command
setup_all do
Farmbot.Serial.HandlerTest.wait_for_serial_available()
:ok
end
test "makes sure we have serial" do
assert Farmbot.Serial.Handler.available?() == true
end
test "moves to a location" do
[_curx, _cury, _curz] = Farmbot.BotState.get_current_pos
location = %Ast{kind: "coordinate", args: %{x: 1000, y: 0, z: 0}, body: []}
offset = %Ast{kind: "coordinate", args: %{x: 0, y: 0, z: 0}, body: []}
Command.move_absolute(%{speed: 800, offset: offset, location: location}, [])
Process.sleep(100) # wait for serial to catch up
[newx, _newy, _newz] = Farmbot.BotState.get_current_pos
assert newx == 1000
end
test "moves to a location defered by an offset" do
location = %Ast{kind: "coordinate", args: %{x: 1000, y: 0, z: 0}, body: []}
offset = %Ast{kind: "coordinate", args: %{x: 500, y: 0, z: 0}, body: []}
Command.move_absolute(%{speed: 800, offset: offset, location: location}, [])
Process.sleep(100) # wait for serial to catch up
[newx, newy, newz] = Farmbot.BotState.get_current_pos
assert newx == 1500
assert newy == 0
assert newz == 0
end
end