Current section
Files
Jump to
Current section
Files
test/uart_test.exs
# SPDX-FileCopyrightText: 2016 Frank Hunleth
# SPDX-FileCopyrightText: 2018 Jon Carstens
#
# SPDX-License-Identifier: Apache-2.0
#
defmodule UARTTest do
use ExUnit.Case
alias Circuits.UART
@moduledoc """
This module provides common setup code for unit tests that require real
or emulated serial ports to work.
Define the following environment variables for your environment:
CIRCUITS_UART_PORT1 - e.g., COM1 or ttyS0
CIRCUITS_UART_PORT2
The unit tests expect those ports to exist, be different ports,
and be connected to each other through a null modem cable.
On Linux, it's possible to use tty0tty. See
https://github.com/freemed/tty0tty.
"""
def port1() do
System.get_env("CIRCUITS_UART_PORT1")
end
def port2() do
System.get_env("CIRCUITS_UART_PORT2")
end
def common_setup() do
if is_nil(port1()) || is_nil(port2()) do
header = "Please define CIRCUITS_UART_PORT1 and CIRCUITS_UART_PORT2 in your
environment (e.g. to ttyS0 or COM1) and connect them via a null
modem cable.\n\n"
ports = UART.enumerate()
msg =
case ports do
[] -> header <> "No serial ports were found. Check your OS to see if they exist"
_ -> header <> "The following ports were found: #{inspect(Map.keys(ports))}"
end
flunk(msg)
end
if !String.starts_with?(port1(), "tnt") do
# Let things settle between tests for real serial ports
:timer.sleep(500)
end
{:ok, uart1} = UART.start_link()
{:ok, uart2} = UART.start_link()
{:ok, uart1: uart1, uart2: uart2}
end
end