def test_transfer_multiple_bytes(self): gpio = MockGPIO() device = SPI.BitBang(gpio, 1, 2, 3, 4) gpio.pin_read[3] = [ 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1 ] result = device.transfer([0xF8, 0x1F, 0xF8]) # Verify clock self.assertListEqual(gpio.pin_written[1], [ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 ]) # Verify MOSI self.assertListEqual(gpio.pin_written[2], [ 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0 ]) # Verify MISO self.assertNotIn(3, gpio.pin_written) # Verify SS self.assertListEqual(gpio.pin_written[4], [1, 0, 1]) # Verify result self.assertEqual(result, bytearray([0x1F, 0xF8, 0x1F]))
def test_mode_0_read(self): gpio = MockGPIO() device = SPI.BitBang(gpio, 1, 2, 3, 4) gpio.pin_read[3] = [0, 0, 0, 1, 1, 1, 1, 1] result = device.read(1) # Verify clock self.assertListEqual(gpio.pin_written[1], [0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0]) # Verify MOSI self.assertNotIn(2, gpio.pin_written) # Verify MISO self.assertNotIn(3, gpio.pin_written) # Verify SS self.assertListEqual(gpio.pin_written[4], [1, 0, 1]) # Verify result self.assertEqual(result, bytearray([0x1F]))
def test_pin_modes_set_correctly(self): gpio = MockGPIO() device = SPI.BitBang(gpio, 1, 2, 3, 4) self.assertDictEqual(gpio.pin_mode, {1: GPIO.OUT, 2: GPIO.OUT, 3: GPIO.IN, 4: GPIO.OUT})
def test_is_high_and_is_low(self): gpio = MockGPIO() gpio.pin_read[1] = [0, 0, 1, 1] self.assertTrue(gpio.is_low(1)) self.assertFalse(gpio.is_high(1)) self.assertFalse(gpio.is_low(1)) self.assertTrue(gpio.is_high(1))
def test_mode_0_write(self): gpio = MockGPIO() device = SPI.BitBang(gpio, 1, 2, 3, 4) device.write([0x1F]) # Verify clock self.assertListEqual(gpio.pin_written[1], [0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0]) # Verify MOSI self.assertListEqual(gpio.pin_written[2], [0, 0, 0, 1, 1, 1, 1, 1]) # Verify MISO self.assertNotIn(3, gpio.pin_written) # Verify SS self.assertListEqual(gpio.pin_written[4], [1, 0, 1])
def test_transfer_multiple_bytes(self): gpio = MockGPIO() device = SPI.BitBang(gpio, 1, 2, 3, 4) gpio.pin_read[3] = [0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1] result = device.transfer([0xF8, 0x1F, 0xF8]) # Verify clock self.assertListEqual(gpio.pin_written[1], [0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0]) # Verify MOSI self.assertListEqual(gpio.pin_written[2], [1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0]) # Verify MISO self.assertNotIn(3, gpio.pin_written) # Verify SS self.assertListEqual(gpio.pin_written[4], [1, 0, 1]) # Verify result self.assertEqual(result, bytearray([0x1F, 0xF8, 0x1F]))
def test_set_high_and_set_low(self): gpio = MockGPIO() gpio.set_high(1) gpio.set_low(1) self.assertDictEqual(gpio.pin_written, {1: [1, 0]})
def test_read_assert_deassert_ss_false(self): gpio = MockGPIO() device = SPI.BitBang(gpio, 1, 2, 3, 4) gpio.pin_read[3] = [0, 0, 0, 1, 1, 1, 1, 1] result = device.read(1, assert_ss=False, deassert_ss=False) self.assertListEqual(gpio.pin_written[4], [1])
def test_output_pins(self): gpio = MockGPIO() gpio.output_pins({0: True, 1: False, 7: True}) self.assertDictEqual(gpio.pin_written, {0: [1], 1: [0], 7: [1]})
def test_invalid_bit_order_fails(self): gpio = MockGPIO() device = SPI.BitBang(gpio, 1, 2, 3, 4) self.assertRaises(ValueError, device.set_bit_order, -1) self.assertRaises(ValueError, device.set_bit_order, 2)
def test_write_lsbfirst(self): gpio = MockGPIO() device = SPI.BitBang(gpio, 1, 2, 3, 4) device.set_bit_order(SPI.LSBFIRST) device.write([0x1F]) self.assertListEqual(gpio.pin_written[2], [1, 1, 1, 1, 1, 0, 0, 0])
def test_write_assert_deassert_ss_false(self): gpio = MockGPIO() device = SPI.BitBang(gpio, 1, 2, 3, 4) device.write([0x1F], assert_ss=False, deassert_ss=False) self.assertListEqual(gpio.pin_written[4], [1])
def test_ss_set_high_after_initialization(self): gpio = MockGPIO() device = SPI.BitBang(gpio, 1, 2, 3, 4) self.assertListEqual(gpio.pin_written[4], [1])