wafer/test/drivers/circuits_spi_test.exs

52 lines
1.1 KiB
Elixir

defmodule WaferCircuitsSPITest do
use ExUnit.Case, async: true
use Mimic
alias Circuits.SPI, as: Driver
alias Wafer.Driver.CircuitsSPI, as: Subject
alias Wafer.SPI
@moduledoc false
describe "acquire/1" do
test "opens the bus" do
Driver
|> expect(:open, 1, fn bus, opts ->
assert bus == "spidev0.0"
assert opts == []
{:ok, :erlang.make_ref()}
end)
assert {:ok, %Subject{}} = Subject.acquire(bus_name: "spidev0.0")
end
end
describe "release/1" do
test "closes the bus connection" do
conn = conn()
Driver
|> expect(:close, 1, fn ref ->
assert ref == conn.ref
:ok
end)
assert :ok = Subject.release(conn)
end
end
describe "SPI.transfer/2" do
test "transfers data to and from the bus" do
conn = conn()
Driver
|> expect(:transfer, 1, fn ref, data ->
assert ref == conn.ref
assert data == <<0, 0>>
{:ok, <<1, 1>>}
end)
assert {:ok, <<1, 1>>, %Subject{}} = SPI.transfer(conn, <<0, 0>>)
end
end
defp conn, do: %Subject{ref: :erlang.make_ref(), bus: "spidev0.0"}
end