defmodule CServerDriverTest do use ExUnit.Case doctest Opex62541 setup do executable = :code.priv_dir(:opex62541) ++ '/opc_ua_server' port = Port.open({:spawn_executable, executable}, [ {:args, []}, {:packet, 2}, :use_stdio, :binary, :exit_status ]) %{port: port} end test "Erlang - C driver test", state do msg = {:test, {1,1}, "x"} send(state.port, {self(), {:command, :erlang.term_to_binary(msg)}}) c_response = receive do {_, {:data, <>}} -> :erlang.binary_to_term(response) x -> IO.inspect(x) :error after 1000 -> # Not sure how this can be recovered exit(:port_timed_out) end assert c_response == {:test, {1,1}, :ok} end end