busio¶
A mock of the busio module.
import pytest
from collections import deque
from circuitpython_mocks import busio, board
from circuitpython_mocks.busio.operations import I2CTransfer
@pytest.mark.parametrize(
argnames=["board_i2c", "busio_i2c"],
argvalues=[
(board.I2C(), busio.I2C(board.SCL, board.SDA)),
(board.STEMMA_I2C(), busio.I2C(board.SCL1, board.SDA1)),
],
ids=["primary_bus", "secondary_bus"],
)
def test_singleton(board_i2c: busio.I2C, busio_i2c: busio.I2C):
address = 0x42
assert hasattr(board_i2c, "expectations")
assert isinstance(board_i2c.expectations, deque)
assert board_i2c == busio_i2c
board_i2c.expectations.append(I2CTransfer(address, bytearray(1), bytearray(1)))
assert busio_i2c.expectations == board_i2c.expectations
buffer = bytearray(1)
assert board_i2c.try_lock()
assert not busio_i2c.try_lock()
board_i2c.writeto_then_readfrom(address, buffer, buffer)
board_i2c.unlock()
busio_i2c.unlock() # for coverage measurement only
# assert all expectations were used
board_i2c.done()
assert board_i2c.expectations == busio_i2c.expectations
import pytest
from collections import deque
from circuitpython_mocks import board, busio
from circuitpython_mocks.busio.operations import SPITransfer
@pytest.mark.parametrize(
argnames=["board_spi", "busio_spi"],
argvalues=[
(board.SPI(), busio.SPI(board.SCK, board.MOSI, board.MISO)),
(board.SPI1(), busio.SPI(board.SCK_1, board.MOSI_1, board.MISO_1)),
],
ids=["primary_bus", "secondary_bus"],
)
def test_singleton(board_spi: busio.SPI, busio_spi: busio.SPI):
assert hasattr(board_spi, "expectations")
assert isinstance(busio_spi.expectations, deque)
assert board_spi == busio_spi
board_spi.expectations.append(SPITransfer(bytearray(1), bytearray(1)))
assert busio_spi.expectations == board_spi.expectations
buffer = bytearray(1)
assert board_spi.try_lock()
assert not busio_spi.try_lock()
board_spi.write_readinto(buffer, buffer)
board_spi.unlock()
busio_spi.unlock() # for coverage measurement only
# assert all expectations were used
board_spi.done()
assert busio_spi.expectations == board_spi.expectations
from collections import deque
from circuitpython_mocks import board, busio
from circuitpython_mocks.busio.operations import UARTRead, UARTWrite, UARTFlush
def test_singleton():
board_uart = board.UART()
assert hasattr(board_uart, "expectations")
assert isinstance(board_uart.expectations, deque)
busio_uart = busio.UART(board.TX, board.RX)
assert board_uart == busio_uart
board_uart.timeout = 0.5
assert 0.5 == busio_uart.timeout
busio_uart.baudrate = 115200
assert 115200 == board_uart.baudrate
board_uart.expectations.append(UARTRead(bytearray(1)))
assert busio_uart.expectations == board_uart.expectations
buffer = bytearray(1)
assert 1 == board_uart.in_waiting
board_uart.readinto(buffer)
assert not busio_uart.expectations
busio_uart.expectations.append(UARTWrite(bytearray(1)))
assert busio_uart.expectations == board_uart.expectations
assert not busio_uart.in_waiting
busio_uart.write(bytearray(1))
busio_uart.expectations.append(UARTFlush())
assert busio_uart.expectations == board_uart.expectations
busio_uart.reset_input_buffer()
# assert all expectations were used
board_uart.done()
assert busio_uart.expectations == board_uart.expectations