def test_spi_software_params(): with patch('os.open'), patch('mmap.mmap') as mmap_mmap, patch( 'io.open') as io_open: mmap_mmap.return_value = array(nstr('B'), (0, ) * 4096) io_open.return_value.__enter__.return_value = ['Revision: a21042'] factory = NativeFactory() with patch('gpiozero.pins.local.SpiDev'): with factory.spi(select_pin=6) as device: assert isinstance(device, LocalPiSoftwareSPI) device.close() assert device.closed with factory.spi(clock_pin=11, mosi_pin=9, miso_pin=10) as device: assert isinstance(device, LocalPiSoftwareSPI) device._bus.close() assert device._bus.closed device.close() assert device.closed with factory.spi(select_pin=6, shared=True) as device: assert isinstance(device, LocalPiSoftwareSPIShared) with patch('gpiozero.pins.local.SpiDev', None): # Clear out the old factory's caches (this is only necessary because # we're being naughty switching out patches) factory.pins.clear() factory._reservations.clear() # Ensure software fallback works when SpiDev isn't present with factory.spi() as device: assert isinstance(device, LocalPiSoftwareSPI)
def test_spi_software_params(): with patch('os.open'), patch('mmap.mmap') as mmap_mmap, patch('io.open') as io_open: mmap_mmap.return_value = array(nstr('B'), (0,) * 4096) io_open.return_value.__enter__.return_value = ['Revision: a21042'] factory = NativeFactory() with patch('gpiozero.pins.local.SpiDev'): with factory.spi(select_pin=6) as device: assert isinstance(device, LocalPiSoftwareSPI) device.close() assert device.closed with factory.spi(clock_pin=11, mosi_pin=9, miso_pin=10) as device: assert isinstance(device, LocalPiSoftwareSPI) device._bus.close() assert device._bus.closed device.close() assert device.closed with factory.spi(select_pin=6, shared=True) as device: assert isinstance(device, LocalPiSoftwareSPIShared) with patch('gpiozero.pins.local.SpiDev', None): # Clear out the old factory's caches (this is only necessary because # we're being naughty switching out patches) factory.pins.clear() factory._reservations.clear() # Ensure software fallback works when SpiDev isn't present with factory.spi() as device: assert isinstance(device, LocalPiSoftwareSPI)
def test_spi_hardware_params(): with patch('os.open'), patch('mmap.mmap') as mmap_mmap, patch( 'io.open') as io_open: mmap_mmap.return_value = array(nstr('B'), (0, ) * 4096) io_open.return_value.__enter__.return_value = ['Revision: a21042'] factory = NativeFactory() with patch('gpiozero.pins.local.SpiDev'): with factory.spi() as device: assert isinstance(device, LocalPiHardwareSPI) device.close() assert device.closed with factory.spi(port=0, device=0) as device: assert isinstance(device, LocalPiHardwareSPI) with factory.spi(port=0, device=1) as device: assert isinstance(device, LocalPiHardwareSPI) with factory.spi(clock_pin=11) as device: assert isinstance(device, LocalPiHardwareSPI) with factory.spi(clock_pin=11, mosi_pin=10, select_pin=8) as device: assert isinstance(device, LocalPiHardwareSPI) with factory.spi(clock_pin=11, mosi_pin=10, select_pin=7) as device: assert isinstance(device, LocalPiHardwareSPI) with factory.spi(shared=True) as device: assert isinstance(device, LocalPiHardwareSPIShared) with pytest.raises(ValueError): factory.spi(port=1) with pytest.raises(ValueError): factory.spi(device=2) with pytest.raises(ValueError): factory.spi(port=0, clock_pin=12) with pytest.raises(ValueError): factory.spi(foo='bar')
def test_spi_hardware_params(): with patch('os.open'), patch('mmap.mmap') as mmap_mmap, patch('io.open') as io_open: mmap_mmap.return_value = array(nstr('B'), (0,) * 4096) io_open.return_value.__enter__.return_value = ['Revision: a21042'] factory = NativeFactory() with patch('gpiozero.pins.local.SpiDev'): with factory.spi() as device: assert isinstance(device, LocalPiHardwareSPI) device.close() assert device.closed with factory.spi(port=0, device=0) as device: assert isinstance(device, LocalPiHardwareSPI) with factory.spi(port=0, device=1) as device: assert isinstance(device, LocalPiHardwareSPI) with factory.spi(clock_pin=11) as device: assert isinstance(device, LocalPiHardwareSPI) with factory.spi(clock_pin=11, mosi_pin=10, select_pin=8) as device: assert isinstance(device, LocalPiHardwareSPI) with factory.spi(clock_pin=11, mosi_pin=10, select_pin=7) as device: assert isinstance(device, LocalPiHardwareSPI) with factory.spi(shared=True) as device: assert isinstance(device, LocalPiHardwareSPIShared) with pytest.raises(ValueError): factory.spi(port=1) with pytest.raises(ValueError): factory.spi(device=2) with pytest.raises(ValueError): factory.spi(port=0, clock_pin=12) with pytest.raises(ValueError): factory.spi(foo='bar')