57 lines
1.3 KiB
Elixir
57 lines
1.3 KiB
Elixir
defmodule WaferElixirALE.SPITest do
|
|
use ExUnit.Case, async: true
|
|
use Mimic
|
|
alias Wafer.Driver.ElixirALE.SPI, as: Subject
|
|
alias Wafer.Driver.ElixirALE.SPI.Wrapper
|
|
alias Wafer.{Release, SPI}
|
|
@moduledoc false
|
|
|
|
describe "acquire/1" do
|
|
test "opens the bus" do
|
|
Wrapper
|
|
|> expect(:start_link, 1, fn bus, spi_opts, opts ->
|
|
assert bus == "spidev0.0"
|
|
assert spi_opts == []
|
|
assert opts == []
|
|
{:ok, self()}
|
|
end)
|
|
|
|
assert {:ok, %Subject{}} = Subject.acquire(bus_name: "spidev0.0")
|
|
end
|
|
|
|
test "when the bus name is not specified it returns an error" do
|
|
assert {:error, _} = Subject.acquire([])
|
|
end
|
|
end
|
|
|
|
describe "Release.release/1" do
|
|
test "closes the bus connection" do
|
|
conn = conn()
|
|
|
|
Wrapper
|
|
|> expect(:release, 1, fn pid ->
|
|
assert pid == conn.pid
|
|
:ok
|
|
end)
|
|
|
|
assert :ok = Release.release(conn)
|
|
end
|
|
end
|
|
|
|
describe "SPI.transfer/2" do
|
|
test "transfers data to and from the bus" do
|
|
conn = conn()
|
|
|
|
Wrapper
|
|
|> expect(:transfer, 1, fn pid, data ->
|
|
assert pid == conn.pid
|
|
assert data == <<0, 0>>
|
|
<<1, 1>>
|
|
end)
|
|
|
|
assert {:ok, <<1, 1>>, %Subject{}} = SPI.transfer(conn, <<0, 0>>)
|
|
end
|
|
end
|
|
|
|
defp conn, do: %Subject{pid: self(), bus: "spidev0.0"}
|
|
end
|