keyboard_gadget_test.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #!/usr/bin/env python
  2. # Copyright 2014 The Chromium Authors. All rights reserved.
  3. # Use of this source code is governed by a BSD-style license that can be
  4. # found in the LICENSE file.
  5. import unittest
  6. import mock
  7. import hid_constants
  8. import keyboard_gadget
  9. import usb_constants
  10. class KeyboardGadgetTest(unittest.TestCase):
  11. def test_key_press(self):
  12. g = keyboard_gadget.KeyboardGadget()
  13. chip = mock.Mock()
  14. g.Connected(chip, usb_constants.Speed.FULL)
  15. g.KeyDown(0x04)
  16. self.assertEqual(g.ControlRead(0xA1, 1, 0x0100, 0, 8),
  17. '\x00\x00\x04\x00\x00\x00\x00\x00')
  18. g.KeyUp(0x04)
  19. self.assertEqual(g.ControlRead(0xA1, 1, 0x0100, 0, 8),
  20. '\x00\x00\x00\x00\x00\x00\x00\x00')
  21. chip.SendPacket.assert_has_calls([
  22. mock.call(0x81, '\x00\x00\x04\x00\x00\x00\x00\x00'),
  23. mock.call(0x81, '\x00\x00\x00\x00\x00\x00\x00\x00'),
  24. ])
  25. def test_key_press_with_modifier(self):
  26. g = keyboard_gadget.KeyboardGadget()
  27. chip = mock.Mock()
  28. g.Connected(chip, usb_constants.Speed.FULL)
  29. g.ModifierDown(hid_constants.ModifierKey.L_SHIFT)
  30. g.KeyDown(0x04)
  31. g.KeyDown(0x05)
  32. g.KeyUp(0x04)
  33. g.KeyUp(0x05)
  34. g.ModifierUp(hid_constants.ModifierKey.L_SHIFT)
  35. chip.SendPacket.assert_has_calls([
  36. mock.call(0x81, '\x02\x00\x00\x00\x00\x00\x00\x00'),
  37. mock.call(0x81, '\x02\x00\x04\x00\x00\x00\x00\x00'),
  38. mock.call(0x81, '\x02\x00\x04\x05\x00\x00\x00\x00'),
  39. mock.call(0x81, '\x02\x00\x00\x05\x00\x00\x00\x00'),
  40. mock.call(0x81, '\x02\x00\x00\x00\x00\x00\x00\x00'),
  41. mock.call(0x81, '\x00\x00\x00\x00\x00\x00\x00\x00'),
  42. ])
  43. def test_set_leds(self):
  44. g = keyboard_gadget.KeyboardGadget()
  45. chip = mock.Mock()
  46. g.Connected(chip, usb_constants.Speed.FULL)
  47. g.SetConfiguration(1)
  48. self.assertEqual(g.ControlRead(0xA1, 1, 0x0200, 0, 8), '\x00')
  49. self.assertTrue(g.ControlWrite(0x21, 9, 0x0200, 0, '\x01'))
  50. self.assertEqual(g.ControlRead(0xA1, 1, 0x0200, 0, 8), '\x01')
  51. g.ReceivePacket(0x01, '\x03')
  52. self.assertFalse(chip.HaltEndpoint.called)
  53. self.assertEqual(g.ControlRead(0xA1, 1, 0x0200, 0, 8), '\x03')
  54. if __name__ == '__main__':
  55. unittest.main()