Packages

Elixir wrapper for Snap7, for communication with Siemens PLC's.

Current section

Files

Jump to
snapex7 test s7_client_test admin_fun_test.exs
Raw

test/s7_client_test/admin_fun_test.exs

defmodule AdminFunTest do
use ExUnit.Case
doctest Snapex7
setup do
{:ok, pid} = Snapex7.Client.start_link()
Snapex7.Client.connect_to(pid, ip: "192.168.0.1", rack: 0, slot: 1)
{:ok, state} = :sys.get_state(pid) |> Map.fetch(:state)
%{pid: pid, status: state}
end
test "set_connection_type function", state do
case state.status do
:connected ->
resp = Snapex7.Client.set_connection_type(state.pid, :PG)
assert resp == :ok
_ ->
IO.puts("(#{__MODULE__}) Not connected")
end
end
test "set_connection_params function", state do
case state.status do
:connected ->
resp =
Snapex7.Client.set_connection_params(state.pid,
ip: "192.168.1.100",
local_tsap: 1,
remote_tsap: 2
)
assert resp == :ok
_ ->
IO.puts("(#{__MODULE__}) Not connected")
end
end
test "connect_to function" do
{:ok, pid} = Snapex7.Client.start_link()
resp = Snapex7.Client.connect_to(pid, ip: "192.168.0.200", rack: 0, slot: 1)
assert resp == {:error, %{eiso: nil, es7: nil, etcp: 113}}
resp = Snapex7.Client.connect_to(pid, ip: "192.168.0.1", rack: 0, slot: 1)
assert resp == :ok
end
test "connect/disconnect function", state do
case state.status do
:connected ->
resp = Snapex7.Client.disconnect(state.pid)
assert resp == :ok
resp = Snapex7.Client.connect(state.pid)
assert resp == :ok
_ ->
IO.puts("(#{__MODULE__}) Not connected")
end
end
test "get_params/set_params function" do
{:ok, pid} = Snapex7.Client.start_link()
resp = Snapex7.Client.set_params(pid, 3, 800)
assert resp == :ok
resp = Snapex7.Client.get_params(pid, 3)
assert resp == {:ok, 800}
resp = Snapex7.Client.set_params(pid, 2, 400)
assert resp == :ok
resp = Snapex7.Client.get_params(pid, 2)
assert resp == {:ok, 400}
end
end