| #!/usr/bin/python |
| # Copyright 2014 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import unittest |
| |
| import hid_descriptors |
| import keyboard_gadget |
| import mouse_gadget |
| |
| |
| class HidTest(unittest.TestCase): |
| |
| def test_keyboard_example(self): |
| expected = ''.join(chr(x) for x in [ |
| 0x05, 0x01, 0x09, 0x06, 0xA1, 0x01, 0x05, 0x07, 0x19, 0xE0, 0x29, |
| 0xE7, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x08, 0x81, 0x02, |
| 0x95, 0x01, 0x75, 0x08, 0x81, 0x01, 0x95, 0x05, 0x75, 0x01, 0x05, |
| 0x08, 0x19, 0x01, 0x29, 0x05, 0x91, 0x02, 0x95, 0x01, 0x75, 0x03, |
| 0x91, 0x01, 0x95, 0x06, 0x75, 0x08, 0x15, 0x00, 0x25, 0x65, 0x05, |
| 0x07, 0x19, 0x00, 0x29, 0x65, 0x81, 0x00, 0xC0 |
| ]) |
| self.assertEquals(keyboard_gadget.KeyboardFeature.REPORT_DESC, expected) |
| |
| def test_mouse_example(self): |
| expected = ''.join(chr(x) for x in [ |
| 0x05, 0x01, 0x09, 0x02, 0xA1, 0x01, 0x09, 0x01, 0xA1, 0x00, 0x05, 0x09, |
| 0x19, 0x01, 0x29, 0x03, 0x15, 0x00, 0x25, 0x01, 0x95, 0x03, 0x75, 0x01, |
| 0x81, 0x02, 0x95, 0x01, 0x75, 0x05, 0x81, 0x01, 0x05, 0x01, 0x09, 0x30, |
| 0x09, 0x31, 0x15, 0x81, 0x25, 0x7F, 0x75, 0x08, 0x95, 0x02, 0x81, 0x06, |
| 0xC0, 0xC0 |
| ]) |
| self.assertEquals(mouse_gadget.MouseFeature.REPORT_DESC, expected) |
| |
| def test_tag(self): |
| self.assertEquals(hid_descriptors.Push(), '\xa4') |
| |
| def test_2byte_tag(self): |
| self.assertEquals(hid_descriptors.LogicalMaximum(0xFF00), '\x26\x00\xFF') |
| |
| def test_4byte_tag(self): |
| self.assertEquals(hid_descriptors.LogicalMaximum(0xFF884400), |
| '\x27\x00\x44\x88\xFF') |
| |
| def test_long_tag(self): |
| with self.assertRaises(NotImplementedError): |
| hid_descriptors.LogicalMaximum(0xFFFFFFFFFFFFFFFF) |
| |
| if __name__ == '__main__': |
| unittest.main() |